# 운영체제 4장 CPU 스케줄링
## 키워드
- CPU 스케줄링,
## 질문 만들기
### 01 스케줄링 개요
- CPU 스케줄링이란?
- CPU 스케줄링의 단계에 대해서 설명하세요.
- CPU 스케줄링의 목적은?
### 02 스케줄링 시 고려사항
### 03 다중 큐
### 04 스케줄링 알고리즘
### 05 인터럽트 처리
## 질문 답안
- CPU 스케줄링이란?
- **여러 프로세스의 상황을 고려**하여 **CPU와 시스템 자원을 어떻게 배정할지** **결정**하는 일
- CPU 스케줄링의 단계에 대해서 설명하세요.
- 고수준 스케줄링 high level scheduling
- **시스템 내의 전체 작업 수를 조절**하는 것, 여기서 작업은 운영체제에서 다루는 일의 가장 큰 단위로 1개 또는 여러 개의 프로세스로 이루어지고 있다.
- **전체 시스템의 부하를 고려하여 작업을 시작할지 말지를 걸정**한다. 이 결정에 따라 시스템의 전체 프로세스 수가 결정되는데 이를 멀티프로그랠밍 정도라고 한다.
- long-term, job, admission scheduling
- 저수준 스케줄링 low level scheduling
- 어떤 프로세스에 CPU를 할당할지,
- 어떤 프로세스를 대기 상태로 보낼지 등을 결정하는 일
- short-term scheduling
- 중간 수준 스케줄링 middle level scheduling
- 고수준 스케줄링은 프로세스를 활성화할지 말지를 결정하여 전체 프로세스 수를 조절하는 방식인데, 프로세스가 활성화된 후에도 여러 가지 사정으로 시스템에 과부화가 걸릴 수 있다.
- 시스템 부하를 조절하려면 고수준 스케줄링 대신 중간 수준 스케줄링을 고려해야 한다.
- 시스템에 과부화가 걸려서 전체 프로세스 수를 조절해야 한다면 **이미 활성화된 프로세스 중 일부를 보류 상태로 보낸다.**
- 보류된 프로세스는 처리 능력에 여유가 생기면 다시 활성화된다.
- **중지(suspend) 와 활성화(active)로 전체 시스템의 활성화된 프로세스 수를 조절하여 과부하를 막는다.**
- 저수준 스케줄링이 원만하게 이루어지도록 완충하는 역할을 한다. (**buffer 역할**)
- CPU 스케줄링의 목적은?
- 공평성
- 모든 프로세스가 자원을 공평하게 배정받아야 한다.
- 특정 프로세스 배제X
- 효율성
- 시스템 자원이 유휴 시간 없이 사용되도록 스케줄링한다
- 유휴자원을 사용하려는 프로세스에는 우선권을 줘야 한다.
- 안정성
- 우선 순위를 사용하여 중요 프로세스가 먼저 작동하도록 배정함으로써 시스템 자원을 점유하거나 파괴하려는 프로세스로부터 자원을 보호해야 한다.
- 확장성
- 프로세스가 증가해도 시스템이 안정적으로 작동하도록 조치해야 한다.
- 반응 시간 보장
- 응답이 없는 경우 사용자는 시스템이 멈춘 것으로 가정하기 때문에 시스템은 적절한 시간 내에 프로세스의 요구에 반응해야 한다.
- 무한 연기 방지
- 특정 프로세스의 작업이 무한히 연기되어서는 안된다.
###### tags: `Opersating System`