-
[OS] 프로세스의 구성Computer Science 2020. 8. 11. 19:21
· 프로그램이란?
프로그램은 짜여져 있는 코드가 컴파일러에 의해 Binary Code(Executable Code)로 바뀌어 Storage에 저장되어 있는 상태를 지칭하는 것으로, 프로세스에 비해 Passive한 개념이다.
· 프로세스란?
프로세스는 메인 메모리에 프로그램이 들어와 CPU의 수행 대상이 된 상태를 지칭한다. 쉽게 말하면 "수행 중인 프로그램"이라고 할 수 있을 것이다.
· 프로세스의 구성
- Images
실행 중인 프로그램의 내용을 담고 있다.
1. Program Code
프로그램 코드가 컴파일된 바이너리 코드. text라고도 지칭함
2. Initialized Data
초기화된 전역변수
3. Uninitialized Data
초기화되지 않은 전역변수. 시스템 상에서 0으로 초기화된다.
4. Heap
동적으로 메모리를 할당받고 리턴할 수 있는 영역
5. Execution Stack
지역 변수 / 함수의 Argument / 함수를 수행하고 돌아올 Address 등을 저장하는 스택
+) 숫자가 커질 수록 더 높은 address값을 가진다.
+) 일반적으로 Program Code와 Data가 차지하는 공간은 그렇게 크지 않다.
+) 라이브러리를 사용할 때에는 빈 주소 공간에 해당 라이브러리 주소를 매핑하는 식으로 구현된다.
- Process Context
1. Program Context
프로세스를 수행하는 중의 Register Set 정보. Register Set은 일반 레지스터들 및 Program Counter, Stack Pointer로 구성돼있다.
2. Kernel Context
Kernel 관점에서의 해당 프로세스에 대한 정보. pid 등이 있다.
· Process Control Block (PCB)
한 프로세스를 구성하는 Image, Program Context, Kernel Context에 대한 정보를 모두 담고 있는 자료 구조.
Process Descriptor(PD)라고도 불림.