CPU는 한번에 제한된 갯수의 스레드만 처리할 수 있기 때문에 이에 대한 스케줄링 작업이 필요하다.
이것은 스레드가 어떤 우선순위를 가지고 CPU를 얼만큼 사용할 것인지 결정하고 수행하는 과정으로
시간당 처리되는 건수를 높여서 CPU의 효율을 높여주기 위함이다.
이러한 스케줄링 알고리즘은 크게 선점형과 비선점형으로 나뉜다.
선점형은 먼저 수행 중인 스레드의 CPU 사용권이 다른 스레드에 의해 빼앗길 수 있는 알고리즘으로
스레드의 작업이 끝나지 않은 상황에서 중지하고 다른 스레드가 수행될 경우 다시 돌아와서
이어서 작업을 수행해야 하기 때문에 지금까지 수행한 모든 내용을 보관해 둔 후,
새로 시작하는 작업에 대한 내용을 새로 적재해 주어야 하는데 이를 문맥교환(Context Switching)이라 한다.
비선점형은 이와 반대로 먼저 수행 중인 스레드가 자발적으로 CPU 사용권을 넘기지 않는 이상
다른 스레드가 사용권을 빼앗을 수 없는 알고리즘이다.
진짜 왜 필요한가?
스케줄링이 필요한 이유에 대해 좀 더 이야기 해보자면 우리는 어떠한 일들을 처리할 때
어떤 일을 어느시간에 어떻게 처리할지 계획을 세우곤 한다.
장을 본다거나 혹은 회사에서 프로젝트를 진행할 때가 그렇다.
물론 간단한 것은 굳이 계획을 세울 필요없이 즉흥적으로 진행하는 경우도 있겠지만
이런식의 일처리는 사람만 가능한 것이지 컴퓨터는 어쨌든 논리적으로 일만 처리가 가능하니
논외로 치도록 하자.
어찌되었건 다시 본론으로 돌아오면 일들을 처리함에 앞서 계획을 세우는 이유는
일을 좀 더 효율적으로 처리하기 위함이다. 효율적이라 함은 시간과 노력을 조금이라도 줄인다는 말이다.
CPU의 스케줄링이 필요한 이유도 이와 다르지 않다.
우리가 계획을 세워서 문서로 남겨놓는다면 CPU 스케줄링에서는 Ready 큐 에 담아놓는다.
선점형 알고리즘
SRT(Shortest Remaining Time) 스케줄링
처리시간이 짧은 순서대로 우선순위를 높게 부여해서 CPU 사용권을 선점하도록 하는 알고리즘이다.
라운드로빈(Round-Robin)스케줄링
요청이 들어오는 순서대로 동일한 CPU 사용시간을 할당하는 알고리즘으로
그 시간이 초과하면 작업의 종류여부와 관계없이 다음 스레드가 CPU 사용권을 가져간다.
다단계 큐(Multi-level Queue) 스케줄링
Ready큐를 여러 개 사용하는 기법으로 각각의 큐는 서로 다른 스케줄링 알고리즘이 사용될 수 있으며
큐와 큐 사이에도 우선순위가 부여된다.
다단계 피드백 큐(Multilevel Feedback Queue) 스케줄링
다단계 큐의 발전형태로 다단계 큐 스케줄링에서는 스레드가 하나의 큐에 영구적으로 할당되지만,
다단계 피드백 큐 스케줄링에서는 스레드들이 큐를 갈아탈 수 있다.
비선점형 알고리즘
FCFS (First Come First Served) 스케줄링
요청이 들어온 순서대로 CPU 사용권을 부여하는 알고리즘으로 먼저 수행중인 스레드가 끝나기 전까지
중간에 다른 스레드가 CPU 사용권을 선점할 수 없다.
SJF (Shortest Job First) 스케줄링
선점형 알고리즘 중 SRT 스케줄링과 유사한데 비선점인 점만 다르다.
HRRN (Highest Response Ratio Next) 스케줄링
SJF 스케줄링의 발전형으로 단순 처리시간만으로 우선순위를 정하지 않고 대기시간도 추가로 고려하여
우선순위를 정한다.
https://dmzld.tistory.com/18
'Base > OS, Network' 카테고리의 다른 글
Linux crontab (0) | 2021.04.16 |
---|---|
운영체제 (0) | 2021.04.02 |
L4, L7 스위치 정리 (0) | 2021.04.02 |
Linux crontab (0) | 2021.04.02 |
ssh-keygen (0) | 2021.04.02 |