본문 바로가기

CS/운영체제

프로세스의 메모리 구조

운영체제는 프로세스에 적절한 메모리를 할당하는데 다음 구조를 기반으로 할당합니다.
위에서부터 스택(stack), 힙(heap), 데이터 영역(BSS segment, Data segment), 코드 영역(code segment)으로 나눠집니다. 스택은 위 주소부터 할당되고 힙은 아래 주소부터 할당됩니다.

 

 

스택, 힙은 동적으로 늘어나는 반면, 데이터, 코드는 정적이다.

- 스택 : 지역변수, 매개변수, 함수가 저장되고 컴파일 시에 크기가 결정되며 ‘동적’인 특징
힙 : 힙은 동적 할당할 때 사용되며 런타임 시 크기가 결정됩니다.’동적’인 특징 ex)벡터
데이터영역 : 전역변수, 정적변수가 저장되고, 정적인 특징
코드영역 : 소스코드 들어감. 정적인 특징

 

데이터 영역은 BSS 영역과 Data 영역으로 나뉘고, BSS 영역은 초기화가 되지 않은 변수가 0으로 초기화되어 저장되며 Data 영역(Data segment)은 0이 아닌 다른 값으로 할당된변수들이 저장됩니다.