Preemptive and Nonpreemptive Scheduling
CPU-scheduling์ ๋ค์๊ณผ ๊ฐ์ ๋ค๊ฐ์ง ์ํฉ์์ ์ผ์ด๋๋ค.
1. I/O request๋ wait()์ ์ํ running state -> waiting state
2. Interrupt์ ์ํ running state -> ready state
3. completion of I/O ์ ๊ฐ์ ๊ฒฝ์ฐ์ ์ํ waiting state -> ready state
4. ํ๋ก์ธ์ค ์ข ๋ฃ์.
1, 4์ ๊ฐ์ ๊ฒฝ์ฐ์๋ ํ๋ก์ธ์ค๋ ๋ฌด์กฐ๊ฑด ์คํํ ํ๋ก์ธ์ค๋ฅผ ์ฐพ์์ core์ ๋ฃ์ด์ผ ํ๋ค.
ํ์ง๋ง 2, 3๋ฒ๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ๋ฃ์์ง ๊ฒฐ์ ํด์ผ ํ๋ค.
1, 4์ ๊ฒฝ์ฐ์์๋ง ์ฌ์ฉํ ์ ์๋, ํ๋ก์ธ์ค ์ข ๋ฃ์์ waiting state๋ก ๋ณํ ๊ฒฝ์ฐ์ core์ ๋ค๋ฅธ ์คํ ํ๋ก์ธ์ค๋ฅผ ๋ฃ์ด์ฃผ๋ ๋ฐฉ์์ ๋น์ ์ ํ ์ค์ผ์ค๋ง ์ด๋ผ ํ๋ค.
2, 3๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ core์ ๋ฃ์ด์ ์คํํ๋ ๋ฐฉ์์ ์ ์ ํ ์ค์ผ์ค๋ง ์ด๋ผ ํ๋ค.
๋น์ ์ ํ ์ค์ผ์ค๋ง์ ์ปค๋์ ๊ตฌํ์ด ๊ฐ๋จํ์ง๋ง, multiprocess, real-time ๊ตฌํ ์ ์ ํฉํ์ง ์๋ค.
์ ์ ํ ์ค์ผ์ค๋ง์ ๊ณต์ ์์์ ๋ฐ๋ฅธ race condition์ ๋ง๋๊ฒ์ ์ ๊ฒฝ์ ์จ์ผ ํ๋ค.
Dispatcher
CPU scheduler์ ์ ํ๋ ํ๋ก์ธ์ค์ core์ ์ ์ด๊ถ์ ์ฃผ๋ ์์์ด๋ค.
PCB๋ฅผ ์ ์ฌํ๊ณ , Context Switch๋ฅผ ์ ๋ฐํ๋ฏ๋ก ์ต๋ํ ๋น ๋ฅธ ์๊ฐ ๋ด์ ์๋ํ๋ ๊ฒ์ด ์ข๋ค.
Scheduling Algorithm
FCFS(first come, first serve)
๋น์ ์ ํ ์ค์ผ์ค๋ง ๊ธฐ๋ฒ.
pros - ๊ตฌํ์ด ์ฝ๋ค.
cons - ํ๊ท ๋๊ธฐ์๊ฐ์ด ๊ธธ์ด์ง๋ค. I/O bound, CPU bound process๋ฅผ ๊ตฌ๋ณํด์ ์ค์ผ์ค๋ง ํ์ง ๋ชปํ๋ค.
Shortest-Job-First Scheduling
waiting time์ ๊ฐ๋ ์์ ์ต์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
ํ์ง๋ง, ๊ฐ ํ๋ก์ธ์ค์ CPU burst time์ ์ ์ ์๊ธฐ ๋๋ฌธ์, ๊ตฌํ์ด ๋ถ๊ฐ๋ฅํ๋ค.
๊ธฐํ๊ธ์ํ๊ท ์ผ๋ก ํ๋ก์ธ์ค์ CPU burst time์ ์์ธกํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํด์ผํ๋ค.
์ ์ /๋น์ ์ ๋๋ค ๊ฐ๋ฅํ๋ฐ, process ๋์ฐฉ์๊ฐ์ ๊ธฐ์ค์ผ๋ก burst time์ด ์ ์ ํ๋ก์ธ์ค๊ฐ core๋ฅผ ์ ์ ํ๋๋ก ํ๋ฉด ์ ์ ์ค์ผ์ค๋ง์ด ๊ฐ๋ฅํ๋ค.
Round Robin
FCFS๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ ํ ์ ์๋๋ก ๋ง๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, Time quantum์ด๋ผ๋ ์๋ถํ ๋จ์๋ฅผ ์ ํด ํน์ ํ๋ก์ธ์ค๊ฐ ํน์ ์๋ถํ ๋จ์๋งํผ core์ ํ ๋น๋ ์ ์๋๋ก ํ๋ค.
ํ๋ก์ธ์ค๊ฐ ์๋ถํ ๋จ์๋งํผ core์ ํ ๋น๋์๋ค๋ฉด, ready queue์ ๋ง์ง๋ง์ผ๋ก ๋ค์ ๋ณด๋ด ์ฒ๋ฆฌํ๋๋ก ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
์๋ถํ ๋จ์๋ Context Switch time์ ๋ฐ๋ผ์ ์ ํด์ ธ์ผ ํ๋ค.
Priority Scheduling
SJF๊ฐ ์ฐ์ ์์ ์ค์ผ์ค๋ง์ ์ผ์ข ์ด๋ค.
๊ฐ๊ฐ์ ํ๋ก์ธ์์ ๊ธฐ์ค์ ๋ฐ๋ผ ์ฐ์ ์์๋ฅผ ์ ํ๊ณ , ์ฐ์ ์์๊ฐ ๋์ ์์๋๋ก ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ๋ ์ค์ผ์ค๋ง ๋ฐฉ์์ด๋ค.
Starvation, indefinite block์ด ๋ฐ์ํ ์ ์๋ค.
Starvation - ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๊ฐ ๊ณ์ ๋๊ธฐํ๋ ํ์.
indefinite block - ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๊ฐ blocking ๋์ด CPU๊ฐ ๊ณ์ ๋๊ธฐํ๋ ์ํฉ.
Aging์ ํตํด ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๊ฐ ๋๊ธฐ์๊ฐ์ ๋น๋กํ์ฌ ์ฐ์ ์์๋ฅผ ๋์ด๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํ๋ฉด ์ด ๋๊ฐ์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ /๋น์ ์ ๋๋ค ๊ฐ๋ฅํ๋ค.
Multilevel Queue Scheduling
PS + RR๋ก ์ข๊ฒ ๊ตฌํํ ์ ์๋ค.
์๊ธฐ์ ์์ ํ PS, RR ์ ๋ถ ๋จ์ผ ํ๋ฅผ ํตํด ์ฐ์ ์์๋ฅผ ๊ณ์ฐํ๋ฏ๋ก, ๋จ์ผ ์ ํ ํ๋ผ๋ ๊ฐ์ ์์ ์ฐ์ ์์๋ฅผ ๊ณ์ฐํ๋๋ฐ O(N), N = queue size๊ฐ ๊ฑธ๋ฆฐ๋ค.
์ฐ์ ์์์ ๋ฐ๋ฅธ ์ฌ๋ฌ๊ฐ์ Queue๋ฅผ ๋๊ณ , ์ฐ์ ์์๊ฐ ๋์ Queue์ ์๋ ํ๋ก์ธ์ค๋ค์ RR๋ก ๊ตฌํํ๋ ๋ฐฉ์์ด๋ค.
๋ ํ์ฅํด์ ํ๋ก์ธ์ค์ ๋จ์์ ๋ฐ๋ผ์ ์ฐ์ ์์๋ฅผ ๋ ์ ์๋ค.
Foreground Process(interactive process)๋ RR, Background Process(batch Process)๋ FCFS๋ก ๊ตฌํํ๋ ๋ฑ์ ์ฐ์ ์์ ๋ณ ์ค์ผ์ค๋ง ๊ธฐ๋ฒ์ ๋ค๋ฅด๊ฒ ํด์ ์ค์ผ์ค๋ง์ ์ต์ ํ ํ ์ ์๋ค.
Multilevel Feedback Queue Scheduling
MQS๋ ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๊ฐ Starvation์ด ๋ฐ์ํ ์ ์๋ค๋ ๋ฌธ์ ๊ฐ ์๋ค.
์ด๋ ๋ฌด์กฐ๊ฑด Queue๊ฐ ๋ถ๋ฆฌ๋์ด์๋ค๋ ๊ด์ ์์ ๋์จ๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๊ฐ๊ฐ์ Queue๊ฐ ์ํธ์์ฉํ ์ ์๋๋ก ํ๋ ๊ด์ ์์ MFQS๊ฐ ๋์๋ค.
ํน์ ํ๋ก์ธ์ค๊ฐ ๋๋ฌด ๋ง์ CPU burst time์ด ๊ฑธ๋ฆฐ๋ค๋ฉด, ์ฐ์ ์์๋ฅผ ๋ฎ์ถ๊ฑฐ๋ ๋๋ฌด ์ค๋ ๊ธฐ๋ค๋ ธ๋ค๋ฉด ์ฐ์ ์์๋ฅผ ๋์ด๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋๋ค.
MFQS๋ ์ค์ผ์ค๋ง ๊ตฌํ์
1. ํ์ ๊ฐ์
2. ๊ฐ๊ฐ์ ํ์ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ
3. ๋์ ์ฐ์ ์์๋ก ํ๋ก์ธ์ค๋ฅผ ์ฌ๋ฆฌ๋ ๊ธฐ์ค
4. ๋ฎ์ ์ฐ์ ์์๋ก ํ๋ก์ธ์ค๋ฅผ ๋ด๋ฆฌ๋ ๊ธฐ์ค
5. ์ด๋ค ํ๋ก์ธ์ค๊ฐ ์๋น์ค ๋๊ณ ์ถ์๋, ์ด๋ค ๋๊ธฐ์ด์ ๋ค์ด๊ฐ์ง ์ค์ ํ๋ ๊ธฐ์ค
์ด 5๊ฐ ์์๊ฐ ์ ๋ถ ๊ณ ๋ ค๋์ด์ผ ํ๋ฏ๋ก ๊ตฌํํ๊ธฐ ์ด๋ ต๋ค.
'CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[OS] Threads, Concurrency (2) | 2024.09.15 |
---|---|
[OS] Processes (0) | 2024.09.14 |
[DB] Index (0) | 2024.03.24 |