CS/운영체제(OS)

프로세스 주소 공간 : Stack, Data, Code

hyunah 2022. 4. 19. 10:15

파일을 실행시키면 메모리에 프로세스가 로딩된다. 프로세스가 로딩된다는 건, 메모리에 프로세스 Address space가 할당되는 것인데 프로세스의 address space는 stack 영역과 data 영역, code 영역으로 나뉜다.

 

 

 

 

Code 영역

▷ 프로그램 컴파일 코드가 저장된다.

 

▷ 프로그램의 코드는 바뀌어서는 안 되기 때문에 읽기만 가능하다.

 

▷ 실행 파일을 구성하는 유저 모드에서 작동하는 사용자 정의 함수와 유저 라이브러리 함수 코드뿐 아니라 제어문과 상수 등이 포함된다.

 

 

 

 

Data 영역

▷ 프로그램의 static data와 global variable이 저장된다.

 

▷ 프로그램이 시작할 때 함께 할당되며 프로그램이 종료되면 소멸한다.

 

▷ 실행 과정에서 변수값이 충분히 변할 수 있으므로 읽기와 쓰기 모두 가능하게 되어 있다.

 

 

 

 

 

 

 

Stack 영역

local variable과 parameter가 저장된다.

 

▷ 함수가 호출될 때 함께 할당되며 함수 호출이 끝나면 소멸한다.

 

▷ 재귀 함수의 깊이가 너무 깊어지거나 함수의 지역 변수가 지나치게 많아 stack 영역이 감당 가능한 수준을 넘어서는 경우 stack overflow가 발생한다.