[운영체제] CPU 스케줄링
스케줄링이 뭐였죠?!
실행 중인 모든 프로세스들에게 골고루 CPU를 할당하는 것!
CPU 스케줄링이 필요한 이유는?!
CPU를 점유하고 있는 한 프로세스가 입출력 요청에 의해 wait 상태로 되었다고 생각해보자.
이 프로세스가 다시 ready 상태로 올 때까지 기다리고만 있는 것은 매우 비효율적임
다중 프로그램의 목적은 CPU 효율을 극대화 하는데 있으므로, CPU 스케줄링은 다중 프로그램을 지원하는 운영체제에서 필수적인 요소다!
또한, 시스템의 용도에 따라 적절하고 효율적인 스케줄링 알고리즘을 선택하는 것도 매우 중요함
CPU 스케줄링이 일어나는 시점
running → waiting (비선점 ex. 입출력 요청)
running → ready (선점 ex. 인터럽트 발생)
waiting → ready (선점 ex. 입출력 종료)
terminated (비선점)
각 OS의 스케줄러가 담당해서 진행합니다.
(이때 스케줄러들은 스케줄링을 기준을 세워놓고 진행)
이 기준은 스케줄링 알고리즘에 따라 달라지는데, 크게 선점/비선점으로 나눠짐
선점형 운영체제(Preemptive OS)
현재 실행 중인 프로세스A보다 높은 우선순위를 가진 프로세스B가 등장하면, 스케줄러에 의해 실행 순서가 조절됨
→ 우선순위가 높은 녀석이 오면 현재 running 상태 프로세스A가 ready 상태로 밀려가고 프로세스B가 running 상태로 CPU 할당 받음
선점 스케줄링이 일어나는 경우 : 입출력 요청, 입출력 응답, 인터럽트 발생, 작업 완료 등
비선점형 운영체제(non-Preemptive OS)
현재 실행 중인 프로세스A가 끝나야 다음 프로세스B가 CPU를 할당받을 수 있음
→ 우선 순위가 높은 Ready 상태에서 대기하더라도, 현재 running 상태에 있는 프로세스A의 일이 끝나야 프로세스B가 CPU 할당 받을 수 있음
비선점 스케줄링이 일어나는 경우 : 프로세스가 스스로 할당 받은 CPU를 놓아주는 시점
결국 선점과 비선점의 차이는, 기존에 CPU를 할당받은 프로세스가 계속 사용을 할 수 있음에도 불구하고, 우선순위에 따라 자원을 빼앗길 수 있는지에 대한 여부임
선점 스케줄링
SRT 스케줄링
짧은 시간 순서대로 프로세스 수행
남은 처리 시간이 짧은 프로세스가 ready 상태로 오면, 바로 선점
RR 스케줄링
라운드 로빈(Round-Robin) 스케줄링
각 프로세스는 같은 크기의 CPU 시간을 할당 받고 선입선출(FIFO)로 진행
적당한 할당시간이 필요한 스케줄링임 (할당시간 너무 많으면 FIFO 스케줄링이랑 같고 작으면 오버헤드 발생)
MLQ 스케줄링
다단계 큐 스케줄링
ready 큐를 여러개 사용하는 알고리즘 기법
큐마다 자신이 맡은 스케줄링 알고리즘을 수행하고, 큐와 큐 사이도 우선순위 부여
MLFQ 스케쥴링
다단계 피드백 큐 스케줄링
다단계 큐 스케줄링 + 프로세스들이 큐에서 이동 가능
비선점 스케줄링
FIFO 스케줄링
선입선출! ready 큐에 도착한 순서대로 CPU를 할당 받음
작업 완료 시간을 미리 예측할 수 있는 장점이 있음
단, 덜 중요한 작업을 진행하느라 중요한 작업을 바로 진행하지 못하는 단점 존재
SJF 스케줄링
큐 안에 있는 프로세스 중에서 수행시간이 짧은 것부터 먼저 수행
평균 대기시간을 감소시켜줌
HRN 스케줄링
수행시간의 길이와 대기 시간을 모두 고려해서 우선순위를 정하는 기법
수행시간이 긴 것과 짧은 것의 불균등을 보완시켜줌
Priority 스케줄링
프로세스에 부여한 우선순위가 높은 순서대로 처리
동적으로 부여하면 응답속도가 매우 빠름 (단, 구현이 복잡하고 오버헤드 발생)
Deadline 스케줄링
작업 자체를 끝내야 하는 시간을 정해놓고 진행하는 스케줄링
'CS > 운영체제' 카테고리의 다른 글
[운영체제] Deadlock (0) | 2019.03.31 |
---|---|
[운영체제] 뮤텍스(Mutex) & 세마포어(Semaphore) (2) | 2019.03.31 |
[운영체제] 스케줄러 (0) | 2019.02.23 |
[운영체제] 프로세스/스레드 (0) | 2019.02.16 |
운영체제(Operating System)란? (0) | 2019.02.13 |