[운영체제/OS] 5.
1. 스케줄링 기본 개념
💡 면접 대비: CPU 스케줄링의 목적과 기준은 OS 면접의 필수 주제입니다.
1.1 Queueing model
- 서버-요청 모델
- CPU-프로세스
- 디스크-I/O
- 프린터-작업
1.2 선점형 vs 비선점형 서버
- 비선점형(Nonpreemptible)
- 비선점 스케줄링만 허용
- 예: 디스크, 프린터
- 선점형(Preemptible)
- 선점/비선점 스케줄링 모두 허용
- 예: CPU
2. CPU 스케줄링 기준
2.1 스케줄링 기준
- CPU 중심 (시스템)
- CPU 이용률: CPU를 최대한 바쁘게 유지
- 처리량: 단위 시간당 완료되는 프로세스 수
- 프로세스 중심 (사용자)
- 반환 시간: 특정 프로세스 실행에 걸리는 시간
- 대기 시간: ready 큐에서 대기한 시간
- 응답 시간: 요청 제출부터 첫 응답까지의 시간
2.2 최적화 기준
- 최대화: CPU 이용률, 처리량
- 최소화: 반환 시간, 대기 시간, 응답 시간
3. 프로세스 동작 특성
💡 면접 대비: CPU-bound와 I/O-bound 프로세스의 특징과 차이점을 이해하는 것이 중요합니다.
3.1 CPU-I/O 사이클
- 프로세스는 CPU 사용과 I/O를 반복적으로 수행
- CPU burst와 I/O burst의 반복
- CPU-bound 프로세스는 I/O-bound 프로세스보다 긴 CPU burst
4. 스케줄링 알고리즘
4.1 FCFS (First-Come First-Served)
💡 면접 대비: 가장 기본적인 스케줄링 알고리즘으로, convoy effect를 설명할 수 있어야 합니다.
-
원리: 가장 오래 대기한 프로세스 선택
-
특징: 비선점형
- 문제점
- CPU 독점 가능성
- CPU-bound 프로세스 선호
- I/O 장치 활용도 저하
-
예시
-
Process Burst Time P1 24 P2 3 P3 3 P1, P2, P3 순서로 도착
Waiting time for P1 = 0; P2 = 24; P3 = 27
Average waiting time: (0 + 24 + 27)/3 = 17P2, P3, P1 순서로 도착
Waiting time for P1 = 6; P2 = 0; P3 = 3
Average waiting time: (6 + 0 + 3)/3 = 3이전 케이스보다 좋음.
-
4.2 Round Robin (RR)
- 원리: FCFS + 시간 할당량
- 특징
- 시분할 환경에 적합
- 문맥 교환 오버헤드 발생
- 시간 할당량 설정
- 문맥 교환 시간보다 충분히 커야 함
- 일반적인 상호작용보다 커야 함
-
예시
-
Process Burst Time P1 53 P2 17 P3 68 P4 24
-
4.3 SJF (Shortest Job First)
💡 면접 대비: 평균 대기 시간 관점에서 최적이지만, 실제 구현의 어려움을 설명할 수 있어야 합니다.
-
원리: 가장 짧은 CPU burst 시간 예측
- 유형
- 비선점형 SJF
- 선점형 SJF (SRTF: Shortest Remaining Time First)
- 특징
- 최적의 평균 대기 시간
- CPU burst 예측의 어려움
- 기아 현상 가능성
-
예시
-
Process Arrival Time Burst Time P1 0.0 7 P2 2.0 4 P3 4.0 1 P4 5.0 4
-
4.4 다단계 큐 스케줄링 (Multilevel Queue)
- 원리: 여러 개의 준비 큐를 다른 알고리즘으로 스케줄링
- 특징
- 각 큐마다 다른 스케줄링 알고리즘
- 큐 간 스케줄링 필요
4.5 다단계 피드백 큐 (MLFQ)
💡 MLFQ는 현대 OS에서 가장 널리 사용되는 스케줄링 방식입니다.
- 원리
- 프로세스가 큐 간 이동 가능
- 동적 우선순위
- 우선순위 큐들로 구성
5. 현대 운영체제의 스케줄링
5.1 Linux 스케줄링
- 특징
- 우선순위 기반, 시분할, 선점형
- POSIX.4 호환
- 실시간 및 일반 프로세스 지원
- 스케줄링 정책
- SCHED_FIFO: 고정 우선순위 실시간
- SCHED_RR: 시간 할당량이 있는 실시간
- SCHED_OTHER: 일반 프로세스
5.2 Windows 스케줄링
- 32단계 우선순위
- 실시간 우선순위 (16-31)
- 가변 우선순위 (1-15)
- 5개 우선순위 클래스
- High-priority-class
- Above-normal-priority-class
- Normal-priority-class
- Below-normal-priority-class
- Idle-priority-class
6. 스케줄링 알고리즘 평가
6.1 평가 방법
- 결정적 모델링
- 미리 정의된 작업부하 사용
- 간단하고 빠름
- 너무 구체적
- 큐잉 모델
- 수학적 분석
- 통계적 접근
- 시뮬레이션 분석
- 실제 시스템 추적 데이터 사용
- 가장 현실적인 평가 방법
참고 자료
- Operating System Concepts (10th Edition)
- Understanding the Linux Kernel
- Windows Internals (7th Edition)
댓글남기기