스케줄링에 대해 알아보자

세바님·2023년 4월 16일
0
post-thumbnail

수업 내용을 정리한 글입니다.

스케줄링이란?

스케줄링(Scheduling)은 컴퓨터 시스템에서 프로세스(Process)들이 CPU(Central Processing Unit)를 사용하는 순서를 결정하는 것을 말합니다. 즉, 여러 프로세스들 중에서 어떤 프로세스가 CPU를 사용할지를 정하는 것입니다.

스케줄링의 종류

선점 스케줄링 (Preemptive Scheduling)

선점 스케줄링은 현재 실행 중인 프로세스가 다른 프로세스에 의해 중지될 수 있는 스케줄링 방식입니다. 다른 프로세스가 실행되어야 할 경우, 현재 실행 중인 프로세스는 중단되고 CPU를 다른 프로세스에 할당합니다. 대표적인 예시로는 우선순위(Priority) 스케줄링과 라운드 로빈(Round Robin) 스케줄링이 있습니다.

비선점 스케줄링 (Non-preemptive Scheduling)

비선점 스케줄링은 현재 실행 중인 프로세스가 스스로 CPU를 해제할 때까지 다른 프로세스가 실행될 수 없는 스케줄링 방식입니다. 이 방식은 현재 실행 중인 프로세스가 완료될 때까지 다른 프로세스가 대기해야 하는 경우가 있을 수 있습니다. 대표적인 예시로는 FCFS(First Come, First Served) 스케줄링과 SJF(Shortest Job First) 스케줄링이 있습니다.

스케줄링 알고리즘의 종류

스케줄링 알고리즘의 종류에는 FCFS 스케줄링, 우선 순위 스케줄링, 라운드 로빈 스케줄링 등이 있습니다.

FCFS(First Come, First Served)

가장 단순한 스케줄링 알고리즘으로, 먼저 도착한 프로세스를 먼저 실행하는 방식입니다. 따라서, CPU를 오랫동안 사용하는 프로세스가 먼저 도착하면 평균 대기 시간이 길어지는 단점이 있습니다.

SJF(Shortest Job First)

실행 시간이 짧은 프로세스를 먼저 실행하는 방식입니다. 따라서, 프로세스의 실행 시간을 정확하게 예측할 수 있다면, 평균 대기 시간을 최소화할 수 있습니다. 하지만, 실행 시간을 예측하기 어려운 경우, starvation(기아현상)이 발생할 수 있습니다.

HRN 스케줄링

HRN(Highest Response Ratio Next) 스케줄링은 SJF(Shortest Job First) 스케줄링을 보완한 방식으로, 대기 중인 프로세스 중에서 Response Ratio가 가장 높은 프로세스에 CPU를 할당하는 방식입니다. 그러나 Response Ratio를 계산하는 데 필요한 정보가 더 많아져 CPU 사용량이 높아지고, 계산 복잡도가 높아지는 단점이 있습니다. 또한, 대기 시간이 짧은 프로세스가 오랫동안 기다리게 되는 경우가 발생할 수 있습니다.

우선순위 스케줄링

우선순위(Priority) 스케줄링은 각각의 프로세스에 우선순위를 부여하고, 우선순위가 높은 프로세스부터 CPU를 할당하는 방식입니다. 우선순위를 정하는 기준에는 CPU 사용량, 입출력 요구 등이 있습니다. 우선순위가 높은 작업이 먼저 CPU를 할당받지만, 우선순위가 낮은 작업이 무한정 기다리는 상황이 발생할 수 있습니다. 이를 해결하기 위해 aging 기법을 사용할 수 있습니다.

라운드 로빈 스케줄링

라운드 로빈(Round Robin) 스케줄링은 모든 프로세스가 동일한 시간 할당량(Time Quantum)을 가지고, 할당된 시간이 지나면 다른 프로세스에게 CPU를 넘기는 방식입니다. 일정 시간이 지나면 프로세스가 자동으로 종료되거나 다시 큐에 들어가게 됩니다. 이 방식은 각 프로세스가 CPU를 일정 시간 동안 사용할 수 있도록 보장하며, 응답 시간이 빨라지는 장점이 있습니다. 그러나 프로세스들의 수행 시간이 다를 경우, 일부 프로세스가 무한정 대기하는 상황이 발생할 수 있습니다.

profile
아아

0개의 댓글