728x90
이 글은 OSTEP(Operating Systems: Three Easy Pieces)의 ‘The Abstraction: The Process’ 문서를 직접 읽고 정리한 내용이다.
1) CPU 스케줄링이 풀 문제
- 다수의 프로그램(프로세스/스레드)이 동시에 CPU를 원한다.
- 운영체제(OS)의 스케줄러는 “다음에 누구를 실행할지”를 결정해 성능과 체감 반응성을 좌우한다.
- 핵심은 정책(policy) 와 메커니즘(mechanism):
- 정책: 어떤 기준으로 순서를 정할까?
- 메커니즘: 선점/타이머/큐 등 어떤 도구로 실행·중단을 구현할까?
2) 워크로드 모델과 기초 용어
- 작업(Job / Process / Thread): 실행 단위. CPU 버스트(계산)와 I/O 대기 시간이 번갈아 나타난다.
- 선점(Preemption): 타이머 인터럽트 등으로 강제로 CPU를 빼앗아 다른 작업으로 전환.
- 비선점(Non-preemptive): 현재 작업이 스스로 CPU를 양보할 때까지 기다린다.
- 큐(Ready Queue): CPU를 기다리는 러너블 작업들의 집합.
- 컨텍스트 스위치: 실행 중인 작업을 바꾸는 동작. 오버헤드가 존재한다.
3) 목표 지표(메트릭)
- 턴어라운드 시간(Turnaround time):
완료 시각 - 도착 시각
→ 일괄(batch) 처리의 효율, 총 소요시간 단축을 중시할 때 본다. - 응답 시간(Response time):
첫 실행(첫 응답) 시각 - 도착 시각
→ 대화형/온라인 시스템에서 체감 반응성의 핵심. - 공정성(Fairness): 특정 작업이 과도하게 지연되지 않게 기회 균형을 맞추는 것.
- 처리량/자원 활용률: 단위 시간에 처리되는 작업 수, CPU의 놀지 않는 시간 최소화.
Opinion: 현실에서는 “한 가지 지표”보다 목표의 트레이드오프를 관리하는 설계가 중요하다. 예: 응답성을 위해 컨텍스트 스위치를 늘리면 오버헤드가 증가한다.
4) 베이스라인: FIFO(FCFS)
- 정의: 도착 순서대로 먼저 온 작업을 먼저 처리(First-Come, First-Served). 비선점이 일반적.
- 장점: 구현이 매우 단순, 오버헤드 최소.
- 단점: Convoy Effect(호위 현상) — 긴 작업 하나가 앞에 서면 뒤의 짧은 작업이 줄줄이 대기해 평균 대기/응답이 악화.
간단 예시(도착 동시에 A,B,C; CPU 버스트: A=6, B=2, C=1)
- FIFO 순서: A(6) → B(2) → C(1)
- C는 7단위나 기다린 뒤 1단위 실행 ⇒ 짧은 작업의 응답성이 매우 나쁨.
5) 평균 완료시간 최적화: SJF(Shortest Job First)
- 정의: 가장 짧은 작업을 먼저 실행(보통 비선점).
- 효과: 평균 턴어라운드 시간을 최소화하는 이상적 정책(작업 길이를 안다고 가정).
- 단점: 실제로는 정확한 실행 길이를 미리 알기 어렵다(추정 필요). 긴 작업의 기아(Starvation) 가능성.
6) SJF의 선점형 확장: STCF(Shortest Time-to-Completion First)
- 정의: 남은 실행 시간이 가장 짧은 작업을 항상 우선(선점).
- 동작: 새로 들어온 작업이 현재 작업보다 남은 시간이 짧으면 즉시 선점.
- 장점: 평균 턴어라운드가 SJF보다 더 좋아질 수 있다(동적 도착 고려).
- 단점: 길이 추정의 어려움, 빈번한 선점으로 컨텍스트 스위치 오버헤드 증가, 긴 작업 기아 위험.
7) 반응성 우선: 라운드 로빈(Round-Robin, RR)
- 정의: 준비 큐를 순환하며 각 작업에 고정 타임슬라이스(퀀텀) 를 준다(선점).
- 장점: 모든 작업이 짧은 대기 후 한 번씩 CPU를 받는다 → 응답 시간 개선, 공정성 향상.
- 단점: 슬라이스가 너무 작으면 오버헤드 증가(스위치 빈번), 너무 크면 FIFO에 가까워져 반응성 악화.
타임슬라이스 선택 감각
- 슬라이스가 작을수록 응답성↑, 오버헤드↑
- 슬라이스가 클수록 오버헤드↓, 응답성↓
- 실전에서는 I/O 주기, 컨텍스트 스위치 비용, 캐시 지역성 등을 고려해 경험적 최적값을 찾는다.
8) 예측(Estimation)과 스케줄링
- 완벽한 SJF/STCF를 위해선 “앞으로 얼마나 실행하나”를 알아야 한다.
- 현실에서는 과거 버스트의 이동평균 등으로 길이를 추정하거나, 우선 RR과 혼합해 짧은 작업 혜택을 주는 하이브리드가 쓰인다.
Opinion: CI 파이프라인/배치 잡에서는 실행 로그로 작업 길이를 학습해 SJF/STCF류 우선순위를 보정하면 평균 완료시간을 크게 낮출 수 있다.
9) I/O와 CPU의 교차(버스트 특성)
- 많은 작업은 CPU 버스트 ↔ I/O 대기가 교차한다.
- 스케줄러는 I/O로 막힌 작업을 피해 CPU를 놀리지 않게 다른 작업으로 전환해야 한다.
- RR 같은 선점형 정책은 I/O가 잦은 인터랙티브 작업의 빠른 재진입에 유리하다.
10) 공정성과 기아 방지
- SJF/STCF는 평균 완료시간 최적화에 탁월하지만, 긴 작업이 계속 밀려나는 기아 위험이 있다.
- RR은 모든 작업에 기회 균등을 보장하나, 평균 완료시간 측면에서 비효율적일 수 있다.
- 해결책 예시: 에이징(Aging)(대기 시간이 길수록 우선순위 ↑), 혼합 정책(가중 RR, 다단계 피드백 등).
11) 정책 비교 한눈에 보기
| 정책 | 선점성 | 강점 | 약점 | 주로 최적화 |
|---|---|---|---|---|
| FIFO(FCFS) | 비선점 | 단순, 오버헤드 최소 | Convoy 효과, 응답성 나쁨 | 구현 단순성 |
| SJF | 보통 비선점 | 평균 완료시간 최소화(이상적) | 길이 미지, 기아 가능 | 평균 완료시간 |
| STCF | 선점 | 동적 도착에서도 평균 완료시간 우수 | 과도한 선점/기아 위험 | 평균 완료시간 |
| RR | 선점 | 응답성/공정성, 기아 방지 | 오버헤드·평균 완료시간 손해 | 응답 시간/공정성 |
12) 메커니즘: 타이머와 컨텍스트 스위치
- 타이머 인터럽트: 선점형 정책의 핵심. 슬라이스 만료 시 OS가 개입해 다른 작업으로 전환.
- 컨텍스트 스위치: 레지스터/PC/메모리 맵 등 저장·복
728x90
'프로그래밍공부(Programming Study) > CS-운영체제(OS)' 카테고리의 다른 글
| OSTEP: 6. Mechanism: Limited Direct Execution (0) | 2025.10.09 |
|---|---|
| OSTEP: 5. Interlude: Process API (0) | 2025.10.08 |
| OSTEP: 9. Scheduling: Proportional Share (0) | 2025.10.07 |
| OSTEP: 8. Scheduling:The Multi-Level Feedback Queue (0) | 2025.09.23 |
| OSTEP: 7. Scheduling: Introduction (0) | 2025.09.22 |

댓글