스케줄러(Scheduler)
어떤 프로세스에게 자원을 할당할지를 결정하는 운영체제 커널의 모듈을 지칭한다.
스케줄러 종류
단기 스케줄러
메모리 내의 준비하고 있는 작업 중 실행 할 프로세스 선택하여 CPU할당
- CPU와 메모리 사이의 스케줄링을 담당한다
- 프로세스의 상태 변화 ready > running > waiting > ready
- CPU 스케줄러라고도 함
- 일반적으로 생각하는 스케줄러
중기 스케줄러
너무 많은 프로세스에게 메모리를 할당하면 시스템의 성능이 저하될 수 있기에 이를 해결하기 위해 메모리에 있는 프로세스의 수 관리
- 메모리의 여유공간을 마련하기 위해 프로세스를 디스크로 보내는 swapping
(프로세스의 메모리를 통째로 빼앗아 디스크 스왑 영역에 저장하는 스왑 아웃을 하고 여유가 생기면 스왑 인을 하는 행위)
- 프로세스의 상태 변화 ready > suspended
장기 스케줄러
어떤 프로세스를 ready queue에 넣을 것인지 결정
- 메모리와 디스크 사이의 스케줄링을 담당
- 하드 디스크에 있는 프로그램을 메모리에 로드
- 몇개의 프로그램이 올라갈 것인지 제어
- 프로세스 상태의 변화 new > ready
스케줄링 알고리즘
비선점 스케줄링
- CPU할당을 받으면 작업 종료까지 다른 프로세스는 CPU점유가 불가능한 스케줄링 방식
1. FIFO
가장 먼저 들어온 프로세스가 먼저 실행됨
- 간단하다
- 비선점식으로 대화식 프로세스에 적합하지 않다
- 긴 작업이 짧은 작업 앞일 때 대기시간이 길어진다.
2. SJF(Shortest Job First)
실행시간이 짧은 프로세스에게 자원을 할당
- 평균 대기시간이 짧다.
- 긴 작업은 오래 기다려야한다.
- CPU할당이 공평하지 않다.
3. 우선순위(비선점)
프로세스마다 우선순위를 부여하여 높은 우선순위가 먼저 자우너 할당
- 프로세스의 중요도를 명시할 수 있다.
- 실시간 시스템에 유리
- 낮은 프로세스는 계속 기다려야한다.
선점 스케줄링
- 응답이 빠르다.
- 처리시간 예측이 어렵다.
- 계속 들어오는 경우 오버헤드 발생
2. RR(Round Robin)
동일한 할당시간을 갖고, 실행 후 맨끝으로 가서 기다림
- 모든 프로세스가 공정하다.
- 타이머가 필요하다.
- 시간이 짧을경우 오버헤드 발생