CPU burst time λΆν¬
β IO bound job(CPUλ₯Ό μ‘κ³ κ³μ°νλ μκ°λ³΄λ€ IOμ λ§μ μκ°μ΄ νμν job) μ λΉλκ° λ§μ§λ§ CPU λ₯Ό μ§§κ² μ΄λ€. CPU bound job(κ³μ° μμ£Όμ job) μ λΉλκ° μ μ§λ§ CPU λ₯Ό κΈΈκ² μ΄λ€. job μ μ’
λ₯κ° μμ¬μλ€.
β μ¬λ¬ μ’
λ₯μ job(process)μ΄ μμ¬ μκΈ°λλ¬Έμ CPU μ€μΌμ₯΄λ§μ΄ νμ
CPU Scheduler
β’
ready μνμ νλ‘μΈμ€ μ€ CPU λ₯Ό μ€ νλ‘μΈμ€λ₯Ό κ³ λ₯Έλ€.
β’
μ΄μ 체μ μμμ cpu scheduling μ νλ μ½λκ° μλ€.
β’
μ΄λ€ νλ‘μΈμ€μ μ€ κ²μΈμ§, μ€κ°μ μΈμ λΊμ κ²μΈμ§ λ κ°μ§ μ΄μ
Dispatcher
β’
CPU μ μ μ΄κΆμ CPU Scheduler μ μν΄ μ νλ νλ‘μΈμ€μκ² λκΈ΄λ€.
β’
μ΄ κ³Όμ μ context switching
CPU μ€μΌμ₯΄λ§μ΄ νμν κ²½μ°
β’
Running β Blocked
β¦
IO μμ²νλ μμ€ν
μ½
β’
Running β Ready
β¦
timer interrupt
β’
Blocked β Ready
β¦
IO μλ£ ν interrupt
β’
Terminate
β’
preemptive(κ°μ λ‘ λΉΌμμ, μ μ ν) vs non-preemptive(μμ§ λ°λ©, λΉμ μ ν)
Scheduling Criteria(Performance Index)
β’
CPU utilization(μ΄μ©λ₯ )
β¦
keep the CPU as busy as possible
β’
Throughput(μ²λ¦¬λ)
β¦
complete processesβ execution per time unit
β’
Turn-around time(μμ μκ°)
β¦
amount of time to execute a particular process
β’
Waiting time(λκΈ° μκ°)
β¦
amount of time a process has been waiting in the ready queue
β’
Response time(μλ΅ μκ°)
β¦
νλμ μμ²μ΄ submit λκ³ μλ΅μ΄ produce λ λκΉμ§ κ±Έλ¦° μκ°, not output
β¦
μ¬μ©μ μλ΅κ³Ό κ΄λ ¨νμ¬ μ€μνκΈ°λλ¬Έμ μ‘΄μ¬
β λκΈ° μκ°μ queue μμ μ΄ κΈ°λ€λ¦° μκ°, μλ΅ μκ°μ μ²μ queue μ λ€μ΄μμ μ²μ CPU λ₯Ό μ»κΈ°κΉμ§ κΈ°λ€λ¦° μκ°, μμ μκ°μ CPUμ λ€μ΄μμ λκ° λκΉμ§ μ΄ κ±Έλ¦° μκ°
β’
μ λκ°λ μμ€ν
μ, μλ μΈκ°λ νλ‘μΈμ€ μ
β’
β μ€κ΅μ§ μ£Όλ°©μ₯, μλ μμ
β’
FCFS(First Come First Served)
β¦
average waiting time = (0 + 24 + 27) / 3 = 17
β¦
νλ‘μΈμ€ λμ°© μμμ λ°λΌ variation(λΆμ°) μ΄ ν¬λ€.
β¦
μν, νμ₯μ€ μμ
β¦
λΉμ μ ν
β¦
λΉν¨μ¨μ , 곡νν¨
β¦
convoy effect: short process behind long process
β’
SJF(Shortest Job First)
β¦
CPU μ¬μ© μκ°μ΄ κ°μ₯ 짧μ νλ‘μΈμ€λ₯Ό λ¨Όμ μ€μΌμ₯΄
β¦
μ 체 queue κ° μ€μ΄λλ ν¨κ³Ό
β¦
minimum average waiting time 보μ₯
β¦
two schemes
βͺ
λΉμ μ ν
β’
μΌλ¨ CPU λ₯Ό μ‘μΌλ©΄ CPU burst κ° μλ£λ λκΉμ§ CPU λ₯Ό λμ§ μμ
βͺ
μ μ ν
β’
νμ¬ μνμ€μΈ νλ‘μΈμ€μ λ¨μ burst time λ³΄λ€ λ 짧μ CPU burst time μ κ°μ§λ νλ‘μΈμ€κ° λμ°©νλ©΄ CPU λ₯Ό λΉΌμκΉ
β’
μ΄ λ°©λ²μ SRTF(Shortest Remaining Time First)
βͺ
λΉμ μ νμ CPU μ¬μ©μ΄ μλ£ λμ λ μ€μΌμ₯΄λ§, μ μ νμ λμ°©, μλ£ λ λ€ μ€μΌμ₯΄λ§
β¦
λ¬Έμ 1: starvation(κΈ°μ νμ) λ°μ κ°λ₯
β¦
λ¬Έμ 2: CPU burst time μ μμΈ‘ν μ μλ νλ‘μΈμ€κ° μλ€.
βͺ
κ³Όκ±° μ¬μ© νμ μΌλ‘ μμΈ‘(exponential averaging)
βͺ
λ³΄ν΅ interactive IO λ μ§§κ³ , κ³μ°νλ νλ‘μΈμ€λ κΈΈλ€.
β’
Priority Scheduling
β¦
μ μλ‘ μ°μ μμκ° μ£Όμ΄μ§
β¦
μμ μκ° μ°μ μμκ° λμ κ²
β¦
λ¬Έμ : starvation
β¦
ν΄κ²°μ±
: aging λ°©μ, μ€λλλ©΄ μ°μ μμλ₯Ό λμΈλ€.
β’
Round Robin
β¦
νλμ μΈ CPU μ€μΌμ₯΄λ§μ RR μ κΈ°λ°
β¦
κ° νλ‘μΈμ€λ λμΌ ν¬κΈ°μ CPU ν λΉ μκ°(time quantum)μ κ°μ§λ€. μΌλ°μ μΌλ‘ 10-100 ms
β¦
μ₯μ : μλ΅ μκ°(response time)μ΄ λΉ λ₯΄λ€.
β¦
ν λΉ μκ°μ΄ λλλ©΄ μΈν°λ½νΈκ° λ°μν΄μ CPUλ₯Ό λΉΌμκΈ°κ³ μμ§ μ²λ¦¬κ° λμ§ μμλ€λ©΄ νμ μ μΌ λ€μ κ°μ λκΈ°
β¦
ν λΉ μκ°μ΄ κΈΈλ©΄ FCFS, ν λΉ μκ°μ΄ 짧μΌλ©΄ context switch κ° λΉλ²νκ² λ°μνμ¬ μ€λ²ν€λκ° μ»€μ§
β¦
n κ°μ νλ‘μΈμ€κ° CPU νμ μλ κ²½μ°
βͺ
μ΅λ (n-1) * ν λΉμκ°
βͺ
λκΈ°μκ°μ΄ νλ‘μΈμ€μ CPU μ¬μ© μκ°μ λΉλ‘
β¦
μμ
Multi-level Queue
β’
Ready queue λ₯Ό μ¬λ¬ κ°λ‘ λΆν
β¦
foreground(interactive)
β¦
background(batch)
β’
κ° νλ λ
립μ μΈ μ€μΌμ₯΄λ§ μκ³ λ¦¬μ¦
β¦
foreground - RR
β¦
background - FCFS
β’
νμ λν μ€μΌμ₯΄λ§
β¦
Fixed priority scheduling
βͺ
starvation
β¦
time slice
βͺ
κ° νμ CPU time μ μ μ ν λΉμ¨λ‘ ν λΉ
Multi-level Feedback Queue
β’
νλ‘μΈμ€κ° λ€λ₯Έ νλ‘ μ΄λ κ°λ₯
β’
aging λ°©μ
β’
CPU μ¬μ© μκ°μ΄ 짧μ νλ‘μΈμ€μκ² μ°μ μμλ₯Ό λκ² μΉ¨
β’
μ¬μ© μκ° μμΈ‘ λΆνμ
Multi-Processor Scheduling
β’
CPU κ° μ¬λ¬ κ°μΈ κ²½μ° λ³΅μ‘ν΄μ§
β’
homogeneous processor
β¦
queue λ₯Ό νμ€λ‘ μΈμ°κΈ°
β¦
νΉμ νλ‘μΈμμμ μνλμ΄μΌ νλ νλ‘μΈμ€κ° μλ κ²½μ°(λ―Έμ©μ€ μ λ΄ λμμ΄λ μμ)
β’
load sharing
β¦
λΆν μ‘°μ
β¦
λ³κ°μ ν vs 곡λ ν
β’
symmetric multiprocessing
β¦
κ° νλ‘μΈμκ° κ°μ μμμ μ€μΌμ₯΄λ§
β’
asymmetric multiprocessing
β¦
νλμ νλ‘μΈμκ° μμ€ν
λ°μ΄ν° μ κ·Ό, 곡μ μ±
μ
β¦
λλ¨Έμ§ νλ‘μΈμλ κ±°κΈ°μ λ°λ¦
Real-Time Scheduling
β’
deadline μ΄ μλ job
β’
μ ν΄μ§ μκ°μμ μΌμ΄ μνλμ΄μΌ νλ job
β’
hard real time system
β¦
μ ν΄μ§ μκ° μμ λ°λμ λλ΄λ μ€μΌμ₯΄λ§
β’
soft real time computing
β¦
μΌλ° νλ‘μΈμ€λ³΄λ€ λμ priority
Thread Scheduling
β’
local scheduling
β¦
user level thread μ κ²½μ° μ¬μ©μ νλ‘μΈμ€κ° μ§μ thread λ₯Ό κ΄λ¦¬νκ³ μ΄μ 체μ λ μ°λ λμ μ‘΄μ¬λ₯Ό λͺ¨λ¦
β¦
μ¬μ©μ νλ‘μΈμ€κ° μ°λ λμ μ€μΌμ₯΄μ κ²°μ ν¨
β’
global scheduling
β¦
kernel level thread μ κ²½μ° μ΄μ 체μ κ° μ°λ λμ μ‘΄μ¬λ₯Ό μκ³ μλ€.
β¦
μ΄μ 체μ κ° νλ‘μΈμ€ μ€μΌμ₯΄λ§ νλ―μ΄ μ°λ λμ μ€μΌμ₯΄ κ²°μ
Algorithm Evaluation
β’
queueing model
β¦
μ΄λ‘ μ μ
β¦
νλ₯ λΆν¬λ‘ μ£Όμ΄μ§λ arrival rate μ service rate λ±μ ν΅ν΄ κ°μ’
performance index κ°μ κ³μ°
β’
implementation & measurement
β¦
μ€μ μμ€ν
μ μκ³ λ¦¬μ¦μ ꡬννμ¬ μ€μ μμ
μ λν΄ μ±λ₯ μΈ‘μ λ° λΉκ΅
β’
simulation
β¦
λͺ¨μ νλ‘κ·Έλ¨μΌλ‘ μμ± ν λλ―Έ λ°μ΄ν°λ₯Ό λ£μ΄ κ²°κ³Ό μΈ‘μ