1. 스케줄링이란
* Context Switching
- 멀티태스킹은 운영체제를 통해 CPU가 필요한 자원을 프로세스 또는 스레드에 나누는 행위를 의미한다. 우리가 여러 프로그램을 동시에 실행할 수 있는 이유가 멀티태스킹 덕분이다.
- 지난 포스팅에서도 봤던 그림이다. 프로세스가 동시에 실행되는 것처럼 보이지만, 실제로 CPU는 한번에 한 가지 명령어 밖에 처리하지 못하기 때문에 동시는 아니다.
- CPU는 동시가 아니라 아주 빠르게 프로세스들을 번갈아가며 실행하고 관리한다. 이렇게 번갈아 실행하는 행위를 Context Switching이라 한다. 빠른 스위칭 덕에 우리는 마치 동시에 프로세스가 돌아가는 것처럼 느끼게 된다.
* CPU 스케줄러
- Context Switching을 할 때 CPU를 적절하고 효율적으로 사용되도록 해야한다. 이전의 프로세스 상태나 새로운 프로세스의 상태에 따라 적절하게 스위칭을 이루어내야 한다. 이것을 담당하는 것이 스케줄러이다.
- 스케줄러는 준비 큐에 있는 프로세스들을 잘 판단하여 CPU를 할당받도록 하는데, 목적을 3가지 정도로 나열할 수 있다.
- 첫째, CPU를 최대한 활용하는 것
- 둘째, 대기 시간을 최소화 하는 것
- 셋째, 처리량을 최대화 하는 것
- 위 목적에 부합하도록 다음으로 어느 작업을 CPU에 할당할 것인지를 정하는 알고리즘을 스케줄링 알고리즘이라 한다.
2. 비선점형 스케줄링
- 비선점형 스케줄링은 프로세스가 종료되거나 자발적으로 중지될 대까지 방해하지않고 계속 실행되도록 보장한다.
- 순서대로 처리되며 응답시간을 예상할 수 있다.
- 스케줄러 호출빈도가 낮으며, 일괄처리 시스템에 적합하다.
* FCFS
- First Come First Served 의 약자로, 먼저 자원 사용을 요청한 프로세스에게 자원을 순차적으로 할당해 주는 방식이다.
- 특정 프로세스의 실행시간이 오래 걸리면 뒤의 프로세스들의 대기시간이 자연스럽게 길어진다.
* SJF
- Shortest Job First 의 약자로 CPU점유 시간이 잛은 순으로 프로세스에게 CPU를 할당한다.
- 평균 대기시간을 최소화 할 수 있다는 장점이 있지만, 만일 계속 짧은 프로세스가 들어오면 요구시간이 긴 프로세스는 기아(Starvation)상태가 될 것이다.
* HRRN
- Highest Response Ratio Next의 약자로 위의 SJF를 보완하였다.
- CPU처리 기간 뿐만 아니라 해당 프로세스의 대기시간을 동시에 고려한 스케줄링 기법이다.
3. 우선순위 스케줄링
- 우선순위가 높은 순서대로 실행하는 스케줄링을 총칭한다.
- 비선점형 방식에서는 높은 우선순위의 프로세스가 들어오면 준비큐(Ready Queue)의 head부분에 넣는다.
- 선점형 방식에서는 새로 도착한 프로세스의 우선순위가 현재 프로세스보다 높으면 CPU를 선점하도록 한다.
- 우선순위 스케줄링의 단점은 위의 SJF에서 언급했듯 우선순위가 높은 프로세스가 계속 들어오면 우선순위가 낮은 프로세스는 기아(Starvation)상태가 될 수 있다는 것이다.
- 위의 문제를 해결하기 위해 에이징(Aging)이라는 기법을 사용한다. 기다린 시간에 비례하여 우선순위를 한 단계씩 올려 기아상태를 방지한다. 위에서 SJF에서 에이징 기법을 도입한 것이 HRRN이라고 볼 수 있다.
4. 선점형 스케줄링
- 우선되어야 하는 작업이 들어오면 기존 작업에게서 CPU를 뺏고 할당할 수 있는 스케줄링 기법들이다. 즉 새로온 프로세스가 기존 실행중인 프로세스를 중지하고 CPU를 점유한다.
- 모든 프로세스에게 공평하게 CPU 사용시간을 부여할 수 있다.
- 빠른 응답시간에 적합하며 긴급한 프로세스를 제어할 수 있다.
* RR
- Round Robin 의 약자로 시분할 시스템을 위한 선점형 스케줄링 방식이다.
- 프로세스들 사이에 우선순위 없이 제한된 시간 할당량만큼만 실행하고, 완료되지 못하면 'Ready' 상태로 돌린다. 이 들은 준비큐의 끝으로 밀려난다.
- 실시간 시스템에 유리하다.
* SRTF
- Shortest Remaining Time First 의 약자로 SJF의 선점형 방식이라고 보면 된다.
- 현재 작업중인 프로세스를 중단하고 최단 잔여시간의 프로세스를 CPU에 점유시켜 처리한다.
참고
'Computer Science > Operating System' 카테고리의 다른 글
<운영체제> 멀티프로세스와 멀티스레드 (0) | 2021.08.21 |
---|---|
<운영체제> 프로세스와 스레드 (0) | 2021.08.19 |
<운영체제> 프로세스 메모리 (0) | 2021.08.16 |