CPU & I/O Burst
ํ๋ก๊ทธ๋จ ์คํ์ ๊ฒฐ๊ตญ CPU๋ก ์์ ํ๋ ๋จ๊ณ์ I/O ์์ ์ ํ๋ ๋จ๊ณ๋ฅผ ์ฐ์ํด์ ์ง๋๊ฐ๋ ๊ณผ์ ์ด๋ค. ์ฌ๊ธฐ์ CPU burst๋ CPU๊ฐ ๊ธฐ๊ณ์ด๋ฅผ ํด์ํ๊ณ ์๋ ๋จ๊ณ, I/Oํ๋ ๋จ๊ณ๋ฅผ I/O burst๋ผ๊ณ ๋ถ๋ฅธ๋ค. ํ๋ก๊ทธ๋จ๋ณ๋ก burst์ ๊ฐ๊ฒฉ์ ๋ค๋ฅด๋ค. ์ฃผ๋ก ์ฌ๋๊ณผ ineractํ๋ ํ๋ก๊ทธ๋จ์ด ์์ฒ๋ผ ๋ฒ์คํธ๊ฐ ๋ฒ๊ฐ์ ๋ฑ์ฅํ๋ค. ์ฐ์ฐ๋์ ๋ง์ด ํ์๋กํ๋ ์์ ์ CPU Burst์ ๊ฐ๊ฒฉ์ด ๋์ด์ง๊ฒ๋๋ค. ๋ง์ฝ I/O๋ฅผ ๊ธธ๊ฒ ์ฐ๋ ํ๋ก๊ทธ๋จ์ด ์๋ค๋ฉด I/O bound job(process) ๋ผ ๋ถ๋ฅด๊ณ , CPU๋ฅผ ๊ธธ๊ฒ ์ฐ๋ ํ๋ก๊ทธ๋จ์ CPU bound job(process)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ด ๋ Burst Time ์ข ๋ฅ์ ๋ฐ๋ผ CPU ์ฐ์ ๊ถ์ด ๋ค๋ฅด๊ฒ ์ฃผ์ด์ง๋ค. I/O bound job ๊ณผ CPU bound job ์ค ์ด์์ฒด์ ๋ I/O bound job์๊ฒ ๋จผ์ CPU ์ฌ์ฉ ์ฐ์ ๊ถ์ ์ฃผ๊ฒ๋๋ค. I/O bound job ์๊ฒ CPU๋ฅผ ๋จผ์ ํ ๋นํด์ผ ์ค๋๊ฑธ๋ฆฌ๋ I/O ์์ ์ ํ๋ฌ ๋ ๋จ์ผ๋ก์ ๋ ํจ์จ์ ์ผ๋ก ํ๋ก์ธ์ค ๊ด๋ฆฌ๊ฐ ์ด๋ฃจ์ด์ง๊ฒ ๋๊ธฐ ๋๋ฌธ์ด๋ค. ๋ํ I/O bound job์ ์ฌ๋๊ณผ interaction ํ๋ ์์ ์ด๊ธฐ ๋๋ฌธ์ ์ต๋ํ ๋จผ์ ๊ฒฐ๊ณผ๋ฌผ์ ์ ๋ฌํด์ฃผ์ด์ผํ๋ค. ํ์ง๋ง ํ์ค์์๋ I/O bound, CPU bound๊ฐ ๋ฌด์์๋ก ๋ค์ด์ค๊ธฐ ๋๋ฌธ์ I/O buond ์์ ์ ๋จผ๋ ์ฒ๋ฆฌํจ์ ์์น์ผ๋ก ํ๋ ํจ์จ์ ์ธ ์ฒ๋ฆฌ๋ฅผ ์ํด์ ์ค์ผ์ฅด๋ง์ด ํ์ํด์ง๋ค.
CPU scheduler
CPU์ค์ผ์ฅด๋ฌ๋ ๋ ๋ ์ํ ํ๋ก์ธ์ค์ค ์ด๋ค ๋ ์์์ธ CPU๋ฅผ ํจ์จ์ ์ผ๋ก ๋ด์ค์ง ๊ฒฐ์ ํ๋ ์ฝ๋๋ก ์ด์์ฒด์ ์ ์ฝ๋์ค ์ผ๋ถ์ฝ๋์ด๋ค. ์ด๋ ๊ฒ ์ค์ผ์ค๋ฌ๊ฐ ์ด๋ค ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํ๋ฉด, Dispatcher๋ ์ค์ ๋ก ๊ทธ ํ๋ก์ธ์ค๋ฅผ CPU์ ํ ๋นํ๋ ์ญํ ์ ์ํํ๋ค. ์ฆ ๋์คํจ์ฒ์ ์ฃผ์ ๊ธฐ๋ฅ์ ๋ฌธ๋งฅ๊ตํ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
CPU์ค์ผ์ฅด๋ฌ์ ๋์คํจ์ณ์ ์ํ ํ๋ก์ธ์ค ์ํ๋ณํ๋ ์๋ 4๊ฐ์ง ๊ฒฝ์ฐ์ ๊ทธ ์ด์ธ์ ๊ฒฝ์ฐ๋ก ๋ถ๋ฅํ ์ ์๋ค.
- Running -> Blocked (์: I/O ์์ฒญํ๋ ์์คํ ์ฝ)
- Running -> Ready (์: ํ ๋น์๊ฐ ๋ง๋ฃ๋ก timer inerrupt)
- Blocked -> Ready (์: I/O ์๋ฃํ ์ธํฐ๋ฝํธ)
- Terminated
- 1~4 ์ค์ผ์ฅด๋ง์ ๊ฐ์ ๋ก ๋นผ์์ง ์๊ณ ์์ง CPU ์ ์ด๊ถ์ ๋ฐ๋ฉํ๋ nonpreemptive scheduling (๋น์ ์ ํ)
- 1~4 ์ ํด๋นํ์ง ์๋ ๋ชจ๋ ์ค์ผ์ฅด๋ง์ ๊ฐ์ ๋ก ๋นผ์๋ preemptive scheduling (์ ์ ํ)
์ค์ผ์ฅด๋ง ์๊ณ ๋ฆฌ์ฆ
CPU ์ค์ผ์ฅด๋ง ์๊ณ ๋ฆฌ์ฆ์ ๊ณ ๋ คํ ๋ ์ฑ๋ฅ ์ฒ๋์ ๊ธฐ์ค์ 5๊ฐ์ง์ด๋ค. (1,2์ ์์คํ ์ ์ ์ฅ, 3,4,5๋ ํด๋ผ์ด์ธํธ ์ ์ฅ)
- CPU ์ด์ฉ๋ฅ (CPU utilization) - CPU ๊ฐ ์ผํ ์๊ฐ/์ ์ฒด์๊ฐ ๋น์จ
- ์ฒ๋ฆฌ๋ (Throughput) - ์ฃผ์ด์ง ์๊ฐ๋์ ์์ ์ฒ๋ฆฌ๋
- ์์์๊ฐ, ๋ฐํ์๊ฐ (Turnaround time) - CPU๋ฅผ ์ ์ ํ๊ธฐ ์์ํด์ ๋ค์ฐ๊ณ ๋๊ฐ์๊ฐ
- ๋๊ธฐ์๊ฐ (Waiting time) - ready์ํ์์ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ(์ธํฐ๋ฝํธ ๊ฑธ๋ ค์ ๋ค์ ์ค์๋ ์๊ฐ์ด ์์ด ์ฌ๋ฌ์ฐจ๋ก ๋ฐ์)
- ์๋ต์๊ฐ (Repsonse time) - readyํ์ ๋ค์ด์์ ์ฒ์์ผ๋ก CPU๋ฅผ ์ป์ ์๊ฐ (์ฐ์ผ๋ก ์ฒ์ CPU์ป๊ธฐ๊น์ง ๋จ ํ๋ฒ ๋ฐ์)
FCFS(First-Come-First-Served)๋ ๋จผ์ ๋์ฐฉํ ํ๋ก์ธ์ค์๊ฒ ๊ฐ์ฅ ๋จผ์ CPU ์ ์ด๊ถ์ ์ค๋ค. ์ด๋ฌํ ์ ์ฐฉ์๋๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ(FCFS)๋ non-preemptive(๋น์ ์ ํ)ํ ์ค์ผ์ฅด๋ง์ด๋ค. ํ์ง๋ง ๋ง์ฝ ์์ ํ๋ก์ธ์ค์ ์์ ๋์ด ๋ง๊ณ ๋ค์ด์ ํ๋ก์ธ์ค์ ์์ ๋์ด ์ ์ ๊ฒฝ์ฐ ๋งค์ฐ ๋นํจ์จ์ ์ธ ์ค์ผ์ฅด๋ง์ด ๋ ์ ์๋ค. ์ด๋ฌํ FCFS์ฒ๋ผ ์์์ ๋ฐ๋ผ ์ฑ๋ฅ์ฐจ์ด๊ฐ ๋๋ ๊ฒ์ Convoy effect๋ผ๊ณ ๋ถ๋ฅธ๋ค. (Convoy effect: ๊ธด ํ๋ก์ธ์ค๊ฐ ์์ ๋์ฐฉํ๋ ๋ฐ๋์ ๋ค์ ์งง์ ํ๋ก์ธ์ค๊ฐ ์ค๋๊ธฐ๋ค๋ฆฌ๋ ํ์)
SJF(Shortest Job First)๋ ์งง์ ์์ ๋์ ๋จผ์ ์ฒ๋ฆฌํ ์ ์๋๋ก CPU ์ ์ด๊ถ์ ๋๊ธฐ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก Convoy effect๋ฅผ ๊ณ ๋ คํ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ํ ์ ์๋ค. SJG๋ ๋๊ธฐ์๊ฐ์ ๊ด์ ์์ ๋ณด์์ ๋ ๊ฐ์ฅ ์ต์ ํ๋ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค. ๋ง์ฝ ํ ํ๋ก์ธ์ค์๊ฒ CPU ์ ์ด๊ถ์ ๋๊ฒผ๋๋ฐ ๋ ์งง์ ์์ ๋์ ํ๋ก์ธ์ค๊ฐ ์จ๋ค๋ฉด ์ผ๋จ ์ ์ด๊ถ์ ๊ฐ์ง๊ณ ์๋ ํ๋ก์ธ์ค์ ์์ ๋ง๋ฌด๋ฆฌ๋ ๊ธฐ๋ค๋ ค ์ค๋ค -> non-preemptive ๋ง์ฝ ๋๊ธฐํ์์ ๋ ์งง์ ํ๋ก์ธ์ค๊ฐ ์จ๋ค๋ฉด ์ด ํ๋ก์ธ์ค๋ฅผ ์ฐ์ ์์๋ฅผ ์์๋ค ๋๋ค -> preemptive.
ํ์ง๋ง SJF๋ ์ฌ์ค์ ์ต์ ํ๋ ๋ฐฉ๋ฒ์์๋ ์น๋ช ์ ์ธ ๋ ๊ฐ์ง ์ฝ์ ์ด ์๋ค. ๊ฐ์ฅ ๋จผ์ Starvation ๋ฌธ์ ๊ฐ ์๋ค. ๊ณ์ํด์ ์์ ๋์ด ์ ์ ํ๋ก์ธ์ค๊ฐ ์์น๊ธฐ๋ฅผ ํ ๊ฒฝ์ฐ ๋ค์์๋ ํ๋ก์ธ์ค๊ฐ ์์ํ ์ฒ๋ฆฌ๋์ง ์์ ์๋ ์๋ค. ๋๋ฒ์งธ๋ CPU burst time์ ๋ํ ํ์ ์ด ์ ํํ์ง ์๋ค๋ ๋ฌธ์ ์ด๋ค. ์ด์์ฒด์ ๋ ๊ฐ ํ๋ก์ธ์ค์ CPU ์์ ๋์ ์ธํ ๋ฐ์ดํฐ๋ ๋ธ๋ฐ์น, ๊ณผ๊ฑฐ์ CPU burst(exponential reveraging)๋ฑ์ ์ข ํฉํ์ฌ ์ถ์ ํ ๋ฟ์ด๋ค. ๋ฐ๋ผ์ ๋ง์ฝ ์งง๋ค๊ณ ์๊ฐํด์ CPU ์ ์ด๊ถ์ ๋๊ฒผ๋๋ฐ ์๊ณ ๋ณด๋ CPU์์ ๋์ ๋ง์ด ์ฐจ์งํ๋ ๋ ์์ด๋ผ๋ฉด ๋ฌธ์ ๊ฐ ๋ ์ ์๋ค.
Priority Scheduling ์ ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค์๊ฒ CPU ์ ์ด๊ถ์ ๋๊ธด๋ค. SJF๋ ์ผ์ข ์ Priority Scheduling์ด๋ผ๊ณ ๋ณผ ์ ์๋ค. ์ด๋ SJF๋ Priority๋ฅผ CPU burst time ์์ธก์ผ๋ก ๋งค๊ธด๋ค. ๋ฐ๋ผ์ Priority Scheduling ๋ Starvation ์ด๋ผ๋ ๋ฌธ์ ์ ์ ๊ฐ์ง๊ณ ์๋ค. Priority Scheduling์์๋ Starvation์ ๋ฌธ์ ํด๊ฒฐ๋ฐฉ์์ผ๋ก Aging์ ์ฌ์ฉํ๊ณ ์๋ค. Aging์ด๋ ํ์ ๋จธ๋ฌผ๋ฌ์๋ ์๊ฐ์ ๋ฐ๋ผ ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ๋์ฌ์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค.
Round Robin ์ค์ผ์ฅด๋ง์ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ๋๊ธธ ๋ timer์ ์ฌ์ฉํด์ ์ ์ ์๊ฐ์ ๋ฏธ๋ฆฌ ์ค์ ํด๋๋ ๋ฐฉ์์ด๋ค. ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด ์ธํฐ๋ฝํธ๊ฐ ๊ฑธ๋ ค ์ด์์ฒด์ ์๊ฒ ๋ค์ CPU๊ฐ ๋์ด๊ฐ๋ค. ์ด๋ ํ ๋น์๊ฐ์ time quantum ์ด๋ผ ๋ถ๋ฅธ๋ค. ํ๋ ์ด์์ฒด์ ํ๋ก๊ทธ๋จ์์ ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ํ ๊ฐ์ง ๋จ์ ์ ์ผ๋ฐ์ ์ผ๋ก SJF๋ณด๋ค ํ๋ก์ธ์ค๋น ํ๊ท ์ ์ผ๋ก ์์ ๋๋ด๋ ์๊ฐ์ด ๊ธธ์ด์ง๋ค๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ RR์ ๋น์ทํ ๋์ผํ ์์ ๋ค์ด ์์ ๋๋ณด๋ค ์งง์ ์์ , ๊ธด ์์ ์์ฌ์์์ ๋ ์จ์ผ ํจ์จ์ ์ด๋ค.
https://core.ewha.ac.kr/publicview/C0101020140325134428879622?vmode=f
'๐ฅ๏ธ ์ปดํจํฐ๊ณตํ > Operating System' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Deadlocks (0) | 2024.06.07 |
---|---|
Process Synchronization (0) | 2024.06.04 |
Process Management (0) | 2024.06.02 |
Process (0) | 2024.05.31 |
System Structure & Program Execution (0) | 2024.05.28 |