[운영체제] 02. 프로세스 스케줄러_1
스케줄링 알고리즘의 종류
- FIFO 스케줄러
First in First out 으로 일반적인 큐의 형태와 같다. FCFS(First Come First Served)라고도 쓰인다.
배치 처리 시스템의 형태와 같다.
- SJF(최단 작업 우선) 스케줄러
전체 프로세스 중 가장 실행시간이 짧은 프로세스 부터 실행시키는 알고리즘이다. 하지만 모든 프로세스 시간을 미리 알아야 하기때문에 힘든점이 있다.
- Priority-Based(우선순위 기반) 스케줄러
정적 우선순위 : 프로세스마다 우선순위를 미리 지정하여 스케줄링함
동적 우선순위 : 스케줄러가 상황에 따라 우선순위를 동적으로 변경함
- Round Robin 스케줄러
각 프로세스를 ready queue에 넣고 FIFO의 형태로 시간단위 마다 CPU에 할당한다. 그리고 시간단위가 지나면 큐의 끝으로 들어가고 다음 프로세스를 CPU에 할당시킨다. 사용이 끝난 프로세스는 더이상 큐에 넣지 않으며 모든 프로세스에 공평하게 CPU를 할당한다. 이는 시분할 시스템의 형태이다.
프로세스 상태
- running state
프로세스가 현재 CPU에서 실행중인 상태
- ready state
프로세스가 CPU에서 실행 가능하도록 실행 대기중인 상태
- block state
프로세스가 실행중 특정 이벤트가 발생할때 까지 대기중인 상태(ex. 파일을 다 읽을때까지 대기)
선점형 스케줄러와 비선점형 스케줄러
- 선점형 스케줄러
스케줄러가 실행중인 프로세스를 중단시키고 다른 프로세스로 교체할 수 있다. (ex. RoundRobin…)
- 비선점형 스케줄러
스케줄러가 실행중인 프로세스를 중단시키고 다른 프로세스로 교체할 수 없고 실행이 끝나거나 자발적으로 block state 일때만 다른 프로세스로 교체할 수 있다.
- 복합형 스케줄러
일반적으로는 지금까지의 여러 스케줄러를 복합적으로 사용하여 사용목적에 맞춰 효율성을 높인다.
예를들어, 정적 Priority-Based와 RoundRobin을 같이 사용 하여 CPU가 노는 시간을 더욱 줄이고 사용자에게 딜레이가 적은 프로세스를 제공할 수 있다.