1) I/O 버스트와 CPU 버스트
- 프로세스의 사이클 구성단위
- CPU burst : CPU에서 실행되는 경우, 프로세스 시작은 이것으로
- I/O burst : CPU 버스트가 끝나고 뒤따라나와 대기큐에서 입출력을 대기하는 경우
- 이 두 버스트의 간격과 횟수는 프로세스마다 다른데, 이에 맞게 스케줄링을 한다
2) CPU 스케줄러
- CPU가 유휴 상테일 경우, 준비큐에 있는 프로세스를 실행하는 것
- 선입선출 큐, 트리, 우선순위 큐 등의 자료형으로 구성
- 이 준비큐에 올라가는 것은 프로세스 제어 블럭(PCB)이다.
3) 선점 및 비선점 스케줄링
- 선점 스케줄링 : 어떤 프로세스가 실행되는 데에 스케줄러가 개입할 수 없는 것
- ex) 하나의 프로세스가 입출력을 기다리는 경우(실행 → 대기), 프로세스 종료
- 비선점 스케줄링 : 스케줄러가 개입하여 경쟁적으로 프로세스들을 실행시킬 수 있는 것
- ex) I/O 종료시(대기 → 준비), 인터럽트 발생시 (실행 → 준비)
- 문제점 : 동일한 프로세스에서 메모리를 공유하는 경우 동시성 문제가 있음
4) 디스패쳐
- CPU 스케줄러가 선택한 프로세스에 CPU 제어권을 주는 요소
- context switching
- 사용자 모드 전환
- 프로그램 재시작을 위해 사용자 프로그램의 적절한 위치로 이동하는 일
- 자발적 문맥교환
- 선점형 스케줄링에 의해 발생되는 문맥 교환 → 실행중인 프로세스가 CPU 제어를 포기함
- 비자랄적 문맥교환
- 비선점형 스케줄링에 의해 해당 CPU 제어권을 뺏겨 생긴 문맥 교환