Computer Science
IP 주소 체계 알아보기
들어가며 인터넷 상의 Host들은 서로 정보를 주고 받기 위해 네트워크를 타고 통신을 한다. 그런데 이렇게 통신을 할 때 각 Host들이 가지고 있는 고유한 물리 주소인 MAC 주소를 이용하여 다른 네트워크에 속한 목적지 Host와 통신을 한다면 MAC 주소는 비계층적 구조의 고유번호이기 때문에 목적지 Host를 탐색하기 어렵고, 라우팅 테이블 또한 매우 커져 라우터가 다운될 수도 있다. 이로 인해 필요한 것이 IP 주소이다. IP 주소는 네트워크 부분과 해당 네트워크에 속한 Host 부분(계층적 구조의 주소)으로 이루어져 있기 때문에 라우팅 테이블을 네트워크 별로 기록할 수 있게 되고, 이로 인해 목적지 Host를 탐색하는데 훨씬 용이하다. 이제 이러한 IP 주소 체계에 대해서 조금 더 자세히 알아보도..
프로세스 알아보기
프로세스 프로세스란 메모리나 CPU 상에 올라와서 동작하고 있는 살아움직이는 객체이다. 프로세스와 조금 헷갈리는 개념으로는 프로그램이 있는데, 프로그램은 디스크 상에 존재하는 lifeless한 객체이다. 즉, 프로그램은 생명이 없는 객체이고 이러한 프로그램을 실행시키면 메모리와 CPU로 올라오게 되는데, 이렇게 메모리와 CPU로 올라와있는 객체를 프로세스라고 하는 것이다. 프로세스의 메모리 Layout 메모리나 CPU 상에 올라와 있는 프로세스는 크게 Code, Data, Heap, Stack 4가지 영역으로 구성된 메모리 Layout을 가진다. 각 영역을 살펴보자면 Code 영역은 실제 프로그램의 코드가 들어가는 영역으로, 프로그래밍을 한 순서에 따라 낮은 주소에서 높은 주소로 올라간다. Data 영역..
데이터베이스 인덱스
인덱스란 인덱스는 데이터의 저장(INSERT, UPDATE, DELETE)의 성능을 희생하고, 그 대신 데이터의 조회(SELECT) 성능을 높이는 기능이다. 흔히, 인덱스는 책의 맨 끝에 있는 "찾아보기"로 비유되고, "찾아보기"를 통해 알아낼 수 있는 페이지 번호는 데이터 파일에 저장되어 있는 레코드의 주소에 비유된다. 책의 "찾아보기"는 독자가 원하는 내용을 빠르게 찾을 수 있도록 도와주며, 만약 "찾아보기"가 없다면 독자는 원하는 내용을 찾기 위해 첫 장부터 찾아나가야 하기 때문에 원하는 내용을 찾기까지 오랜 시간이 걸릴 것이다. DBMS에서도 데이터베이스 테이블의 모든 데이터를 조회해서 원하는 결과를 가져오려면 시간이 너무 오래 걸리게 된다. 그래서 책의 "찾아보기" 기능처럼 원하는 데이터를 빠르..
데이터베이스 트랜잭션
트랜잭션 트랜잭션이란 논리적인 작업 셋을 모두 완벽하게 처리하거나, 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능이다. 트랜잭션의 성질 트랜잭션은 ACID라고 하는 원자성, 일관성, 격리성, 지속성을 보장해야 한다. Atomicity - 원자성 원자성은 한 트랜잭션 내의 일련의 작업들은 모두 성공하거나 모두 실패해야 한다는 성질이다. (All or Nothing) 예를 들어 출금과 입금 작업을 하는 계좌이체 트랜잭션은 원자성을 보장해야 한다. Consistency - 일관성 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다는 성질이다. 예를 들어 데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야 한다. Isolation - 격리성..