파일을 실행시키면 메모리에 프로세스가 로딩된다. 프로세스가 로딩된다는 건, 메모리에 프로세스 Address space가 할당되는 것인데 프로세스의 address space는 stack 영역과 data 영역, code 영역으로 나뉜다.
Code 영역
▷ 프로그램 컴파일 코드가 저장된다.
▷ 프로그램의 코드는 바뀌어서는 안 되기 때문에 읽기만 가능하다.
▷ 실행 파일을 구성하는 유저 모드에서 작동하는 사용자 정의 함수와 유저 라이브러리 함수 코드뿐 아니라 제어문과 상수 등이 포함된다.
Data 영역
▷ 프로그램의 static data와 global variable이 저장된다.
▷ 프로그램이 시작할 때 함께 할당되며 프로그램이 종료되면 소멸한다.
▷ 실행 과정에서 변수값이 충분히 변할 수 있으므로 읽기와 쓰기 모두 가능하게 되어 있다.
Stack 영역
▷ local variable과 parameter가 저장된다.
▷ 함수가 호출될 때 함께 할당되며 함수 호출이 끝나면 소멸한다.
▷ 재귀 함수의 깊이가 너무 깊어지거나 함수의 지역 변수가 지나치게 많아 stack 영역이 감당 가능한 수준을 넘어서는 경우 stack overflow가 발생한다.
'CS > 운영체제(OS)' 카테고리의 다른 글
스레드(Thread)란? : 프로세스와의 비교 (0) | 2022.04.20 |
---|---|
프로세스와 프로세스 문맥, 문맥 교환(Context Switch) (0) | 2022.04.19 |
동기식 입출력과 비동기식 입출력 (0) | 2022.04.18 |
운영체제의 이중연산모드 : 유저 모드, 커널 모드 (0) | 2022.04.18 |
운영체제 개념, 기능: 인터럽트, CPU 스케줄링, 메모리 관리, 디스크 스케줄링 (0) | 2022.04.17 |