<aside>
📌 프로세스의 개념, 프로세스의 상태(Process State), 프로세스의 개념, 프로세스 상태도, Process Control Block(PCB), 문맥교환(Context Switch), 프로세스를 스케줄링하기 위한 큐, Ready Queue와 다양한 Device Queue, 스케줄러(Scheduler)
</aside>
프로세스의 개념
Process is a program in excution (실행중인 프로그램)

- 프로세스의 문맥(context)
- CPU 수행 상태를 나타내는 문맥(프로그램이 무엇을 어떻게 실행했는지, 현재 시점이 어떤 상태인지 나타내기 위함)
- CPU 수행 상태를 나타내는 하드웨어 문맥
- Program Counter(현재 코드의 어디까지 실행했는가)
- 각종 register(어떤 값을 넣어놓고 어떤 instruction 까지 실행했는가)
- 프로세스의 주소 공간 (메모리 관련)
- code, data, stack(프로세스의 메모리에 어떤 내용을 담고 있는가(함수 호출에 따른 stack 등))
- 프로세스 관련 커널 자료 구조
- PCB(Process Control Block, 프로세스가 하나가 실행될 때 마다 커널 주소 공간에 쌓임)
- Kernel Stack(시스템콜 발생 시 커널의 코드 실행, 커널 함수 실행 시 정보가 쌓이는 곳)
- 커널은 여러 프로세스가 공유하는 공간(단, 프로세스 별로 스택을 별도로 둠)
- 이걸 왜 알아야 하는가?
- 현대의 OS는 여러 프로세스가 번갈아가며 실행되기 때문
프로세스의 상태

프로세스 상태도

iOS App State (출처)
상태 변화를 컴퓨터 시스템 입장에서 알기 쉽게 그린 그림

- 하나의 프로세스가 CPU에서 Running → Timer Intrrupted → Ready Queue 뒤로 가서 대기
- 하나의 프로세스가 CPU에서 Running → I/O 를 기다려야 할 경우 → Blocked → I/O 완료 → Intrrupted → CPU 제어권이 커널로 넘어감 → 요청 프로세스의 메모리 영역에 해당 데이터를 넘겨줌 + 프로세스는 Ready Queue 뒤로 가서 대기