1. 스케줄링
cpu스케줄러 or 프로세스 스케줄러
- 여러 프로세스의 상황을 고려하여 CPU와 시스템 자원의 배정을 결정
- 프로세스가 생성된 후 종료될 때까지 모든 상태변화를 조정하는 것
1) 고수준 스케줄링
- 시스템 내의 전체 작업수를 조절
- 어떤 작업을 시스템이 받아들일지 또는 거부할지 결정
- 시스템 내에서 동시에 실행 가능한 프로세스의 총 개수가 정해짐
- 장기 스케줄링, 작업 스케줄링, 승인 스케줄링 이라고 함
2) 저수준 스케줄링
- 어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 대기 상태로 보낼지 결정
- 아주 짧은 시간에 일어나므로 단기 스케줄링이라고도 함
3) 중간수준 스케줄링
- 중지와 활성화로 전체 시스템의 활성화된 프로세스 수를 조절하여 과부하를 막음
- 일부 프로세스를 중지 상태로 옮겨
- CPU스케줄링의 목적
- 공평성(가장 중요) : 모든 프로세스가 자원을 공평하게 배정받아야 하며, 자원 배정 과정에서 특정 프로세스가 배제되어서는 안됨
- 효율성 : 시스템 자원이 유휴시간 없이 사용되도록 스케줄링하고, 유휴자원을 사용하려는 프로세스에는 우선권을 주어야 함
- 안정성 : 우선순위를 사용하여 중요 프로세스가 먼저 작동하도록 배정함으로써 시스템 자원을 점유하거나 파괴하려는 프로세스로부터 자원을 보호해야 함
- 확장성 : 프로세스가 증가해도 시스템이 안정적으로 작동하도록 조치해야 하며 시스템 자원이 늘어나는 경우 이 혜택이 시스템에 반영되게 해야 함
- 반응시간보장 : 응답이 없는 경우 사용자는 시스템이 멈춘 것으로 가정하기 때문에 시스템은 적절한 시간 안에 프로세스의 요구에 반응해야 함
- 무한연기방지 : 특정 프로세스의 작업이 무한히 연기되어서는 안됨 → 아사 방지
2. 스케줄링 시 고려사항
1) 선점형과 비선점형
- 선점형 스케줄링 → 현재 모든 스케줄링이 사용하는 방식
- 어떤 프로세스가 CPU를 할당받아 실행중이더라도 운영체제가 CPU를 강제로 할당가능
- 운영체제가 필요하다고 판단하면 실행 상태에 있는 프로세스의 작업을 중단시키고 새로운 작업을 시작할 수 있는 방식
- 하나의 프로세스가 CPU를 독점할 수 없기 때문에 빠른 응답시간을 요구하는 대화형 시스템이나 시분할 시스템에 적합
- 대부분의 저수준 스케줄러는 선점형 스케줄링 방식을 사용