-
스케줄링 단계
상위단계 스케줄링 (Long-term Scheduling)
- 디스크에 있는 프로세스 중 어떤 프로세스를 메모리(Ready Queue)로 올릴지 결정
- 실행할 프로세스의 수를 조절하여 CPU 및 시스템의 부하를 관리
중간단계 스케줄링 (Medium-term Scheduling)
- 메모리 관리 기법 중 스와핑(Swapping)을 통해 일시적으로 실행 중인 프로세스를 메모리에서 제거(중단)하고 다시 실행할 프로세스를 선택
- CPU가 과부하 상태일 때 메모리 점유를 줄이기 위한 목적
하위단계 스케줄링 (Short-term Scheduling)
- CPU를 사용할 프로세스를 선택하여 실행하는 단계
- 실행 중인 프로세스가 종료되거나 인터럽트가 발생할 때 새로운 프로세스를 선택
스케줄링 목표
- 공정성(Fairness): 모든 프로세스가 공정하게 CPU를 할당받도록 함
- 균형: 시스템 자원이 충분히 활용될 수 있게 함
운영체제의 유형에 따른 스케줄링 목표
- 일괄처리 운영체제 : 처리량 극대화, 반환 시간 최소화, CPU 활용의 극대화
- 시분할 운영체제 : 빠른 응답시간, 과다한 대기시간 방지
- 실시간 운영체제: 처리기한 맞춤
선점 스케줄링 (Preemptive Scheduling)
- 실행 중인 프로세스에 인터럽트를 걸어 CPU를 다른 프로세스에 할당할 수 있는 방식.
- 운영체제가 우선순위가 높은 프로세스를 실행하기 위해 현재 실행 중인 프로세스를 중단할 수 있음.
- SRT, RR, 다단계 피드백 큐
비선점 스케줄링 (Non-preemptive Scheduling)
- 실행 중인 프로세스가 스스로 종료되거나 I/O 작업을 수행할 때까지 CPU를 계속 점유하는 방식.
- 실행 중인 프로세스를 중간에 강제로 중단할 수 없음.
- FCFS, SJF, HRN..
문맥(Context)
- 현재 실행 중인 프로세스의 CPU 레지스터, 프로그램 카운터, 스택 정보 등의 상태.
- 프로세스가 실행을 멈추고 다시 실행될 때 이전 상태를 복원할 수 있도록 관리됨.
Context Switching (문맥 교환)
- CPU가 실행 중인 프로세스를 변경할 때 발생하는 과정으로, 이전 프로세스의 문맥을 저장하고 새로운 프로세스의 문맥을 복원하는 작업.
- 오버헤드(Overhead)가 발생하여 너무 잦은 Context Switching은 성능 저하를 유발할 수 있음.
스케줄링 평가 기준
평균 대기 시간(Average Waiting Time)
- 프로세스가 CPU를 할당받기까지 준비 큐에서 대기한 총 시간의 평균값
$$
\text{평균 대기 시간} = \frac{\sum (\text{프로세스의 대기 시간})}{\text{총 프로세스 수}}
$$평균 반환 시간(Average Turnaround Time)
- 프로세스가 처리 완료되기까지 걸린 총 시간(대기 시간 + 실행 시간)
$$
\text{평균 반환 시간} = \frac{\sum (\text{프로세스 완료 시간} - \text{프로세스 도착 시간})}{\text{총 프로세스 수}}
$$
주요 스케줄링 알고리즘
1. FCFS (First Come First Serve) - 선입선출
- 준비 큐에 도착한 순서대로 CPU를 할당하는 방식 (비선점)
- 단점: 실행 시간이 긴 프로세스가 먼저 도착하면 기다리는 프로세스의 대기 시간이 증가
도착 순서: P1(8ms), P2(4ms), P3(2ms)
실행 순서: P1 → P2 → P32. SJF (Shortest Job First) - 최단 작업 우선
- 실행 시간이 가장 짧은 프로세스를 먼저 실행하는 방식 (비선점)
- 일괄처리 환경에서 구현하기 쉬우나, 실행 시간이 긴 프로세스는 무한정 대기할 수도 있음
실행 순서: P3(2ms) → P2(4ms) → P1(8ms)
3. SRT (Shortest Remaining Time) - 최단 잔여 시간 우선
- SJF의 선점형 버전으로, 남은 실행 시간이 가장 짧은 프로세스를 우선 실행
- 새로운 프로세스가 도착하면 실행 중인 프로세스보다 실행 시간이 짧으면 교체됨
- SJF보다 평균대기시간이나 평균반환시간에서 효율적이나 SJF 보다 오버헤드가 큼
실행 순서: P3(도착) → P2(남은 시간 짧음, 교체) → P1
4. RR (Round Robin) - 라운드 로빈
- 각 프로세스에 일정한 시간 할당량(Time Quantum)을 적용하여 실행 (선점)
- Time Quantum이 너무 작으면 Context Switching이 빈번하게 발생하여 성능 저하
5. HRN (Highest Response Ratio Next) - 최고 응답 비율 우선
- 응답 비율(Response Ratio)이 가장 높은 프로세스를 우선 실행 (비선점).
- $$
\text{응답 비율} = \frac{\text{대기 시간} + \text{실행 시간}}{\text{실행 시간}}
$$ - 실행 시간이 짧은 프로세스와 오래 기다린 프로세스를 균형 있게 실행 가능.
대기 시간 10ms, 실행 시간 2ms → 응답 비율 = (10+2)/2 = 6 (높은 값이 우선)
6. 다단계 피드백 큐 (Multilevel Feedback Queue)
- 여러 개의 우선순위 큐를 사용하여 프로세스를 관리 (선점).
- 처음에는 높은 우선순위의 큐에서 실행하며, 일정 시간을 초과하면 낮은 우선순위 큐로 이동.
- I/O 중심 프로세스(짧은 작업)가 CPU 중심 프로세스(긴 작업)보다 우선권을 갖도록 설계.
- 짧은 작업 → 높은 우선순위 큐에서 실행.
- 오래 실행된 작업 → 낮은 우선순위 큐로 이동.
정리
알고리즘 방식 특징 FCFS 비선점 먼저 온 순서대로 실행 SJF 비선점 실행 시간이 가장 짧은 작업 우선 SRT 선점 남은 실행 시간이 가장 짧은 작업 우선 RR 선점 일정 시간(Time Quantum) 단위로 실행 HRN 비선점 응답 비율이 높은 프로세스 우선 다단계 피드백 큐 선점 우선순위 큐를 사용하여 관리 'CS > 운영체제' 카테고리의 다른 글
메모리 관리와 가상 메모리 (0) 2025.04.29 교착상태(Deadlock) (0) 2025.04.16 병행 프로세스(2) - 생산자-소비자, 판독기-기록기, IPC (0) 2025.03.31 병행 프로세스 (1) - 협력 프로세스, 세마포어 연산 (0) 2025.03.20 운영체제의 소개 & 프로세스와 쓰레드 (0) 2025.02.27 댓글