OS) CPU Scheduling
๐ CPU-Burst time
- ํ๋ก์ธ์ค์ ์คํ์
CPU
๋ฅผ ์ป์ด์ ์์ ์ ์ํํ๋ ๊ฒ๊ณผI/O
์์ ์ ์ํํ๋ ๊ฒ์ผ๋ก ๋๋ ์ ์๋ค. - ์ด ๋
CPU
๋ง ์ฐ๋ฉด์Instruction
์ ์คํํ๋ ๋จ๊ณ๋CPU burst
๋ผ ํ๊ณI/O
๋ง ์คํํ๋ ๋จ๊ณ๋I/O burst
๋ผ ํ๋ค. - ํ์ฌ ํ๋ก์ธ์ค๊ฐ
CPU
๋ฅผ ์ฌ์ฉ์ค์ด๋ผ๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ์ฌ์ฉ์ด ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๊ฒ ์ง๋งI/O
์์ ์ค์ด๋ผ๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐCPU
๋ฅผ ์ธ ์ ์๋ค. - ํ๋ก์ธ์ค์ ์ข
๋ฅ๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๊ธฐ ๋๋ฌธ์ ์์คํ
์์์ ํจ์จ์ ์ผ๋ก ์ธ ์ ์๋๋ก
CPU ์ค์ผ์ค๋ง
์ด ํ์ํ๋ค.
ํ๋ก์ธ์ค์ ํน์ฑ ๋ถ๋ฅ
I/O-bound process
CPU
๋ฅผ ์ก๊ณ ๊ณ์ฐํ๋ ์๊ฐ๋ณด๋คI/O
์ ๋ง์ ์๊ฐ์ด ํ์ํ job (CPU burst๊ฐ ์์ฃผ ์งง๋ค)- ์ฃผ๋ก ์ฌ๋๊ณผ Interactiveํ๋ job
CPU-bound process
- ๊ณ์ฐ ์์ฃผ์ job (CPU burst๊ฐ ์์ฃผ ๊ธธ๋ค)
CPU Scheduler
Ready
์ํ์ ํ๋ก์ธ์ค ์ค์์ ์ด๋ฒ์ CPU๋ฅผ ์ค ํ๋ก์ธ์ค๋ฅผ ๊ณ ๋ฅธ๋ค.
Dispatcher
- CPU์ ์ ์ด๊ถ์ CPU Scheduler์ ์ํด ์ ํ๋ ํ๋ก์ธ์ค์๊ฒ ๋๊ธด๋ค.
- ์ด ๊ณผ์ ์ context switch(๋ฌธ๋งฅ ๊ตํ)๋ผ ํ๋ค.
CPU ์ค์ผ์ค๋ง์ด ํ์ํ ๊ฒฝ์ฐ
- Running -> Blocked (์: I/O ์์ฒญํ๋ ์์คํ ์ฝ)
- Running -> Ready (์: ํ ๋น์๊ฐ ๋ง๋ฃ๋ก timer interrupt)
- Blocked -> Ready (์: I/O ์๋ฃ ํ ์ธํฐ๋ฝํธ)
-
Terminate
- ์ค์ผ์ค๋ง์๋ ๊ฐ์ ๋ก ๋นผ์์ง ์๊ณ ์์ง ๋ฐ๋ฉํ๋
non-preemptive
์ ๊ฐ์ ๋ก ๋นผ์๋preemptive
๊ฐ ์๋ค. - ํ๋ ๋๋ถ๋ถ์ ํ๋ก์ธ์๋
preemptive
๋ฅผ ์ฌ์ฉํ๋ค.
์ค์ผ์ค๋ง ์ฑ๋ฅ ์ฒ๋
- CPU utilization(์ด์ฉ๋ฅ ) :
CPU
๊ฐ ์ผ๋ง๋ ์ผ ์์ด ์ผํ๋์ง - Throughput(์ฒ๋ฆฌ๋) : ๋จ์ ์๊ฐ๋์ ์ฒ๋ฆฌํ๋ ์์ ์ ์์ด ์ผ๋ง๋ ๋ง์์ง
- Turnaround time(์์์๊ฐ, ๋ฐํ์๊ฐ) : ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ป์ด์ ์์ ์ ์์ํ๊ณ ๋๋ ๋๊น์ง ๊ฑธ๋ฆฐ ์ด ์๊ฐ(๋๊ธฐ์๊ฐ ํฌํจ)
- Waiting time(๋๊ธฐ ์๊ฐ) : Ready queue์์ CPU๋ฅผ ์ป์ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ ์๊ฐ. ์์ ์๊ฐ์ ์ ์ธํ๊ณ ์์ํ๊ฒ ๊ธฐ๋ค๋ฆฐ ์๊ฐ๋ง ๋ณธ๋ค.
- Response tiem(์๋ต ์๊ฐ) : (time-sharing ์์คํ
์์) ์ฒ์์ผ๋ก CPU๋ฅผ ์ป์ด์ ์์
์ ์์ํ๊ธฐ๊น์ง ๊ฑธ๋ฆฐ ์๊ฐ
์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ
FCFS (First-Come First-Serve)
- ์ ์ฐฉ์ ๋ฐฉ์์ผ๋ก ๋จผ์ ์จ ์์๋๋ก CPU๋ฅผ ์ป์ด์ ์์ ์ ์์ํ๊ณ ๋์ค์ ์จ ํ๋ก์ธ์ค๋ค์ ์ด์ ์์ ์ด ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค.
- ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ ์ด ๋จผ์ ์์ ๊ณ์ ์ํ๋๊ณ ์๊ฐ์ด ์งง์ ์์ ๋ค์ด ๋ค์์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ๊ฒฝ์ฐ์๋ ํจ์จ์ ์ด์ง ์๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์ ํ๊ท ๋๊ธฐ ์๊ฐ์ด ๊ธธ์ด์ง
- ์งง์ ์์ ์ด ๋จผ์ ์์ ์ฒ๋ฆฌ๋ ํ ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ ์ ์ฒ๋ฆฌํ๊ฒ ๋๋ฉด ํ๊ท ๋๊ธฐ ์๊ฐ์ด ์งง์์ง์ง๋ง ๋ ์ด๋ ๊ฒ ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํ์ง๋ ์์ ๊ฒ์ด๋๊น ์ผ๋ฐ์ ์ผ๋ก๋ ํจ์จ์ ์ด์ง ์์ ๋ฐฉ์์ด๋ผ๊ณ ํ ์ ์๋ค.
Convoy effect
: ์ํ ์๊ฐ์ด ๊ธด ์์ ์ด ๋จผ์ ์์ ์ฒ๋ฆฌ๋๋ ๋์ ์งง์ ์์ ๋ค์ ์ํ๋์ง ๋ชปํ๊ณ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ํ์
SJF (Shortest-Job-First)
- ๋์ฐฉํ๋ ํ๋ก์ธ์ค๋ง๋ค CPU burst time์ ์์ธกํด์ CPU burst time์ด ๊ฐ์ฅ ์งง์ ํ๋ก์ธ์ค๋ฅผ ์ ์ผ ๋จผ์ ์ค์ผ์คํ๋ค. ๊ทธ๋์ ํ๊ท ๋๊ธฐ์๊ฐ์ด ๊ฐ์ฅ ์งง๋ค.
- ๋ ๊ฐ์ง ๋ฐฉ์์ด ์๋ค.
Non-preemptive
: ์ผ๋จ CPU๋ฅผ ์ก์ผ๋ฉด ๋ค์ ์์ ์ด ์ง๊ธ ์ํ ์ค์ธ ์์ ๋ณด๋ค ์คํ ์๊ฐ์ด ๋ ์งง์๋ ์ง๊ธ ์์ ์ด ์๋ฃ๋๊ธฐ ์ ๊น์ง๋ CPU๋ฅผ ๋๊ฒจ์ฃผ์ง ์๋๋ค.Preemptive
: ํ์ฌ ์ํ ์ค์ธ ํ๋ก์ธ์ค ๋ค์์ ์จ ํ๋ก์ธ์ค์ ์ํ ์๊ฐ์ด ๋ ์งง์ผ๋ฉด CPU๋ฅผ ๋บ์ด์ ์๊ฐ์ด ๋ ์งง์ ํ๋ก์ธ์ค์๊ฒ ๋๊ธด๋ค. ๊ทผ๋ฐ ์ด๋ฌ๋ค๋ณด๋ฉด ์ํ ์๊ฐ์ด ๊ธด ํ๋ก์ธ์ค๋ ํ์ CPU๋ฅผ ์ป์ง ๋ชป ํ ์๋ ์์ด์(starvation
๊ธฐ์ ํ์) ์์ฃผ ์ข์ ๋ฐฉ๋ฒ์ ์๋๋ค.
๋ค์ CPU Burst time ์์ธก ๋ฐฉ๋ฒ
- ์๋ฒฝํ๊ฒ ๊ณ์ฐํ๊ธฐ ๋ณด๋ค๋ ๊ณผ๊ฑฐ ๋ฐ์ดํฐ๋ก๋ถํฐ ์ถ์ (estimate)ํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
- n๋ฒ์งธ ํ๋ก์ธ์ค์ ์ค์ CPU ์ฌ์ฉ ์๊ฐ๊ณผ n๋ฒ์งธ ํ๋ก์ธ์ค์ CPU ์ฌ์ฉ ์๊ฐ์ ์์ธกํ๋ ๊ฐ๋ค์ ์ผ์ ๋น์จ์ฉ ๊ณฑํด์ ๋ํด์ฃผ๋ ๋ฐฉ์์ผ๋ก n + 1๋ฒ์งธ ํ๋ก์ธ์ค์ CPU burst time์ ์์ธกํ๋ค.
Priority Scheduling
- ์ฐ์ ์์ ์ค์ผ์ค๋ง์ด๋ผ ํ๋ฉฐ ํ๋ก์ธ์ค์๊ฒ ๋ถ์ฌ๋ ์ฐ์ ์์๊ฐ ๋์ ์์๋๋ก CPU๋ฅผ ํ ๋นํ๋ค.
- ์ด๊ฒ ๋ํ ๋์ค์ ๋์ฐฉํ์ง๋ง ์ฐ์ ์์๊ฐ ๋ ๋์ ํ๋ก์ธ์ค์ ๋ํด
Preemptive
์Non-preemptive
๋ฐฉ์์ผ๋ก ๋๋๋ค. - ์ฐ์ ์์ ์ค์ผ์ค๋ง์ ๋ฌธ์ ์ ๋ํ ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ ํ์ CPU๋ฅผ ์ป์ง ๋ชปํ๋
Starvation
ํ์์ด ์๊ธธ ์ ์๋ค๋ ๊ฒ์ด๋ค. - ๊ทธ๋์
Aging
๊ธฐ๋ฒ์ ํตํด ์ฐ์ ์์๊ฐ ๋ฎ์๋ ์ค๋ ๊ธฐ๋ค๋ ธ์ผ๋ฉด ์ฐ์ ์์๋ฅผ ๋์ฌ์ฃผ๋ ๋ฐฉ์์ ์ด๋ค.
Round Robin (RR)
- ๋๋ถ๋ถ์ ์ด์์ฒด์ ์์ ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ๊ฐ ํ๋ก์ธ์ค๋ ๋์ผํ ํฌ๊ธฐ์
CPU ํ ๋น ์๊ฐ(time quantum)
์ ๊ฐ์ง๊ณ ํ ๋น๋ ์๊ฐ์ด ๋๋๋ฉดCPU
๋ฅผ ๋ค์ ํ๋ก์ธ์ค์๊ฒ ๋๊ฒจ์ฃผ๊ณReady queue
์ ๋งจ ๋ค์ ๊ฐ์ ๋ค์ ์ค์ ์๋ ๋ฐฉ์์ด๋ค. - ๊ทธ๋์ ๋ชจ๋ ํ๋ก์ธ์ค๋
Ready queue
์ ํฌ๊ธฐ๋งํผ ๊ธฐ๋ค๋ฆฌ๊ฒ ๋๋๋ฐ ์ํ ์๊ฐ์ด ์งง์ ํ๋ก์ธ์ค๋ ๊ทธ๋งํผ ๋นจ๋ฆฌCPU
๋ฅผ ์ฐ๊ณReady queue
์์ ๋น ์ ธ๋๊ฐ๊ธฐ ๋๋ฌธ์ ๊ฐ ํ๋ก์ธ์ค์ ๋๊ธฐ ์๊ฐ์ ๋ณธ์ธ์CPU
์ฌ์ฉ ์๊ฐ์ ๋น๋กํ๊ฒ ๋๋ค. - ํ ๋น ์๊ฐ์ด ๋๋ฌด ํฌ๋ฉด
FCFS
์ ๋ค๋ฅผ ๋ฐ๊ฐ ์๊ณ ๋๋ฌด ์์ผ๋ฉดcontext switch
๊ฐ ์์ฃผ ์ผ์ด๋ ์ค๋ฒํค๋๊ฐ ์ปค์ง๊ธฐ ๋๋ฌธ์ ์ ์ ํ ์ค๊ฐ๊ฐ์ ์ฐพ๋ ๊ฒ์ด ์ข๋ค.
Multilevel Queue
Ready queue
๋ฅผ ์์ ์ ์ข ๋ฅ์ ๋ฐ๋ผ ์ฌ๋ฌ ๊ฐ๋ก ๋ถํ ํด์ ๊ฐ ํ๋ง๋ค ๋ค๋ฅธ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ๋ค.- ์๋ฅผ ๋ค์ด
interactive
ํ ์์ ๋ค์ด ๋ด๊ธด ํ๋ผ๋ฉดRR
์ค์ผ์ค๋ง์ ์ ์ฉํ๊ณCPU burst
์์ ๋ค์ด ๋ด๊ธด ํ๋ผ๋ฉดFCFS
์ค์ผ์ค๋ง์ ์ ์ฉํ๋ ๊ฒ์ด๋ค. - ์ด ๋
Starvation
์ ๋ฐฉ์งํ๊ธฐ ์ํด์ ๊ฐ ํ์CPU time
์ ์ ์ ํ ๋น์จ๋ก ํ ๋นํ๋ค.- ์)
RR
์ค์ผ์ค๋ง ํ์๋ 80%๋ฅผ ํ ๋นํ๊ณFCFS
์ค์ผ์ค๋ง ํ์๋ 20% ํ ๋น
- ์)
Multilevel Feedback Queue
Multilevel Queue
์์๋ ํ ๋ฒ ํ๊ฐ ๊ฒฐ์ ๋๋ฉด ๋ค๋ฅธ ํ๋ก ์ด๋ํ ์ ์์ด์ ๋์ค์ ํ๋ก์ธ์ค์burst time
์ด ๋ฐ๋๊ฒ ๋์ด๋ ๊ณ์ ๋ง์ง ์๋ ํ์ ์์ด์ผ ํ ์ ์๋ค.- ์ด๊ฒ์ ๋ณด์ํ ๊ฒ์ด
Multilevel Feedback Queue
์ธ๋ฐ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก ์ด๋์ด ๊ฐ๋ฅํ๋ค. Aging
์ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ๊ตฌํํ ์ ์๋ค.Multilevel Feedback Queue scheduler
๋ฅผ ์ ์ํ๋ ํ๋ผ๋ฏธํฐ๋คQueue
์ ์๋ ์์ ์ ์ : ์์ ์ ์๊ฐ ์ ์ ํ์ ๋จผ์ ํ ๋น- ๊ฐ ํ์ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ
- ํ๋ก์ธ์ค๋ฅผ ์์ ํ๋ก ๋ณด๋ด๋ ๊ธฐ์ค (์:
CPU
์ฌ์ฉ์๊ฐ์ด ์งง์ ์๋ก) - ํ๋ก์ธ์ค๋ฅผ ํ์ ํ๋ก ๋ณด๋ด๋ ๊ธฐ์ค (์:
CPU
์ฌ์ฉ์๊ฐ์ด ๊ธธ์๋ก) - ํ๋ก์ธ์ค๊ฐ
CPU
์๋น์ค๋ฅผ ๋ฐ์ผ๋ ค ํ ๋ ๋ค์ด๊ฐ ํ๋ฅผ ๊ฒฐ์ ํ๋ ๊ธฐ์ค
Multiple-Processor Schduling
CPU
๊ฐ ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ ์ค์ผ์ค๋ง์ด ๋์ฑ ๋ณต์กํด์ง๋ค.Homogeneous processor
(๋์ข )์ธ ๊ฒฝ์ฐ- ํ์ ํ ์ค๋ก ์ธ์์ ๊ฐ ํ๋ก์ธ์๊ฐ ์์์ ๊บผ๋ด๊ฐ๊ฒ ํ ์ ์๋ค.
- ๋ฐ๋์ ํน์ ํ๋ก์ธ์์์ ์ํ๋์ด์ผ ํ๋ ํ๋ก์ธ์ค๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ๋ ๋ณต์กํด์ง
Load sharing
- ์ผ๋ถ ํ๋ก์ธ์์ job์ด ๋ชฐ๋ฆฌ์ง ์๋๋ก ๋ถํ๋ฅผ ์ ์ ํ ๊ณต์ ํ๋ ๋ฉ์ปค๋์ฆ ํ์
- ๋ณ๊ฐ์ ํ๋ฅผ ๋๋ ๋ฐฉ๋ฒ vs. ๊ณต๋ ํ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
Symmetric Multiprocessing (SMP)
- ๊ฐ ํ๋ก์ธ์๊ฐ ๊ฐ์ ์์์ ์ค์ผ์ค๋ง ๊ฒฐ์
Asymmetric multiprocessing
- ํ๋์ ํ๋ก์ธ์๊ฐ ์์คํ ๋ฐ์ดํฐ์ ์ ๊ทผ๊ณผ ๊ณต์ ๋ฅผ ์ฑ ์์ง๊ณ ๋๋จธ์ง ํ๋ก์ธ์๋ ๊ฑฐ๊ธฐ์ ๋ฐ๋ฆ
Real-Time Scheduling
- ๋ฐ๋ ๋ผ์ธ์ด ์๋ ์์ ๋ค์ ์ ์ฉ๋๋ ์ค์ผ์ค๋ง
Hard real-time systems
: ๋ฐ๋์ ์ ํด์ง ์๊ฐ ์์ ๋๋ด๋๋ก ์ค์ผ์ค๋งSoft real-time computing
: ๋ฐ๋ ๋ผ์ธ์ ์กฐ๊ธ ์ด๊ฒจ๋ ๊ด์ฐฎ๊ธฐ ๋๋ฌธ์Soft real-time task
๋ ์ผ๋ฐ ํ๋ก์ธ์ค์ ๋นํด ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ๊ฒ ํ๋ค.
Thread Scheduling
Local Scheduling
:User level thread
์ผ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์์ค์ ์ค๋ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํด ์ด๋ค ์ค๋ ๋๋ฅผ ์ค์ผ์ค ํ ์ง ๊ฒฐ์ Global Scheduling
:Kernal level thread
์ธ ๊ฒฝ์ฐ ์ผ๋ฐ ํ๋ก์ธ์ค์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ปค๋์ ๋จ๊ธฐ ์ค์ผ์ค๋ฌ๊ฐ ์ด๋ค ์ค๋ ๋๋ฅผ ์ค์ผ์ค ํ ์ง ๊ฒฐ์
์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ ํ๊ฐ
Queueing models
ํ๋ฅ ๋ถํฌ
๋ก ์ฃผ์ด์ง๋arrival rate
์service rate
๋ฑ์ ํตํด ๊ฐ์ขperformance index
๊ฐ์ ๊ณ์ฐํ๋๋ฐ ์์ฆ์ ์ ์ ์ด๋ค.
Implementation (๊ตฌํ) & Measurement (์ฑ๋ฅ ์ธก์ )
์ค์ ์์คํ
์ ์๊ณ ๋ฆฌ์ฆ์๊ตฌํ
ํ์ฌ ์ค์ ์์ (workload
)์ ๋ํด์ ์ฑ๋ฅ์์ธก์
๋น๊ตํ๋ ๋ฐฉ์์ผ๋ก ๋ง์ด ์ฐ๋ ๋ฐฉ์
Simulation (๋ชจ์ ์คํ)
- ์๊ณ ๋ฆฌ์ฆ์
๋ชจ์ ํ๋ก๊ทธ๋จ
์ผ๋ก ์์ฑ ํtrace
๋ฅผ ์ ๋ ฅ์ผ๋ก ํ์ฌ ๊ฒฐ๊ณผ ๋น๊ต
- ์๊ณ ๋ฆฌ์ฆ์