"Process is a program in execution"
실행 중인 프로그램
CPU 수행 상태를 나타내는 하드웨어 문맥
프로세스의 주소 공간
프로세스 관련 커널 자료 구조
작업 순서: PC가 프로그램 코드 하나를 가리킴, 매순간 기계어(instruction)를 하나씩 읽어서 CPU 안으로 불러들임. 레지스터에 어떤 값을 넣고, ALU(산술논리연산장치)에서 연산 수행, 그리고 그 결과를 레지스터에 저장하거나, 바깥의 메모리에 저장함
프로그램을 실행하는 내내 위의 작업이 진행되는데, 어느 시점에 과연 프로세스는 어디까지 와있는가? 이걸 규명하는 데 필요한 요소가 문맥!
현재 시점의 문맥을 나타내기 위해서는 PC가 어디를 가리키고 있는가? 코드를 어느 부분까지 실행했는가, 또 이 프로세스의 메모리에 어떤 내용을 담고 있는가? 함수는 스택에 어디까지 쌓여있고, 데이터 공간 안에 있는 변수들의 값은 얼마인가? 지금 레지스터 안에는 어떤 값들이 있고, 어떤 instruction까지 실행했는가? 등의 정보가 필요하다.
프로세스는 상태(state)가 변경되며 수행된다
Running
Ready
Blocked(wait, sleep)
Suspended (stopped)
New: 프로세스가 생성 중인 상태
Terminated: 수행(execution)이 끝난 상태
Blocked: 자신이 요청한 event가 만족되면 Ready
Suspended: 외부에서 resume해 주어야 Active
Process Control Block
운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보
다음의 구성 요소를 가진다 (구조체로 유지)
Long-term Scheduler (장기 스케줄러 or job scheduler)
Short-term Scheduler(단기 스케줄러 or CPU scheduler)
Medium-Term Scheduler (중기 스케줄러 or Swapper)