2-2. 프로세스 스케줄링 소개
프로세스 스케줄링 소개
프로세스 스케줄링은 운영체제의 핵심 기능 중 하나로, 시스템 자원을 효율적으로 관리하고 사용자의 체감 성능을 향상시키는 데 필수적인 기술입니다. 이 글에서는 프로세스 스케줄링의 기본적인 개념, 목적, 종류, 평가 지표를 살펴보고, 다양한 스케줄링 알고리즘의 기초를 다루어 보겠습니다.
1) 프로세스 스케줄링의 목적
운영체제는 여러 개의 프로세스를 동시에 실행하는 환경을 제공합니다. CPU, 메모리, I/O 장치와 같은 자원은 한정되어 있기 때문에, 이러한 자원을 효율적으로 할당하고 관리하는 것이 중요합니다. 프로세스 스케줄링의 주요 목적은 다음과 같습니다.
- CPU 이용률 극대화: CPU가 유휴 상태로 대기하는 시간을 최소화하여 CPU의 사용률을 높입니다.
- 공정성 보장: 모든 프로세스가 CPU를 사용할 기회를 공정하게 보장합니다. 특정 프로세스가 무한정으로 CPU를 독점하는 상황을 방지합니다.
- 응답 시간 최소화: 사용자의 요청에 대한 응답 시간을 최소화하여 시스템의 반응성을 향상시킵니다.
- 처리량 극대화: 단위 시간당 시스템이 처리하는 작업의 양을 최대화합니다.
- 오버헤드 최소화: 스케줄링 자체에 소요되는 시간과 자원을 최소화합니다.
2) 프로세스 스케줄링의 종류
프로세스 스케줄링은 크게 두 가지 유형으로 나눌 수 있습니다.
- 장기 스케줄러 (Long-term scheduler): 시스템에 어떤 프로세스를 얼마나 오랫동안 실행할지 결정합니다. 주로 프로세스의 생성과 관련된 작업을 처리하며, 시스템의 다중 프로그래밍의 정도를 조절합니다. 시스템에 과도한 프로세스가 생성되는 것을 방지하여 시스템의 안정성을 유지하는 역할을 합니다.
- 단기 스케줄러 (Short-term scheduler): CPU를 어떤 프로세스에 할당할지 결정합니다. CPU 스케줄러라고도 불리며, 프로세스 실행 빈도가 높기 때문에 스케줄링 속도가 매우 중요합니다.
- 중기 스케줄러 (Medium-term scheduler): 메모리 부족 시 프로세스를 일시적으로 메모리에서 제거(swap out)하고, 다시 메모리로 되돌리는(swap in) 작업을 수행합니다.
스와핑(swapping)을 통해 시스템의 부하를 조절하고, 다중 프로그래밍의 정도를 변화시킵니다.
3) 스케줄링 알고리즘의 평가 지표
스케줄링 알고리즘의 성능을 평가하기 위해 다음과 같은 지표들이 사용됩니다.
- CPU 이용률 (CPU utilization): CPU가 실제로 작업을 처리하는 시간의 비율을 나타냅니다. CPU 이용률이 높을수록 시스템의 효율성이 높다고 할 수 있습니다.
- 처리량 (Throughput): 단위 시간당 시스템이 처리하는 프로세스의 수입니다. 처리량이 높을수록 시스템의 성능이 우수하다고 평가할 수 있습니다.
- 반환 시간 (Turnaround time): 프로세스가 시스템에 도착하여 완료될 때까지 걸린 시간입니다. 반환 시간은 프로세스의
대기 시간(waiting time)과실행 시간(execution time)의 합으로 계산됩니다. - 대기 시간 (Waiting time): 프로세스가 CPU를 기다리는 시간의 총합입니다. 대기 시간이 짧을수록 프로세스가 CPU를 더 빨리 할당받았음을 의미합니다.
- 응답 시간 (Response time): 프로세스가 처음으로 CPU를 할당받아 응답을 시작하는 시간입니다. 응답 시간은 사용자 인터랙션의 반응성을 평가하는 데 중요한 지표입니다.
4) 스케줄링 알고리즘의 종류
다양한 스케줄링 알고리즘이 존재하며, 각 알고리즘은 CPU 자원을 할당하는 방식에 따라 서로 다른 성능을 보입니다. 주요 알고리즘은 다음과 같습니다.
-
FCFS (First-Come, First-Served): 먼저 도착한 프로세스 순서대로 CPU를 할당하는 방식입니다. 구현이 간단하지만, 짧은 작업이 긴 작업 뒤에 대기하는 경우
Convoy Effect가 발생하여 평균 대기 시간이 길어질 수 있습니다.
- SJF (Shortest Job First): CPU 사용 시간이 가장 짧은 프로세스에 먼저 CPU를 할당하는 방식입니다. 평균 대기 시간을 최소화하는 데 효과적이지만, CPU 사용 시간을 미리 예측해야 한다는 단점이 있습니다.
- SRT (Shortest Remaining Time): SJF의 선점형(preemptive) 버전으로, 현재 실행 중인 프로세스보다 남은 실행 시간이 짧은 프로세스가 도착하면 CPU를 빼앗아(preempt) 할당합니다. SJF보다 더 나은 성능을 보이지만, 문맥 교환(context switching) 오버헤드가 발생할 수 있습니다.
- Priority Scheduling: 각 프로세스에 우선순위를 부여하여 우선순위가 높은 프로세스에 먼저 CPU를 할당하는 방식입니다. 우선순위가 낮은 프로세스는 기아(starvation)상태에 빠질 수 있으며, 이를 해결하기 위해aging기법을 사용하기도 합니다. - Round Robin: 각 프로세스에 동일한시간 할당량(time quantum)을 부여하여, 시간 할당량이 만료되면 다음 프로세스에 CPU를 할당하는 방식입니다. 모든 프로세스가 공정하게 CPU를 사용할 기회를 얻지만, 시간 할당량이 너무 짧으면 문맥 교환 오버헤드가 증가하고, 너무 길면 FCFS와 유사해질 수 있습니다.
5) 스케줄링 알고리즘 선택 시 고려 사항
어떤 스케줄링 알고리즘을 선택할지는 시스템의 특성과 요구 사항에 따라 결정됩니다.
- 시스템의 종류: 배치 처리 시스템, 대화형 시스템, 실시간 시스템 등 시스템의 종류에 따라 적합한 스케줄링 알고리즘이 다릅니다.
- 성능 목표: 응답 시간, 처리량, 공정성 등 어떤 성능 지표를 우선적으로 고려할 것인지 결정해야 합니다.
- 오버헤드: 스케줄링 알고리즘의 실행에 따른 오버헤드를 고려하여, 성능 저하를 최소화해야 합니다.
- 알고리즘의 복잡성: 알고리즘의 구현 및 유지 보수의 용이성을 고려해야 합니다.
6) 스케줄링 알고리즘의 실제 활용 사례
다양한 운영체제에서 프로세스 스케줄링 알고리즘이 실제 활용되고 있습니다.
- Linux:
CFS (Completely Fair Scheduler)를 주로 사용합니다. CFS는 프로세스에 CPU 시간을 공정하게 분배하는 것을 목표로 하며,vruntime이라는 가상 실행 시간을 기반으로 스케줄링을 수행합니다. - Windows: 우선순위 기반의
preemptive스케줄링을 사용합니다. 각 프로세스에 우선순위를 할당하고, 우선순위가 높은 프로세스에 CPU를 할당합니다. - Real-time operating systems (RTOS): 실시간 시스템은 데드라인을 준수해야 하므로,
RM (Rate Monotonic),EDF (Earliest Deadline First)와 같은real-time scheduling알고리즘을 사용합니다.
7) 결론
프로세스 스케줄링은 운영체제의 핵심 기능으로, 시스템 자원의 효율적인 관리와 사용자 경험 향상에 중요한 역할을 합니다. 다양한 스케줄링 알고리즘의 특징을 이해하고, 시스템의 요구 사항에 맞는 알고리즘을 선택하는 것은 시스템 성능을 최적화하는 데 필수적입니다. 이 글에서 소개된 내용들을 바탕으로, 프로세스 스케줄링에 대한 이해를 높이고, 더 나아가 스케줄링 알고리즘 설계 및 구현에 대한 깊이 있는 연구를 지속하시길 바랍니다.
비슷한 글 추천
2-1. 프로세스 개념
프로세스의 정의, 상태, PCB(Process Control Block)를 설명합니다. 프로세스 관리에 필요한 기본 개념들을 다룹니다.
6-4. 페이지 교체 알고리즘 (Page Replacement Algorithms)
FIFO, OPT, LRU, LFU, MFU 등 페이지 교체 알고리즘을 설명하고, 성능을 비교합니다.
2-3. 선점형 vs 비선점형 스케줄링
선점형과 비선점형 스케줄링의 차이점을 비교하고, 각각의 장단점을 분석합니다.
6-3. 그래프: 사이클 탐지
무향/유향 그래프의 사이클 탐지 알고리즘, DFS 기반 구현, 시간 복잡도 분석.
Comments (0)
No comments yet. Be the first to comment!
Please to write a comment.