728x90
CPU를 어떤 프로세스에 할당할지 결정하는 작업
CPU 스케줄링의 목적
- 공정성(Fairness): 모든 프로세스가 공평하게 CPU 자원을 사용할 수 있도록 합니다.
- CPU 활용률 극대화: CPU가 유휴 상태로 있지 않고, 최대한 많은 작업을 처리할 수 있도록 합니다.
- 응답 시간 최소화: 사용자 인터랙션이 필요한 경우, 빠른 응답 시간을 보장합니다.
- 처리율 최적화: 주어진 시간 동안 최대한 많은 작업을 완료할 수 있도록 합니다.
- 대기 시간 최소화: 프로세스가 대기열에서 기다리는 시간을 줄입니다.
CPU 스케줄링 방식
CPU 스케줄링 방식은 크게 **비선점형(Non-Preemptive)**과 **선점형(Preemptive)**으로 나뉩니다.
비선점형 스케줄링
- 개념: 한 번 CPU를 할당받은 프로세스는 작업이 완료될 때까지 CPU를 점유합니다.
- 장점: 단순한 구조로, 프로세스가 종료될 때까지 작업이 중단되지 않습니다.
- 단점: CPU를 오래 사용하는 프로세스가 있으면, 다른 프로세스는 CPU를 대기하게 되어 전체 성능이 저하될 수 있습니다.
선점형 스케줄링
- 개념: 프로세스가 CPU를 점유하고 있는 도중에 더 높은 우선순위의 프로세스가 CPU를 요구하면, 현재 프로세스를 중단하고 새로운 프로세스에 CPU를 할당합니다.
- 장점: 응답 시간을 줄일 수 있어 실시간 응답이 필요한 시스템에서 효과적입니다.
- 단점: 잦은 스위칭으로 인한 오버헤드가 발생할 수 있습니다.
주요 CPU 스케줄링 알고리즘
- FCFS (First-Come, First-Served):
- 방식: 도착한 순서대로 CPU를 할당합니다.
- 특징: 단순하고 공정하지만, 대기 시간이 길어질 수 있습니다. 특히 긴 작업이 먼저 오면 이후 작업의 대기 시간이 늘어나는 Convoy Effect가 발생할 수 있습니다.
- SJF (Shortest Job First):
- 방식: 남은 CPU 실행 시간이 가장 짧은 프로세스에 우선적으로 CPU를 할당합니다.
- 특징: 평균 대기 시간을 최소화할 수 있지만, 실행 시간이 짧은 프로세스를 예측하기 어려우며, 긴 작업이 뒤로 밀리면 **기아(Starvation)**가 발생할 수 있습니다.
- 우선순위 스케줄링 (Priority Scheduling):
- 방식: 각 프로세스에 우선순위를 부여하고, 우선순위가 높은 프로세스에 CPU를 먼저 할당합니다.
- 특징: 중요한 작업을 우선 처리할 수 있으나, 낮은 우선순위의 프로세스는 CPU를 할당받지 못해 기아 문제가 발생할 수 있습니다. 이를 해결하기 위해 에이징(Aging) 기법을 사용하여 대기 시간이 길어진 프로세스의 우선순위를 높일 수 있습니다.
- 라운드 로빈 (Round Robin):
- 방식: 프로세스에 **고정된 시간 할당량(Time Quantum)**을 주고, 그 시간 동안만 CPU를 사용하게 한 후, 시간 초과 시 다음 프로세스로 교체합니다.
- 특징: 응답 시간을 최적화하여 공정성을 보장하므로, 다중 사용자 시스템에 적합합니다. 그러나 할당 시간이 너무 짧으면 문맥 교환 오버헤드가 커질 수 있습니다.
- 다단계 큐 스케줄링 (Multilevel Queue Scheduling):
- 방식: 프로세스의 특성에 따라 여러 개의 큐로 분류하고, 각 큐마다 우선순위와 스케줄링 방식을 따로 적용합니다.
- 특징: 예를 들어, 실시간 작업 큐는 우선순위가 높고 짧은 시간 할당량을 적용할 수 있습니다. 큐 간 이동이 불가능해 각 큐에 적합한 프로세스만 효율적으로 처리할 수 있습니다.
- 다단계 피드백 큐 스케줄링 (Multilevel Feedback Queue Scheduling):
- 방식: 다단계 큐 스케줄링과 비슷하지만, 프로세스가 큐 간에 이동할 수 있습니다. 처음에는 높은 우선순위 큐에 배치하지만, 반복적으로 CPU를 차지하는 프로세스는 점차 낮은 우선순위의 큐로 이동하게 합니다.
- 특징: 유연성이 높고, 긴 작업과 짧은 작업을 효율적으로 처리합니다. 우선순위와 큐 이동 기준을 설정하기 까다로울 수 있습니다.
요약
- CPU 스케줄링의 목표는 응답 시간, 대기 시간, 처리율 등을 최적화하여 시스템의 성능을 높이는 것입니다.
- 알고리즘 종류: FCFS, SJF, 우선순위 스케줄링, 라운드 로빈, 다단계 큐 스케줄링 등 다양한 알고리즘이 사용됩니다.
- 선점형/비선점형: 시스템 특성에 따라 선점형 또는 비선점형 방식을 선택해 CPU 자원을 할당할 수 있습니다.
CPU 스케줄링은 각 작업의 우선순위와 효율성을 고려해 선택하며, 시스템의 요구에 맞는 최적의 스케줄링 알고리즘을 사용하는 것이 중요합니다.
728x90
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 메모리 단편화(Memory Fragmentation) (0) | 2024.10.31 |
---|---|
[운영체제] 페이지 교체 알고리즘 (0) | 2024.10.31 |
[운영체제] 교착상태(Deadlock, 데드락)의 정의, 발생 조건, 해결 방법 (0) | 2024.10.31 |
[운영체제] 시스템 콜(System Call) (0) | 2024.10.31 |
[운영체제] 인터럽트(Interrupt) (0) | 2024.10.31 |