Computer System

Computer System

[Computer System] File Descriptor

File Descriptor 유닉스 시스템에서는 많은 것들을 파일로 관리한다. 정규 파일들뿐만 아니라 디렉터리, 소켓, 기타 입출력 장치들 모두 파일의 형태로 취급하는데, 이 파일들을 구분하기 위해 파일 디스크립터라는 개념을 사용한다. 우선 각각의 프로세스들이 실행될때 file descriptor table도 함께 생성된다. file descriptor table은 배열 형태로 관리가 되며, file descriptor table의 각 element는 Inode table의 특정 위치 또는 연결된 소켓을 가리킨다. 우리가 open을 통해 파일을 열거나, socket 함수를 통해 소켓을 생성하면 int 형태의 파일 디스크립터가 리턴된다. 이때 이 파일 디스크립터는 file descriptor table 상..

Computer System

[Computer System] 동적 메모리 할당기

이번에는 저번 글에 이어서 동적 메모리 할당기의 종류에 대해 알아보자. 일단 메모리 할당기는 크게 두 가지 분류로 나눌 수 있다. Implicit allocator implicit allocator는 자바나 자바스크립트 등의 언어에서의 garbage collector 역할을 하는 동적 메모리 할당기이다. 이 할당기들은 Heap에서 특정 메모리 공간이 더 이상 참조되지 않을 때, 참조되지 않는다는 것을 detecting 하여 스스로 메모리를 반환시키는 할당기들이다. Explicit allocator 오늘 중점적으로 알아볼 할당기이다. explicit allocator는 implicit allocator와는 달리 응용 프로그램이 특정 메모리 공간을 반환한다고 명시적으로 요청해야 한다. 즉 더 이상 사용하지 ..

Computer System

[Computer System] 동적 메모리 할당

동적 메모리 vs 정적 메모리 우리가 특정 프로세스를 실행하면, 운영체제는 실행된 프로세스에게 특정 메모리 공간을 할당해 준다. 그 메모리 공간을 그림으로 간단하게 나타내면 아래와 같다. 위의 그림에서 .bss, .data, .text 영역은 정적인 데이터들이 저장되는 공간이다. 정적 메모리는 데이터들이 컴파일 단계에서 메모리 할당이 이루어지는 공간이다. 이와 달리 Heap 영역이나 Stack 영역은 컴파일 이후에 프로그램이 실행되고 나서 메모리 할당이 발생하는 공간이다. Stack 영역은 함수의 지역 변수 또는 매개 변수가 저장되는 공간이고, Heap 영역이 바로 우리가 malloc 또는 free 함수를 통해 변수에 메모리를 할당하고 해제할 수 있는 영역이다. 이렇게만 표현해서는 정확히 정적 메모리와 ..

hin1209
'Computer System' 카테고리의 글 목록