본문 바로가기
os

[OS] CPU 스케쥴러 쉽게 설명하기

by 윤-찬미 2021. 5. 12.

[OS]

✔️ [프로세스와 스레드] https://yoon-dumbo.tistory.com/30

✔️ [스케쥴러] https://yoon-dumbo.tistory.com/32

💛 [CPU 스케쥴러]

 

🙋🏻‍♀️ 오늘은 CPU 스케쥴러에 대해 알아보겠습니다.

사전에 제가 포스팅해 둔 글을 읽고 오시면 더 빠른 이해가 가능합니다.

프로세스가 구동이 되려면 다양한 시스템 자원이 필요합니다.

대표적으로 CPU와 입출력장치가 있는데,

최고의 성능을 내기 위해 자원을 어떤 프로세스에 얼마나 할당하는지 정책을 만드는 것CPU스케줄링이라고 합니다.

스케줄링 대상은 Ready Queue(현재 메모리 내에 있으면서 CPU 를 잡아서 실행되기를 기다리는 프로세스들이 모여있는 공간) 에 있는 프로세스들입니다.

지난 시간 장기스케쥴링, 단기 스케쥴링, 중기 스케쥴링에 대해 배웠는데 CPU스케쥴링은 이 단기 스케쥴링에 해당합니다.

✔️ [스케쥴러] https://yoon-dumbo.tistory.com/32

CPU스케쥴러의 목적은 어떻게 프로세스들이 CPU를 효율적으로 사용할지에 대한 물음부터 시작됩니다.

CPU스케쥴러는 어떤 프로세스에게 CPU를 배정해줄지에 대해 결정합니다.

CPU의 스케쥴링 목적은 사용자와 시스템간 차이가 있는데,

👤 사용자 입장에서는,

내가 데이터를 입력한 후 최대한 빠르게 출력되는 응답시간

프로그램을 제출 한 후 끝나때까지의 처리 시간인 반환시간

프로세스들이 준비 상태로 대기열에서 기다린 시간인 대기시간

🖥 시스템 입장에서는,

총 경과 시간 대비 CPU가 순수하게 사용자 프로세스를 수행한 시간의 비인 CPU 이용률

단위 시간 당 몇개의 프로세스를 처리했는지에 대한 처리량

으로 시스템과 사용자의 목표 지표는 다릅니다. 한쪽으로 편파되지 않도록 적절히 전략을 이용해야 합니다.

 

❓ 그렇다면 언제? CPU스케줄링이 일어날까요?

CPU 스케쥴링은 아래와 같은 상황에서 일어납니다.

✍🏻 프로세스가 입/ 출력을 요구할 때

✍🏻 프로세스가 종료를 요구할 때

✍🏻 높은 우선순위의 프로세스가 나타날때

✍🏻 주어진 CPU 실행시간을 초과했을 때( 각 프로세스마다 지정된 최대 시간을 타임 퀸텀(Time Quantum) 또는 타임 슬라이스(Time Slice) 이라 부름)

CPU 스케쥴링

CPU의 스케쥴링 전략에 대해 알아보겠습니다.

CPU 의 스케쥴링 전략은 크게 두가지로 분류 할 수 있는데 바로 선점형과 비선점형 입니다.

분류는 아래와 같습니다.

이 중 저 비선점형 전략을 이용한 스케쥴링과 선점형 전략을 이용한 스케쥴링이 무엇이 있는지 알아보겠습니다.

 

👀 FCFS(First Come First Served)

말그대로 순서대로 처리하는 친구 입니다.

일단 CPU를 답으면 CPU burst가 완료 될 때까지 CPU를 반환하지 않습니다.

이럴 경우 문제점은 어떤게 있을까요?

만약 소요시간이 긴 프로세스가 먼저 도착하면 뒤에 짧은 소요시간을 가진 프로세스들이

기다려야 한다는 문제가 있습니다 아래 그림 처럼요!

