-
๐ํ๋ก์ธ์ค๋?
=task=job
ํ๋ก๊ทธ๋จ์ ์คํ ์ฃผ์ฒด, ์ค์ฒด. ์คํ์ค์ ์๋ ํ๋ก๊ทธ๋จ.
์คํ๊ณผ ์ค์ผ์ค๋ง์ ๊ธฐ๋ณธ ๋จ์.
์ค์ผ์ค๋ง์ด๋? ํ๋ก์ธ์ค์ ์คํ์์๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ
vs ํ๋ก๊ทธ๋จ-> ๋์คํฌ์ ์ ์ฅ๋ ์คํ ํ์ผ
๐ํ๋ก์ธ์ค ๊ตฌ์กฐ
- code(text) - cpu์ ๋ช ๋ น์ด๋ค(instruction)์ด ์ ์ฅ
- (static) data : ์ ์ญ ๋ณ์, static ๋ณ์ ๋ฑ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์ ํญ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํ๊ณ ์๋ ๋ณ์๋ค์ด ์ ์ฅ๋๋ ๊ณณ
- heap : DMA ์์ญ. ๋์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋๋ ์์ญ
- stack : ์์ ๋ฐ์ดํฐ(ํจ์์ return address, local variable ๋ฑ)๊ฐ ์ ์ฅ๋๋ ์์ญ
- stack frame -> ์คํ ์์ญ์ ํจ์์ ํธ์ถ๊ณผ ํจ๊ป ํ ๋น๋๊ณ ํธ์ถ์ด ์๋ฃ๋๋ฉด ์๋ฉธํจ. ํจ์์ ํธ์ถ ์ ์คํ์๋ ํจ์์ ๋งค๊ฐ๋ณ์, ํธ์ถ์ด ๋๋ ๋ค ๋์๊ฐ return address, ํจ์์ ์ง์ญ ๋ณ์ ๋ฑ์ด ์ ์ฅ๋๋๋ฐ ์ด์ฒ๋ผ ์คํ ์์ญ์ ์ฐจ๋ก๋๋ก ์ ์ฅ๋๋ ํจ์์ ํธ์ถ ์ ๋ณด.
๐ํ๋ก์ธ์ค ์ํ(Process State)
๐งกProcess Creation(ํ๋ก์ธ์ค ์์ฑ)
- ์๋ก์ด ํ๋ก๊ทธ๋จ์ ์คํ์ํฌ ๋
- ์ ์ ๊ฐ ์ด๋ค ์ฌ์ดํธ์ ์ ์์ ํ๋ฉด ์ ์ ์ ๋ช ๋ น๋ค์ ๋ฐ๊ธฐ ์ํ ํ๋ก์ธ์ค๊ฐ ๋ง๋ค์ด์ง๋ค.
- OS์ ์์ฒญ์ ํ๋ฉด ๋ค์ด์จ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๋ค.
- ํ๋ก๊ทธ๋จ ์์์ ํ๋ก์ธ์ค๋ฅผ ์ง์ ๋ง๋๋ ๊ฒฝ์ฐ(Parent Process, Child Process)
๐Process Termination(ํ๋ก์ธ์ค ์ข ๋ฃ)
- ์์ ์ด ๋๋ฌ์ ๋, ์ ์ ๊ฐ ์ ์ํ๋ ์ฌ์ดํธ์์ ๋ก๊ทธ์์ ํ์ ๋, Parent Process๊ฐ ์ข ๋ฃ๋์ด Child Process๊ธฐ Parent Process์ ์ํด ๊ฐ์ ์ข ๋ฃ ๋์์ ๋
- OS๊ฐ ์ข ๋ฃ๋์์ ๋
- ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ํ๋์จ์ด์ fault๊ฐ ๋ฐ์ํ์ ๋
๐ Dispatcher
Dispatcher -> OS ํ๋ก๊ทธ๋จ. ์คํ์ค์ธ ํ๋ก๊ทธ๋จ์ ์ค๋จํ๊ณ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์คํ์ํค๋๋ก ํ๋ ํ๋ก๊ทธ๋จ
Interrupt(timeout, I/O request)๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์ข ๋ฃ๋ ํ๋ก์ธ์ค๋ก๋ถํฐ ์ค๋น ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ์ํ ์ํ๋ก ๋ง๋ค ๋ ํญ์ Dispatcher๊ฐ ์ํ
State Transitions
์ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๋ฉด OS๋ ํ๋ก์ธ์ค์ PCB(Program Control Block)๋ฅผ ์์ฑํ๊ณ not running ์ํ๋ก ์ด๊ธฐํ ์ํจ๋ค.
not running ์ํ์ธ ํ๋ก์ธ์ค๋ค์ Queue์์ ๋๊ธฐํ๊ฒ ๋๋๋ฐ, Queue์๋ ๊ฐ ํ๋ก์ธ์ค์ PCB ์ฃผ์๋ฅผ ๊ฐ๋ฅดํค๋ ํฌ์ธํฐ๋ฅผ ๊ฐ๊ณ ์๋ค.
๋ง์ฝ ํ์ฌ ์คํ์ค์ธ running ์ํ์ ํ๋ก์ธ์ค์์ Interrupt๊ฐ ๋ฐ์ํ๋ฉด OS๋ ํด๋น ํ๋ก์ธ์ค๋ฅผ not running ์ํ๋ก ์ฎ๊ธด๋ค.
๊ทธ๋ฌ๋ฉด dispatcher๊ฐ Queue์์ ๋๊ธฐ ์ค์ธ ํ๋ก์ธ์ค๋ค ์ค ํ๋๋ฅผ ๊ณจ๋ผ running ์ํ๋ก ์ฎ๊ธด๋ค.
๐ Five-State Process Model
- New : ํ๋ก์ธ์ค๊ฐ ๋ง๋ค์ด์ง ๋จ๊ณ. ํ๋ก์ธ์ค๊ฐ ๋ง๋ค์ด์ง๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ ํ ๋น, ํ๋ก์ธ์ค์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ PCB์ ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ฉฐ ์ฌ์ฉํ ์คํ ๋ฉ๋ชจ๋ฆฌ๋ ํ ๋น๊ณผ ์ด๊ธฐํ ๋ฑ์ ์์ ์ด ํ์. ํ๋ก์ธ์ค ์์ฑ์๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ณ New ์ํ์ ์ด๋ ์ ๋ ๋จธ๋ฌผ๋ฌ์ผ ํจ.
- Ready : ์คํ์ ์ค๋น๊ฐ ๋์ด ๊ธฐ๋ค๋ฆฌ๋ ์ํ. CPU๋ฅผ ํ ๋นํด์ฃผ๋ฉด(์ค์ผ์ค๋ง์ด ๋๋ฉด) ๋ฐ๋ก ์คํํ ์ ์๋ ๋จ๊ณ
- Running : ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ฐจ์งํ๊ณ ์คํํ๊ณ ์๋ ์ํ
- Bocked(Waiting) : CPU๋ฅผ ํ ๋นํด์ฃผ์ด๋ ์คํํ ์ ์๋ ์ํ์ด๋ค.(I/O request, ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ๋๋ ๋๊น์ง ๋๊ธฐ ๋ฑ๋ฑ)
- Exit(terminated) : ํ๋ก๊ทธ๋จ์ ์ข ๋ฃ์ํค๋ ์์ ์ํ. ํ๋ก์ธ์ค๊ฐ ํ ๋น๋ฐ์ ์์ ๋ฐ๋ฉ.
๐ Seven-State Process Model
Five state process model with two suspended states
Suspend๋?
Suspend๋ ๋ฉ๋ชจ๋ฆฌ์์ ๊บผ๋ด์ ํ๋๋์คํฌ๋ก ์ฎ๊ธฐ๋ ๊ฒ์ด๋ค.
Queue์ ์๋ ํ๋ก๊ทธ๋จ์ ํฌ์ธํฐ๋ฅผ ์ด์ฉํ์ฌ ์ฎ๊ธด๋ค.five-state ๋ชจ๋ธ์์ Ready/Suspend + Blocked/Suspend ์ํ
- Ready/Suspend : I/O ์์ ์ด๋ ์์ฒญํ ์์ ์ด ๋๋ฌ์ง๋ง ๋ฉ๋ชจ๋ฆฌ์ ์๋ฆฌ๊ฐ ์์ด ์ฌ์ ํ ํ๋๋์คํฌ์ ์๋ ์ํ์ด๋ค.
- Blocked/Suspend : ์์ฒญํ ์์ ์ด ๋๋์ง ์์๊ณ , ๋ฉ๋ชจ๋ฆฌ์ ์๋ ํ๋ก์ธ์ค๋ค์ด Swaping์ผ๋ก ์ธํด ํ๋๋์คํฌ๋ก ๋ด๋ ค๊ฐ ์ํ์ด๋ค.
Swaping์ด๋?
๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ๋ ํ์ ์ ์ด๊ธฐ ๋๋ฌธ์ ๋ค์ด์ฌ ์ ์๋ ํ๋ก๊ทธ๋จ์ ์๋ ์ ํด์ ธ ์๋ค.
์ฌ๋ผ์จ ํ๋ก์ธ์ค๋ค์ด ๋ชจ๋ block์ด ๋๋ฉด CPU๊ฐ ํ๋ ์ผ์ด ์์ด์ง๊ธฐ ๋๋ฌธ์ ํ๋๋์คํฌ์์ ๋๊ธฐ ์ค์ธ ํ๋ก์ธ์ค๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๊ณ ๊ธฐ์กด์ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ํ๋ก์ธ์ค๋ค์ ํ๋๋์คํฌ๋ก ๋ด๋ฆฐ๋ค.
์ด ์์ ์ Swaping์ด๋ผ๊ณ ํ๋ค.State Transitions
Blocked → Blocked/Suspend
๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์๋ ํ๋ก์ธ์ค๋ค์ด ๋ชจ๋ ์์ฒญํ ์์ ์ ํ๋๋ผ block ์ํ์ด๊ณ , ํ๋๋์คํฌ์ Swapped ๋์๋ ํ๋ก์ธ์ค๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ผ ํ๋ค. ๊ทธ๋ฌ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ์ ์๋ ํ๋ก์ธ์ค๋ค์ ํ๋๋์คํฌ์ Swapped Area๋ก ์ฎ๊ธด๋ค.
Blocked/Suspend → Blocked
์์ฒญํ ์์ ์ด ๋ค ๋๋์ง ์์์ง๋ง ๋ฉ๋ชจ๋ฆฌ์ ๊ณต๊ฐ์ด ์ถฉ๋ถํ ์์ ๊ฒฝ์ฐ ๋ค์ ๋ฉ๋ชจ๋ฆฌ๋ก ์ฌ๋ผ๊ฐ ์ ์๋ค.
Blocked/Suspend → Ready/Suspend
์์ฒญํ ์์ ์ด ๋ค ๋๋ฌ์ง๋ง ๋ฉ๋ชจ๋ฆฌ์ ๊ณต๊ฐ์ด ์๋ ๊ฒฝ์ฐ Ready/Suspend ์ํ๋ก ์ฎ๊ธด๋ค.
Ready/Suspend → Ready
Ready/Suspend ์ํ์์ ๋๊ธฐํ๋ ์ค ๋ฉ๋ชจ๋ฆฌ์ ๊ณต๊ฐ์ด ์๊ฒจ ๋ค์ Ready ์ํ๋ก ๋ณ๊ฒฝํ๋ค.
Ready → Ready/Suspend
์ฌ๋ฌ suspend ์ด์ ๋ก Ready์์ Ready/Suspend๋ก ์ฎ๊ฒจ์ง ์ ์๋ค. ์๋ฅผ ๋ค์ด ํ๋ก์ธ์ค์ ์ฐ์ ์์ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ์ ๊ณต๊ฐ์ ๋ง๋ค์ด์ผํ ๊ฒฝ์ฐ Ready/Suspend ์ํ๋ก ์ฎ๊ฒจ์ง๋ค.
New → Ready/Suspend
๋ง์ฝ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฐ๋ ์ฐจ ์๋ ๊ฒฝ์ฐ๋ผ๋ฉด OS๋ New ์ํ์์ Ready/Suspend ์ํ๋ก Admit ํ๋ค.
๐ํ๋ก์ธ์ค ์ปจํธ๋กค ๋ธ๋ญ(PCB)
์ด์์ฒด์ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ์ ์ดํ๊ธฐ ์ํด ํ๋ก์ธ์ค์ ๋ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ ์ฅํด๋์ ๊ณณ.
Context switch๋ฅผ ์ํด ํ์. ํ๋ก์ธ์ค ์์ฑ ์ ๋ง๋ค์ด์ง๋ฉฐ ์ฃผ๊ธฐ์ต์ฅ์น์ ์ ์ง.
๋๊ธ