1. 프로세스의 메모리 구조

운영체제는 프로세스에 적절한 메모리를 할당하는데 다음 구조를 기반으로 할당한다

 

위에서부터 스택, 힙, 데이터영역, 코드영역 으로 나뉜다

 

스택은 위 주소부터 할당되고 힙은 아래 주소부터 할당된다

 

2. 스택 (Stack)

스택에는 지역변수, 매개변수, 함수가 저장되고 컴파일 시에

크기가 결정되며 '동적'인 특징을 갖는다

 

스택영역은 함수가 함수를 재귀적으로 호출하면서

동적으로 크기가 늘어날 수 있다

 

이때 힙과 스택의 메모리 영역이 겹치면 안되기 때문에

힙과 스택 사이의 공간을 비워놓는다

 

3. 힙 (Heap)

힙은 동적 할당할 때 사용되며 런타임 시 크기가 결정된다

 

힙은 '동적'인 특징을 가진다

 

예를 들어 벡터 같은 동적 배열은 당연히 힙에 동적 할당된다

 

4. 데이터 영역

데이터 영역은 전역변수, 정적변수가 저장되고

정적인 특징을 갖는 프로그램이 종료되면 사라지는 변수가 들어 있는 영역이다

 

데이터 영역은 BSS 영역과 Data 영역으로 나뉘고

BSS 영역은 초기화가 되지 않은 변수가 0으로 초기화 되어 저장되며

Data 영역은 0이 아닌 다른 값으로 할당된 변수들이 저장된다

 

5. 코드영역

코드 영역은 프로그램에 내장되어 있는 소스 코드가 들어가는 영역이다

이 영역은 수정 불가능한 기계어로 저장되어 있으며 정적인 특징을 가진다

'CS' 카테고리의 다른 글

[CS] 코딩 컨벤션  (0) 2022.11.10
[CS] 빅오 표기법  (0) 2022.11.07
[CS] 메모리 계층  (0) 2022.10.31
[CS] 운영체제와 컴퓨터  (0) 2022.10.30
[CS] STOMP  (0) 2022.10.29