스케줄러란?
- 프로세스 들 중에 무엇을 어떻게 어떤시간에 선택해야하는 것인지 원칙을 세워 실행하는 것
큐 (Queue)
- 프로세스를 스케줄링 하기 위한 큐는 세가지 종류가 있음.
Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합
Ready Queue : 현재 메모리 내에 있으면서 CPU를 기다리는 프로세스의 집합
Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합
스케줄러의 종류
장기 스케줄러 (Long-term scheduler or job scheduler)
메모리는 한정되어있는데 많은 프로세스들이 한꺼번에 메모리에 올라올 경우, 대용량 메모리(일반적으로 디스크)에 임시 저장이 저장되어 있는 프로세스 중 어떤 프로세스에 메모리를 할당하여 준비큐 (ready queue) 로 보낼지 결정하는 역할
- 메모리와 디스크 사이의 스케줄링을 담당
- 프로레스에 메모리를 할당
- 메모리에 여러 프로그램이 올라는것 , 몇 개의 프로그램이 올라갈 것인지를 제어
- 프로세스의 상태를 new -> ready(in memory) 로 만듬.
단기 스케줄러 (Short-term scheduler or CPU scheduler)
- CPU 와 메모리 사이의 스케줄링을 담당
- 준비큐 (ready queue) 에 존재하는 프로세스 중에 어떤 프로세스를 러닝시킬지 결정.
- 프로세스에 CPU를 할당
- 프로세스의 상태를 ready -> running -> waiting -> ready 로 만듬.
중기 스케줄러 (Medium-term scheduler or Swapper)
- 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄 (swapping)
- 프로세스에게서 memory 를 할당 취소함
- 현 시스템에서 메모리에 너무 많은 프로그램이 동시에 올라가는 것을 조절하는 스케줄러
- 프로세스의 상태를 ready -> suspended 로 만듬
suspended 란?
- 외부적인 이유로 프로세스의 수행이 정지된 상태로 메모리에서 내려간 상태
- 프로세스를 전부 디스크로 swap out 됨.
- blocked 상태는 다른 I/O 작업을 기다리는 상태이기 때문에 스스로 ready state로 돌아갈 수 있음
- suspended 상태는 외부적인 이유로 suspending 되었기 때문에 스스로 돌아갈 수 없음.
CPU 스케줄러란?
사전적 의미
- 다중 프로그램 OS(운영체제)의 기본으로, 여러 프로세스들이 CPU를 교환하며 보다 생산적으로 동작함.
- CPU를 선점한 프로세스가 대기하는 시간을 보다 효율적으로 사용하기 위해 사용한다.
- 기본적으로 다음에 실행될 프로세스를 정하고, 프로세스들을 실행가능한 상태로 만든다.
요약
준비큐에 있는 프로세스에 대해 CPU를 할당하는 방법
스케줄링이 일어나는 시점
- Running -> Waiting (I/O , 자식 프로세스 종료)
- Running -> Terminate (부모 프로세스 종료)
- Running -> Ready (인터럽트 발생)
인터럽트란?
운영 체제에서 컴퓨터에 예기치 않은 일이 발생하더라도 작동이 중단되지 않고 계속적으로 업무 처리를 할 수 있도록 해 주는 기능.
- Waiting -> Ready (I/O 완료)
비선점 스케줄링 / 선점 스케줄링의 특징
비선점 스케줄링
- Time-slice 가 없는 스케줄링
- CPU를 사용중인 프로세스가 자율적으로 반납하도록 하는 방식
- 프로세스가 자율적으로 CPU를 반납하는 시점에서 사용한다.
선점 스케줄링
- 낮은 우선순위를 가진 프로세스보다 높은 우선 순위를 가진 프로세스가 CPU를 선점하는 방식
- 운영체제가 스케줄링의 알고리즘에 따라 적당한 프로세스에게 CPU를 할당하고, 필요시에는 회수하는 방식
- 일반적으로 3,4 번 시점에서 사용하지만 , 상황에 따라 1,2 에서도 스케줄링이 가능하다.
비선점 스케줄링
1. FCFS ( First Come First Served )
- 먼저 CPU를 요청하는 프로세스를 처리하는 방식
- 프로세스가 완료 될 때까지 CPU 를 반환하지 않는다.
단점
소요시간이 긴 프로세스가 먼저 실행되어 효율성이 낮아지는 현상 발생
2. SJF ( Shortest-Job-First )
- 다른 프로세스가 먼저 도착했어도 실행시간 짧은 프로세스에게 먼저 할당해준다
- 평균 waiting time 을 최소화하기 위해 사용하는 방식
- 버스트 시간이 짧은 프로세스부터 CPU를 할당한다.
단점
특정 프로세스가 지나치게 차별받는다. 소요시간이 길면 언제 할당받을지 모른다
선점 스케줄링
1. SRT ( Shortest Remaining Time First )
- 새로운 프로세스가 도착할 때마다 새로운 스케줄링이 이루어짐
- 최단 잔여시간을 우선으로 하는 스케줄링
- 현재 수행중인 프로세스의 남은 실행시간보다 더 짧은 실행시간을 가지는 새 프로세스가 도착하면 CPU를 반환해야함
단점
변수가 많아, 실행시간을 측정할 수 없다
2. RR ( Round Robin )
- 각 프로세스는 동일한 크기의 할당시간을 갖게됨
- 할당시간이 지나면 프로세스는 다른 프로세스에게 선점당하고 준비큐 (ready queue) 의 제일 뒤로 가게된다.
- Time Sharing System 을 위해 설계된 스케줄링
- 모든 프로세스가 같은 우선 순위를 가지게 되고, time slice 를 기반으로 스케줄링한다.
time slice 란?
하나의 처리 장치에서 두가지 이상의 처리를 시간적으로 교차 / 배치 하는 컴퓨터 시스템 조작 기법
장점
- CPU 시간이 랜덤한 프로세스들이 섞여있을 때 효율적이다.
- Response Time 이 빨라진다. ( 어떤 프로세스도 일정시간 이상 기다리지 않는다. )
- 프로세스가 기다리는 시간이 CPU를 사용할 만큼 증가한다. ( 공정한 스케줄링 )
단점
설정한 Time 간격이 너무 커지면 FCFS와 같아지고 너무 작아지면 overhead 가 발생함
Priority Scheduling (우선 순위 스케줄링)
- 우선 순위가 높은 프로세스에 CPU를 우선 할당하는 방식의 스케줄링
- 우선 순위는 시간 제한, 메모리 요구량, 프로세스의 중요성, 자원사용 비용 등에 따라 달라질 수 있다.
- 우선 순위가 같을 경우, FCFS와 다를게 없다. (비선점, 선점 둘다 사용된다.)
단점
언제 CPU를 할당받을지 모름
CPU 스케줄러가 무엇인지 간략하게 설명해주세요.
* 준비큐에 있는 프로세스에 대해서 CPU를 할당하는 방법입니다.
크게 다섯가지로 분류할 수 있습니다.
FCFS, SJF, SRT, Priority Scheduling, Round Robin 이 있습니다.
비선점 스케줄링으로는 FCFS, SJF 가 있고, 선점 스케줄링으로는 SRT, Round Robin 이 있습니다.
비선점과 선점 둘다 사용되는 것은 Priority Scheduling 이 있습니다.