프로그래밍공부(Programming Study)/CS-운영체제(OS)

OSTEP: 4. The Abstraction: The Process

Chann._.y 2025. 10. 7.
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

댓글