디스크 안에 있는 상태면 Job, 커널에서 실행되고 있으면 Process가 된다.
PID: Process Identification Number
프로세스 고유 식별 번호
스케줄링 정보
프로세스 우선순위 등과 같은 스케줄링 관련 정보들
프로세스 상태
자원 할당, 요청 정보 등
메모리 관리 정보
Page table, segment table 등
입출력 상태 정보
할당 받은 입출력 장치, 파일 등에 대한 정보 등
문맥 저장 영역 (Context save area)
프로세스의 레지스터 상태를 저장하는 공간 등
계정 정보
자원 사용 시간 등을 관리
- PCB 정보는 OS 별로 서로 다름
- PCB 참조 및 갱신 속도는 OS의 성능을 결정 짓는 중요한 요소 중 하나
프로세스 - 자원 간의 상호작용에 의해 결정
if memory 👉 ready,
if not 👉 suspended ready
프로세서 외에 다른 모든 자원을 할당 받은 상태
프로세서 할당 대기 상태
즉시 실행 가능 상태
Dispatch (or Schedule)
Ready state -> Running state
프로세서를 할당 받아 Ready state에서 Running state로 되는 것을 dispatch(schedule)라고 한다.
프로세서와 필요한 자원을 모두 할당 받은 상태
선점 스케줄링(preemptive scheduling)이란?
시분할 시스템에서 타임 슬라이스가 소진되었거나, 인터럽트나 시스템 호출 종료 시에 더 높은 우선 순위 프로세스가 발생 되었음을 알았을 때, 현 실행 프로세스로부터 강제로 CPU를 회수하는 것을 말한다.
프로세서 외에 다른 자원을 기다리는 상태
Asleep state에서 자원을 할당 받더라도 바로 running state로 갈 수 없다. block 되어 asleep state로 변경되면서, 할당 받았던 프로세서가 반환되었기 때문에, 프로세서가 이미 다른 프로세스에 할당되었을 수 있다. 따라서 wake-up을 해도 running이 아닌, ready로 돌아가 차례를 기다려야 한다.
메모리 공간 효율을 높이기 위해 suspended ready나 suspended block상태로 swap-out되고 나중에 다시 메모리로 swap-in된다.
Memory image: 메모리 할당을 반환하기 전에, 작업 진척(메모리 내용)을 저장해 놓은 것.
Swap device: 프로그램 정보 저장을 위한 특별한 파일 시스템
Swap-out(suspended): Memory image를 swap device에 저장하고 메모리 할당을 반환하는 것.
Swap-in(resume): swap device에 저장했던 Memory image를 통해 메모리를 다시 할당하는 것.
예상치 못한, 외부에서 발생한 이벤트
Unexpected, external events
- I/O interrupt
- Clock interrupt
- Console interrupt
- Program check interrupt
- Machine check interrupt
- Inter-process interrupt
- System call interrupt
처리과정 설명
- Pi(현재 프로세스) 수행 중
- Interrupt 발생
- 현재 상태 보존을 위해 Context Saving 실행
- Interrupt handiling 실행 (커널이 인터럽트 발생 원인을 파악함)
- Interrupt Service 실행 (인터럽트를 해결하기 위해 움직임)
- Interrupt Service도 하나의 별도 프로세스이기 때문에 Ps(Interrupt Service 의 프로세스) 가 Pi 프로세서를 가져와서 실행
- Ps가 인터럽트 해결
- 다음 대기열에 있던 Pj가 Ps 프로세서를 가져와서 실행한다. (Pj도 실행되다가 멈췄던 프로세스라면 멈추기 전에 Context Saving 을 했을 것이기 때문에, Context Saving이 있었다면 Context Restoring으로 작업 현황 저장사항을 불러온다.)
멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)를 교체하는 작업을 Context Switch(Context Switching)라고 한다.
Context Switching 때 해당 CPU는 아무런 일을 하지 못한다. 따라서 컨텍스트 스위칭이 잦아지면 오히려 오버헤드가 발생해 효율(성능)이 떨어진다.