👀 SJF(Shortest - Job - First)

이친구는 다른 프로세스가 먼저 도착했어도 CPU burst time이 짧은 프로세스에게 선 할당한다는 특징이 있습니다.

어? 그럼 좋은 거 아니야? 하실 수 있겠지만, 이친구는 극단적으로 CPU 사용이 짧은 job만을 선호하기

때문에 사용시간이 긴 프로세스는 거의 영원히 할당을 못받을 수도 있습니다.

아래 그림 처럼요!

이처럼 계속해서 지연되는 상황을 보통 기아 상태(Starvation State) 라고 부릅니다.

👀 SRTF(Shortest Remaining Time First)

선점형 스케쥴링인 SRTF의 특징은 새로운 프로세스가 도착할때마다 새로운 스케쥴링이 이루어지는데,

현재 수행 중인 프로세스의 남은 burst time보다 더 짧은 CPU burst time을 가지는 새로운 프로세스가 도착하면 CPU를 뺏깁니다.

따라서 CPU 사용시간을 측정할 수가 없다는 문제점이 있습니다.

 

SJF 랑똑같은 거 아냐? 할 수 있지만 SJF 는 실행시간이 가장 짧은 프로세스, SRTF 는 현재 실행중인 프로세스의 남아 있는 실행시간과 새로운 프로세스의 실행시간을 비교하여 짧은 것 이라 할 수 있습니다.

👀 HRRF(Highest Response Ratio First) 스케줄링

각 프로세스의 응답률을 계산하여, 응답률이 가장 큰 프로세스를 먼저 처리 하는 스케쥴링 전략 입니다.

응답률이 같다면 CPU버스트 시간이 짧은 프로세스가 우선순위가 더 높습니다.

준비 큐에 있는 프로세스에 대기시간과 작업시간을 통해 우선순위를 정해 CPU를 할당하기 때문에

CPU버스트 시간이 아무리 길더라도, 무한정 기다리는 기아현상이 예방 됩니다.

👀 Round Robin

가장 많이 쓰이는 스케쥴링으로

각 프로세스들은 동일한 크기의 할당시간(time quantum)을 갖습니다.

할당시간이 지나면 레디큐 제일 뒤에가서 줄을 섭니다.

CPU 버스트 타임이 랜덤할 경우에 효율적입니다.

😡 주의 할점은 time quantum이 너무 커지면, FCFS와 같아지고 너무 작아지면 잦은 context switch로 overhead발생하기 때문에 적당한 타임퀀덤을 설정하는게 중요 합니다.

👀다단계 큐(MQ: Multi-level Queue) 스케줄링

RR의 단점은 프로세스 특성을 고려할 수 없다는 것입니다.

이를 해결하기 위해 프로세스 특성 별로 레디 큐를 여러개 두어 우선순위를 부여하고, 높은 우선순위 큐들이 비었을 떄만 다음 단계의 낮은 우선순위의 큐 프로세스들에게 CPU를 할당하는 스케쥴링 전략을 도입했습니다.

같은 레디큐 안에 있는 프로세스 간에는 FSFS, SJF, RR등 다른 스케쥴링 전략을 사용할 수 있습니다.

😄 총정리

최대한 쉽게 설명하고자 노력했는데, 궁금한점이나, 잘못된 내용이 있으면 댓글로 피드백 부탁드립니다!

아래는 제가 한눈에 보기 쉽게 정리한 마인드 맵입니다.

✍🏻 참고자료

https://boycoding.tistory.com/258

blog.naver.com/PostView.nhn?blogId=silro812&logNo=221567674463&parentCategoryNo=&categoryNo=9&viewDate=&isShowPopularPosts=true&from=search

'os' 카테고리의 다른 글

[OS] 스케쥴러  (0) 2021.03.15
[OS] 프로세스와 PCB 그리고 스레드  (0) 2021.03.07