Process
프로세스는 실행중인 프로그램으로 볼 수 있다. 프로그램 그 자체는 Executable file이고 OS가 메모리에 올릴 때 프로세스로 추상화하여 메모리에 올리고 실행한다. 이 프로세스는 스케쥴링의 단위가 되고 서로 침범하지 못하는 독자적인 메모리 영역을 가지고 있다.
Process 구성
관련 내용은 많으니 간단히 설명
Text : 코드 영역이라고도 하고 명령코드 자체를 저장하고 있다. 프로그램 카운터(PC)가 text segment에서 명령어를 실행하고 증가되는 식으로 코드를 실행한다.
Data : 초기화 된 global, static 변수
bss : 초기화 값이 없는 global, static 변수
Heap : 동적으로 할당된 값이 저장되는 영역
Stack : 함수의 호출에 대한 스택프레임과 그와 관련된 지역변수를 저장, 말그대로 스택이라 함수 호출시 스택처럼 쌓이는 방식
그 유명한 스택 오버플로우가 났다고 하면 Stack 공간에 데이터가 쌓이다가 터진것임. Heap에 비해 상대적으로 작다.
예시로 보면 이런 느낌이다.
Process State
프로세스는 라이프 사이클 동안 여러 상태를 가지게 된다.
New , Created: PCB와 함께 프로세스가 생성된 상태, 바로 실행되는 것은 아님
Ready : 프로세스가 CPU에 할당되기 위해 대기하는 상태
Running : CPU에 의해 프로세스가 실행되고 있는 상태
Waiting, Blocked : 프로세스가 실행 되다가 I/O 처리 등 바로 완료될 수 없는 작업을 위해 잠시 CPU를 반납하고 대기하는 상태
Terminated: 프로세스가 종료 되기 직전에 잠시 거치는 상태
Process Controll Block(PCB)
운영 체제에서 프로세스 관리에 필요한 메타데이터를 저장하는 자료 구조.
위에서 말한 프로세스의 상태(State)를 PCB에서 관리한다.
그 외에 프로그램이 다음으로 실행시킬 주소값을 담고있는 프로그램 카운터, CPU 레지스터가 가지고 있는 값,
스케쥴링 우선순위 등에 대한 정보, 열고있는 파일 등등의 정보를 가지고 있다.
이 PCB는 컨텍스트 스위칭에 중요한 역할을 한다.
프로세스가 Ready상태에서 다시 Running 될 때 프로세스의 PCB를 통해
프로세스가 이전까지 실행하던 위치(Program Counter), 스택 프레임, 레지스터 값등을 참조하여
이전의 실행 문맥(Context)부터 이어서 실행할 수 있는 것이다.
'운영체제' 카테고리의 다른 글
[OS4] Context Switch, Process Creation, Copy On Write (0) | 2024.03.12 |
---|---|
[OS3] Monolithic Kernel, Micro Kernel, Hypervisor (0) | 2024.02.23 |
[OS3] Kernel Structure, Layering, Modularity, System call (0) | 2024.02.23 |
[OS2] Multi programming, Multi Tasking (0) | 2024.02.21 |
[OS1] Abstraction, Policy (0) | 2024.02.20 |