1. CPU 스케줄링의 목적(사용자 측면/시스템 측면)
시스템 측면
- 공정한 스케줄링(스케줄링 시 모든 프로세스의 공정한 취급)
- 처리량의 극대화(프로세스들의 단위시간당 처리량을 최대화)
- 우선순위제 실시(우선순위가 높은 프로세스를 먼저 실행)
사용자 측면
- 응답 시간의 최소화
- 반환 시간의 최소화
- 균형 있는 자원 사용(유휴 상태가 발생하지 않도록 자원을 사용)
- 무한 연기 배제(노화 기법(aging)을 사용하여 실행이 가능
2. CPU 스케줄링 단계별 분류(장기/중기/단기) 설명
(1) 장기 스케줄링

(2) 중기 스케줄링

(3) 단기 스케줄링

3. 선점/비선점 스케줄링의 정의 및 장단점
선점 스케줄링(preemptive scheduling)
- 하나의 프로세스가 CPU를 차지하고 있을 때 다른 프로세스가 현재 프로세스를 중단시키고 자신이 CPU를 차지할 수 있는 기법
- 높은 우선순위를 가진 프로세스들이 빠른 처리를 요구하는 시스템에서 유용하게 사용된다.
- 우선순위가 높은 프로세스가 먼저 수행할 때 유리함
- 빠른 응답시간을 요구하는 시분할 시스템에 유용함
- 선점으로 인한 많은 오버헤드를 초래한다.
비선점 스케줄링(non-preemptive scheduling)
- 한 프로세스가 CPU를 할당받으면 다른 프로세스는 CPU를 그 프로세스로부터 점유할 수 없는 기법
- 모든 프로세스들에 대한 원칙은 짧은 작업이든 긴 작업이든 공정해야 함(fair)
- 모든 프로세스에 대한 요구를 공정히 처리 가능함.