말그대로 CPU를 잘 사용하기 위해서 프로세스를 스케줄링해 잘 배정하는 것임
CPU가 하나의 프로세스 작업이 끝나면 다음 프로세스 작업을 수행하는데, 이때 다음 프로세스가 어느 프로세스인지를 선택하는 게 CPU 스케줄링
이런 스케줄링에도 여러가지 방법이 존재함
선점
은 프로세스가 CPU를 점유하고 있는 동안 I/O나 인터럽트가 발생한 것도 아니고 모든 작업을 끝내지도 않았는데, 다른 프로세스가 해당 CPU를 강제로 점유가 가능함. 즉, 프로세스가 정상적으로 수행중인 데 다른 프로세스가 CPU를 강제로 점유하여 실행할 수 있는 것임.
비선점
은 말그대로 선점의 반대임. 한번 프로세스가 CPU를 점유하면 프로세스 상태가 실행->대기로 변경되는 경우나 프로세스가 종료될 때까지 다른 프로세스가 CPU를 점유하지 못하는 것임.
스케줄링의 효율을 분석하는 기준들임. 대표적인 기준들로는 CPU 이용율, CPU 단위시간당 처리량, 프로세스의 시작시간부터 작업 종료까지 걸린시간, 대기시간, 응답시간들이 있다.
Priority Scheduling
우선순위가 높은 프로세스가 먼저 선택되는 스케줄링 알고리즘
우선순위를 정하는 방법은 크게 내부적인 요소와 외부적인 요소 두 가지로 나뉜다.선점, 비선점 둘다 가능
우선순위가 매우 낮은 프로세스는 아무리 오래 기다려도 CPU를 점유하지 못할 가능성이 큼. 왜냐면 실제 컴퓨터 환경에서는 새로운 프로세스가 자주 ready queue에 들어오기 때문이다. 이렇게 하염없이 CPU점유를 기다리는기아
현상이 발생할 수 있다. 이걸 해결하기 위한 방법이 aging이다. ready queue에서 기다리는 동안 일정시간이 지나면 우선순위를 높여주는것임
Round Robin
원 모양을 모든 프로세스가 돌아가며 스케줄링함. 일정 시간(Time Quantum)을 정하여 하나의 프로세스가 이 시간동안 수행하고 다시 대기 상태로 돌아감. 이 작업을 모든 프로세스가 돌아가면서 함. 기본적으로
선점 방식
Time Slice에 매우 의존적임. Time Quantum이 너무 작으면 스위칭 오버헤드가 발생한다는 단점이 있다.
다단계 큐
여러 성격에 따라 프로세스 그룹이 나뉘는 데 이를 하나의 큐에 사용하는 것은 비효율적이라고 판단하고 각 그룹에 따라 큐를 두어 여러개의 큐를 사용하는 방식임
큐마다 우선순위를 지정 가능
큐에 따라 여러 기준을 둘 수 있음. 큐마다 CPU 시간을 다르게 둔다거나, 큐마다 다른 스케줄링 방식을 적용한다거나.
ex> 우선순위가 낮은 큐들이 실행 못하는 걸 방지하고자 각 큐마다 다른 Time Quantum을 둠
다단계 피드백 큐
여러 큐를 사용한다는 점에서는 다단계 큐와 비슷
우선순위순으로 큐를 사용하는 상황에서 우선순위가 낮은 아래의 큐에 있는 프로세스에서 기아 상태가 발생하면 이를 우선 순위가 높은 위의 큐로 옮길 수 있다는 특징이 있다.
FCFS (First Come First Served)
먼저온 프로세스가 먼제 CPU를 점유하는 방식, 매우 단순, 많이 사용
그러나, 모든 부분에서 효율적이지는 않음
순서대로 실행하기때문에 CPU를 오래 사용하는 프로세스가 먼저 수행하게 되면 뒤의 프로세스들의 대기시간이 길어지는 단점이 존재,비선점 방식
SJF (Shortest Job First)
짧게 수행되는 프로세스가 가장 먼저 수행되는 것. 짧은 프로세스가 먼저 실행되게되면 평균대기시간이 줄어듦
하지만 이 방법은 매우 비현실적임. 현실적으로 컴퓨터 환경에서는 프로세스의 CPU점유 시간을 알 수 없기 때문. 예측해서 쓸 수도 있지만, 오버헤드가 매우 커서 잘 사용되지 않음.선점, 비선점 둘 다 가능
HRN (Highest Response-ratio Next)
SJF의 단점을 보완한 형태의 스케줄링 방식임
우선순위를 계산하여 점유 불평등을 보완한 방법임
우선순위를 계산할때 대기시간과 실행시간을 이용하여 정함
🫠
출처: https://velog.io/@codemcd/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-6.-CPU-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81
https://gyoogle.dev/blog/computer-science/operating-system/CPU%20Scheduling.html