![프로세스 스케줄링(Process Scheduling)](https://q-a.kr/wp-content/uploads/2025/01/19.png)
프로세스 스케줄링(Process Scheduling), 운영체제가 CPU와 기타 자원을 여러 프로세스에 효과적으로 배분하는 기법을 의미합니다. 운영체제는 한정된 자원을 최적화하여 시스템의 성능을 극대화하고, 응답 속도를 개선하며, 공정성을 유지하는 것을 목표로 합니다.
할당 대상에 따른 스케줄링 분류
프로세스 스케줄링은 자원의 할당 대상에 따라 크게 세 가지로 분류할 수 있습니다.
장기 스케줄링(Long-Term Scheduling)
-
시스템에 새로운 프로세스를 생성할 때 결정되는 스케줄링 방식입니다.
-
작업(Job) 스케줄링이라고도 불리며, 어떤 프로세스를 실행할 것인지 결정합니다.
-
주요 목표는 다중 프로그래밍의 정도를 제어하는 것입니다.
-
빈도가 낮고, 주로 배치 처리 시스템에서 사용됩니다.
중기 스케줄링(Mid-Term Scheduling)
-
실행 중이지만 대기 중인 프로세스를 일시적으로 메모리에서 제거하거나 다시 불러오는 스케줄링 방식입니다.
-
스왑(Swapping) 기법을 활용하여 메모리 활용도를 높입니다.
-
운영체제가 메모리 자원의 최적화를 위해 특정 프로세스를 디스크로 내보냈다가 다시 불러오는 역할을 합니다.
단기 스케줄링(Short-Term Scheduling)
-
CPU 스케줄링이라고도 하며, 실행 가능한 프로세스 중에서 어떤 프로세스를 CPU에서 실행할 것인지 결정합니다.
-
매우 빈번하게 실행되며, 운영체제의 성능에 직접적인 영향을 미칩니다.
-
프로세스의 상태가 준비(Ready) 상태에서 실행(Running) 상태로 전환될 때 적용됩니다.
강제 중단 여부에 따른 스케줄링 분류
CPU 스케줄링 기법은 프로세스가 강제로 중단될 수 있는지 여부에 따라 두 가지로 나뉩니다.
비선점(Non-Preemptive) 스케줄링
-
한 프로세스가 CPU를 점유하면, 해당 프로세스가 종료될 때까지 CPU를 다른 프로세스에 양보하지 않습니다.
-
문맥 전환(Context Switching)이 적어 오버헤드가 낮습니다.
종류
- FIFO(First In First Out)
- SJF(Shortest Job First)
- HRN(Highest Response Ratio Next)
선점(Preemptive) 스케줄링
-
실행 중인 프로세스가 CPU를 점유하고 있더라도, 더 높은 우선순위를 가진 프로세스가 등장하면 실행 중인 프로세스가 강제로 중단될 수 있습니다.
-
빠른 응답성과 공정한 자원 분배가 가능하지만, 문맥 전환 비용이 발생합니다.
종류
-
Round Robin(RR)
-
SRT(Shortest Remaining Time)
-
MFQ(Multilevel Feedback Queue)
프로세스 스케줄링 원칙
운영체제는 여러 스케줄링 정책을 조합하여 시스템의 성능을 최적화합니다. 일반적인 스케줄링 원칙은 다음과 같습니다.
-
공정성(Fairness)
-
모든 프로세스가 CPU를 사용할 기회를 공정하게 부여받아야 합니다.
-
-
응답 시간 최소화(Response Time Minimization)
-
대화형(interactive) 시스템에서 사용자 요청에 대한 응답 시간을 최소화해야 합니다.
-
-
처리량 최대화(Throughput Maximization)
-
단위 시간당 실행되는 프로세스 수를 최대화하여 시스템의 생산성을 높입니다.
-
-
CPU 이용률 극대화(CPU Utilization Maximization)
-
CPU가 유휴 상태(idle)로 남아 있는 시간을 최소화하여 성능을 극대화합니다.
-
-
대기 시간 최소화(Waiting Time Minimization)
-
프로세스가 실행을 기다리는 시간을 최소화해야 합니다.
-
-
우선순위 기반 스케줄링(Priority Scheduling)
-
중요한 프로세스는 더 빠르게 실행될 수 있도록 우선순위를 고려하여 스케줄링합니다.
-
-
기아(Starvation) 방지
-
우선순위가 낮은 프로세스가 무한정 대기하지 않도록 보장하는 정책(예: 에이징(Aging) 기법) 적용이 필요합니다.
-
결론
프로세스 스케줄링은 시스템의 성능을 최적화하고 공정성을 유지하기 위해 매우 중요한 역할을 합니다. 장기, 중기, 단기 스케줄링을 적절히 활용하고, 선점형과 비선점형 스케줄링 기법을 상황에 맞게 조합하여 적용하면, 운영체제의 효율성을 극대화할 수 있습니다. 또한, 스케줄링 원칙을 준수하여 응답 시간과 대기 시간을 최소화하고, 시스템의 처리량을 극대화하는 것이 중요합니다.
[…] 프로세스 스케줄링(Process Scheduling) […]