CPU 스케줄링에 대해 이해한다.
CPU가 하나여도 프로그램들을 여러개 돌립니다. 디코하면서 노래듣고 겜하겠죠?
그 프로세스들이 동시에 실행되고 있는 것 처럼 보이지만, 실제로는 CPU가 작업 사이클을 굉장히 빠르게 작업 사이를 전환하고 있습니다.
한가지 예시를 들겠습니다.
복사기가 있어요. 면접 보기 위해 2장정도 서류 복사하러가는 민규와 cs공부하러 10권 제본뜨러가는 민섭이도 있습니다.
선착순으로 FCFS(First Come First Serve)이 일반적으론 맞겠지만, 뒷사람한테 좀 미안하겠죠
민규형 이력서 두장인데 취준하는 민섭이는 cs 책 10권복사하고있으니 ㅇㅇ
그렇다고 무작정 양보할 순 없는게, 끝도없이 양보요청을 받을 수도 있어요
이런 제한된 상황에서 가장 퍼포먼스를 올릴 수 있는 방법을 찾은게 cpu 스케줄링 알고리즘입니다.
이 세가지가 대표적인 스케줄링 알고리즘입니다.
다시 정리하면
CPU(복사기)를 사용하려고 하는 프로세스(사람들) 사이의 우선 순위(줄서기)를 관리하는 것을 CPU 스케줄링이라고 합니다. (자원을 어떤 프로세스에 얼마나 할당하는지 정책을 만드는 것.)
선점형 : 환자가 이가경
아까 예시에서, 복사기가 민섭이의 복사를 중단하고 바쁜 민규의 복사로 전환할 때, 민섭이의 이미 복사한 페이지 수와 남은 페이지 수를 기억해야겠죠?
CPU도 마찬가지로, 프로세스를 전환할 때 현재 상태를 저장하고 새로운 프로세스의 상태를 불러와야 합니다.
이를 컨텍스트 스위칭이라고 합니다.
비선점형 : 환자가 이성섭
라운드 로빈, RR(Round Robin)
우선순위 스케줄링
다단계 큐 (Multilevel Queue) 스케줄링
다단계 피드백 큐 (Multi Level Feedback Queue) 스케줄링
??? : 그런 민섭씨를 위한 방법이 있습니다.
시스템 부하가 많아서 낮은 등급에 있는 준비 큐의 프로세스가 무한정 기다리는 현상(현재의 민섭씨)을 해결하기 위해,
오랫동안 기다린 프로세스의 우선순위를 높여주는 에이징(Aging) 기법을 사용하면 조금 더 개선된다.
이제 당연하게 추론이 됩니다.
가경씨가 환자인 선점형의 경우, 컨텍스트 스위칭이 잦게 되어 오버헤드가 발생할 수 있는 문제점이 있습니다.
대신, 긴급한 작업에 빠르게 대응할 수 있겠고, 적절한 알고리즘으로 공정성과 대기시간 최소화, CPU 사용률을 극대화시킬 수 있겠죠
따라서 현대 컴퓨팅 환경에서 널리 사용됩니다.
반대로, 환자가 성섭씨인 비선점의 경우, 공정성이 없습니다. 대기시간도 높습니다. 중요한 작업이 있더라도 빠르게 해결하지 못할 가능성이 있습니다. 우선순위가 낮은 민섭씨는 치료를 못받겠네요
장점으론, 복잡한 알고리즘이 필요없어서 구현하기 상대적으로 쉽습니다. 컨텍스트 스위칭 오버헤드도 적습니다. 그리고 예측하기 쉽겠네요.
https://latter2005.tistory.com/102
https://eun-jeong.tistory.com/17
https://velog.io/@chappi/OS는-할껀데-핵심만-합니다.-5편-스케줄링2-비선점형-스케줄링-알고리즘FCFS-SJF-HRN#4-hrn-스케줄링
and ChatGPT
"CPU 스케줄링은 운영체제가 CPU를 어떤 프로세스에 할당할지 결정하는 과정입니다. 이는 주로 네 가지 상황에서 발생합니다.