Process
ํ๋ก์ธ์ค์ ๋ ผ๋ฆฌ์ ์ ์๋ "์คํ์ค์ธ ํ๋ก๊ทธ๋จ" ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ์ค์ฒด๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ธฐ ์ํด์ ํ์ํ ๋ชจ๋ ์ ๋ณด๋ค์ ๋ด๊ณ ์๋ ์๋ฃ๊ตฌ์กฐ๋ค.
Branch๋ Jump์ ์ํด์ ํ๋ก๊ทธ๋จ์ด sequentialํ๊ฒ ์ํ๋๋ ํจํด์ด ๋ฐ๋ ์๋ ์์ง๋ง, ๋ธ๋์น๋ ์ ํ๊ฐ ์๋ค๋ฉด ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฐจ์ ์ผ๋ก ์ํ๋๋ค.
ํ๋ก์ธ์ค ์์๋ ์ด๋ค ๋ด์ฉ๋ค์ด ๋ด๊ฒจ ์์๊น?
Text Section: ํ๋ก๊ทธ๋จ์ ์ฝ๋๊ฐ ๋ด๊ฒจ ์๋ ์์ญ
Stack Section: Function Call๊ณผ Context Switch๋ฅผ ์ํ ์ ๋ณด๊ฐ ์ ์ฅ๋๋ ์์ญ
- Function Call: ํจ์๊ฐ ์ค์ฒฉ๋์ด ํธ์ถ๋๊ฒ ๋๋ค๋ฉด, Aํจ์์์ B๋ฅผ ํธ์ถํ๊ณ Bํจ์์์ Cํจ์๋ฅผ ํธ์ถํ๋ค๊ณ ํด๋ณด์. return ์ฃผ์๋ฅผ ์ค์ฌ์ผ๋ก ์๊ฐํด๋ณด๋ฉด, Cํจ์๊ฐ ๋๋๊ณ ๋๋ฉด Bํจ์๋ก ๋์๊ฐ์ผ ํ๋๋ฐ, ๊ทธ๋ฌ๋ ค๋ฉด B์ ์ฃผ์๋ฅผ ์์์ผ ํ๋ค. Stack์ return address๋ฅผ ์ ์ฅํ๋ค๋ฉด Cํจ์๊ฐ ๋๋ ํ popํ๋ฉด B๋ก ๊ฐ๋ return address๋ฅผ ์ฝ๊ฒ ๊บผ๋ผ ์ ์๋ค.
=> ๊ทธ๋์ function call ๊ด๋ จ ์ ๋ณด๋ค์ stack์ ๋ด๋ ๊ฒ์ด ์ข๋ค.
- Context Switch: ์ํ ์ค์ด๋ ํ๋ก๊ทธ๋จ์ PC๋ฅผ ํฌํจํ ๋ ์ง์คํฐ ์ ๋ณด, Stack pointer์ ์ฃผ์ ๋ฑ์ ์ ์ฅํ๋ค.
Data Section: ํ์ฌ ํ๋ก๊ทธ๋จ์ ์ด๋ ๋ถ๋ถ์ ์ํํ๋ ์ง ์๊ด์์ด ์ ๊ทผํ ์ ์๋ ๋ฐ์ดํฐ์ธ Static ๋ณ์๋, ์ ์ญ ๋ณ์์ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
Heap Section: ๋์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๋ค์ ํ ์์ญ์ ํ ๋น๋๋ค.
ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ํ์ฌ๋ ๋ ์ด๋ค ๋ชจ์ต์ผ๋ก ํ์ฌ๊ฐ ๋๋๊ฐ
ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ Address Space๋ผ๊ณ ํ๋ค.
๊ฐ ํ๋ก์ธ์ค๋ logicalํ๊ฒ ์ฐ์๋ ๊ณต๊ฐ์ ํ ๋น๋ฐ๋๋ค. ๊ทธ๋ฐ๋ฐ logicalํ๊ฒ ์ฐ์๋ ๊ณต๊ฐ์ด์ง physicalํ๊ฒ๋ ์ฐ์๋ ๊ณต๊ฐ์ด ์๋ ์๋ ์๋ค. ๊ฐ ์์ญ์ ์ค์ ๋ฉ๋ชจ๋ฆฌ์๋ ๋ฐ๋ก ๋จ์ด์ ธ์ ์ ์ฅ๋์ด ์์ ์ ์๋ค.
์ด๊ฑด ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ์ ๊ฐ๋ฅํ ๊ฒ์ด๋ค. ๊ฐ ํ๋ก์ธ์ค์๊ฒ ์ฐ์๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ํ ๋นํด์ฃผ๊ณ , ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋งคํ์ด ๋์ด ์๋ค.
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ์์ผ๋ก๋ ์ฐ์๋์ด ์์ง๋ง, ๋งคํ๋ ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ ์ฐ์์ ์ด์ง ์์ ์ ์๋ค.
Address Space์ ์์ญ ์ค์๋ ๊ณ ์ ๋ ํฌ๊ธฐ์ ์์ญ์ด ์๊ณ , ๊ฐ๋ณ ํฌ๊ธฐ์ ์์ญ์ด ์๋ค.
ํ๋ก๊ทธ๋จ ์ฝ๋์ ์ ์ญ ๋ณ์๊ฐ ์ ์ฅ๋ text, data ์์ญ์ ๊ณ ์ ํฌ๊ธฐ ์์ญ์ด๊ณ ,
function call, context switch๋ฅผ ์ํ ์ ๋ณด๊ฐ ์ ์ฅ๋ stack๊ณผ ๋์ ํ ๋น์ด ๋๋ heap ์์ญ์ ๊ฐ๋ณ ์์ญ์ด๋ค.
stack์ function์ด ํธ์ถ๋๊ณ return๋ ๋๋ง๋ค ๋์ด๋๊ณ ์ค์ด๋๋๊น ๊ฐ๋ณ ์์ญ.
heap์ ์ฌ์ฉ์๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ ์ผ๋ก ํ ๋นํ๊ณ ํด์ ํ ๋๋ง๋ค ๋์ด๋๊ณ ์ค์ด๋๋๊น ๊ฐ๋ณ ์์ญ.
=> ๊ทธ๋์ ๊ณ ์ ํฌ๊ธฐ ์์ญ์ ์๋์ ์๊ณ , ๊ฐ๋ณ ์์ญ์ธ heap๊ณผ stack์ ์์ ์์.
๊ทธ๋ฆผ์ ๋ณด๋ฉด heap๊ณผ stack์ ์๋ก ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ์๋ผ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด heap๊ณผ stack์ด ๋ง๋์ง๋ง ์์ผ๋ฉด ๋ฌธ์ ์์ด ์ฌ์ฉ๋ ์ ์๋ค.
๊ทธ๋ฐ๋ฐ logicalํ๊ฒ ์ฐ์๋ ๊ณต๊ฐ์ด๊ธฐ ๋๋ฌธ์ max๊ฐ ์ฌ์ค ์์ฒญ๋๊ฒ ํฐ ๊ฐ์ด๋ค.
=> ๋์ด ๋ง๋ ์ผ์ด ์๋ค.
Process State
ํ๋ก๊ทธ๋จ์ด ์ํ๋จ์ ๋ฐ๋ผ ํ๋ก์ธ์ค์ ์ํ๋ ์์๋ก ๋ฐ๋๋ค.
new: ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ํ์ฌ๋ ๋์์ง๋ง, CPU ์ค์ผ์ค๋ง ๋์์ ๋ฑ๋ก์ด ๋์ง ์์ ์ํ.
ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์์ผ๋ฉด CPU ์ค์ผ์ค๋งํ ๋ ํฌํจํ๋ฉด ๋์ง ์ new ์ํ๋ก ๋๋๋?
์ผ๋ฐ์ ์ธ ์์คํ
์์๋ ํ๋ก์ธ์ค๊ฐ new ์ํ๋ก ๋จธ๋ฌด๋ ๊ฒฝ์ฐ๊ฐ ๊ฑฐ์ ์์. ๊ทธ๋ฐ๋ฐ ์ค์๊ฐ ์์คํ
์์๋ ๊ฐ ์์
์ deadline์ด ๋ณด์ฅ๋์ด์ผ ํจ. ํ์ฌ ๋๊ณ ์๋ ํ๋ก์ธ์ค๋ค์ด deadline์ ์งํค๋ฉด์ ์ ๋๊ณ ์๋๋ฐ, ์๋ก์ด ํ๋ก์ธ์ค๊ฐ ๋ค์ด์ค๋ฉด ์ด ํ๋ก์ธ์ค์ ์์์ด ํ ๋น๋์ด์ผ ํ๋ค. ์์์ ๋๋ ์ฃผ๊ฒ ๋๋ฉด ๊ธฐ์กด์ ๋๋จธ์ง ํ๋ก์ธ์ค๋ค์ด deadline์ ๋ง์กฑ์ํค์ง ๋ชป ํ ์๋ ์์.
=> ์ค์๊ฐ ์์คํ
์์ deadline์ ์งํค์ง ๋ชป ํ๋ ๊ฒ์ ์ฌ๊ฐํ ๋ฌธ์ ์. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋ก ๋ง๋ค์ด์ง ํ๋ก์ธ์ค์๊ฒ ์์์ ๋๋ ์ฃผ๊ธฐ ์ ์ ๋๋ ์ค๋ ๊ธฐ์กด์ ํ๋ก์ธ์ค๋ค์ด deadline์ ์งํค๋ ๋ฐ์ ํฐ ๋ฌธ์ ๊ฐ ์๋์ง ๋จผ์ ํ๋จ.
=> ๋ง์ฝ ์ ํ๋ก์ธ์ค์ ์์์ ๋๋ ์ฃผ๊ฒ ๋๋ฉด ๊ธฐ์กด์ ํ๋ก์ธ์ค๊ฐ deadline์ ์งํค์ง ๋ชป ํ๊ฒ ๋ ๊ฒ ๊ฐ์ผ๋ฉด ์๋ก์ด ํ๋ก์ธ์ค๋ new ์ํ๋ก ๋๋ค.
=> ๊ธฐ์กด์ ํ๋ก์ธ์ค ํ๋๊ฐ ๋์ด ๋๋ฉด ์ ํ๋ก์ธ์ค๋ฅผ ๋ฑ๋กํด์ฃผ๊ฑฐ๋ ๊ทธ๋ ๊ฒ ํ๋ค.
running: ํ๋ก๊ทธ๋จ์ด CPU๋ฅผ ๋ฐ์ ์ค์ ์ํ๋๊ณ ์๋ ์ํ
=> ๋ง์ฝ CPU ์ฝ์ด๊ฐ ํ๋๋ผ๋ฉด running ์ํ์ ํ๋ก์ธ์ค๋ ํ๋๋ง ์กด์ฌํ ๊ฒ์ด๋ค.
waiting: Event๊ฐ ๋๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ. ์ฌ๊ธฐ์ ์ด๋ฒคํธ๋ ๋๋ถ๋ถ I/O ์ด๋ฒคํธ๋ฅผ ๋งํ๋ค.
์ฆ, I/O๊ฐ ๋๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํ. I/O ์ฅ์น๋ก๋ถํฐ Interrupt๋ฅผ ๋ฐ์ผ๋ฉด wating ์ํ์์ ๋ฒ์ด๋๊ฒ ๋๋ค.
ready: CPU๋ฅผ ํ ๋น๋ฐ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํ
wating๊ณผ ready๋ ์ผ์ ํ์ง ์๊ณ ์๋ค๋ ์ ์์๋ ๋์ผํ์ง๋ง, waitng์ I/O๊ฐ ๋๋์ผ์ง๋ง CPU๋ฅผ ๋ฐ์ ์ ์๊ณ ready๋ ์ธ์ ๋ ์ง CPU๋ฅผ ๋ฐ์ ์ค๋น๊ฐ ๋์ด ์๋ ์ํ๋ผ๋ ์ ์์ ๋ค๋ฅด๋ค.
terminated: ๋ชจ๋ Instruction์ ์ํํด์ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๊ฐ ๋ ์ํ. ๋ ์ด์ CPU ์ค์ผ์ค๋ง ๋์์ ํฌํจ๋์ง ์๋๋ค.
running ์ํ์์ ๋ฒ์ด๋๋ ์ํฉ์ 3๊ฐ์ง๊ฐ ์๋ค.
1. ๋ง์ง๋ง Instruction์ ์ํํด์ ํ๋ก๊ทธ๋จ์ด ์ข
๋ฃ๊ฐ ๋๋ ์์ ์ exit์ ํตํด terminated ์ํ๋ก ๋ฐ๋
2. ํ๋ก์ธ์ค ์ํ ๋์ค์ I/O๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ CPU๋ฅผ ๋๊ณ waiting ์ํ๋ก ๊ฐ๋ค.
=> Interrupt๋ฅผ ๋ฐ์ผ๋ฉด ๋ค์ ready ์ํ๋ก ๊ฐ๋ค
3. ์ด ํ๋ก์ธ์คํํ
ํ ๋น๋ ์๊ฐ์ด ๋๋์ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ๋๊ฒจ์ค์ผ ํ ๋.
๊ทธ๋ฆผ์์ ๋ณด๋ฉด Interrupt๋ฅผ ๋ฐ์๋ค๊ณ ๋์ด ์๋ค. Timer๋ผ๋ ๋๋ฐ์ด์ค๊ฐ ์๊ฐ์ด ์ข ๋ฃ๋์๋ค๋ Interrupt๋ฅผ ๋ณด๋. ๊ทธ๋ผ CPU ์ค์ผ์ค๋ฌ๊ฐ ์ด ํ๋ก์ธ์ค๋ Ready ์ํ๋ก ๋ณด๋ด์ผ๊ฒ ๋ค ํ๋จํ๊ณ Ready ์ํ๋ก ๋ณด๋
Process Control Block(PCB)
ํ๋ก์ธ์ค์ ๋ํ ์๋ฃ๊ตฌ์กฐ.
ํ์ฌ ์ํ ์ค์ด๊ฑฐ๋ ์ํ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค๋ค์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์๋ ์๋ฃ๊ตฌ์กฐ๋ค.
ํ์ฌ PC๊ฐ์ ์ด๋๋ฅผ ๊ฐ๋ฆฌํค๋์ง, PCB๊ฐ ์ด๋์ ์ฌ๋ผ์ ์๋์ง, ๋ ์ง์คํฐ์๋ ์ด๋ค ๊ฐ์ด ๋ค์ด์๋์ง, heap๊ณผ stack์ ์ผ๋ง๋ ๋์ด๋ ์๋์ง ๋ฑ์ ์ ๋ณด๋ฅผ ์ ์ฅํจ.
์ด๋ฌํ PCB ์ ๋ณด๋ Context Switch๋ฅผ ํ ๋ ์ฌ์ฉ๋๋ค.
P0 ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ค๊ฐ Time Interrupt๊ฐ ๋ฐ์ํ๊ฑฐ๋ ํ๋ก์ธ์ค ๋ด์์ System Call์ ํธ์ถํ๋ฉด P0๋ ์ก๊ณ ์๋ CPU๋ฅผ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ๋๊ฒจ์ค์ผ ํ๋ค.
๊ทธ๋ฌ๋ฉด ํ์ฌ P0 ํ๋ก์ธ์ค์ ์ํ๋ฅผ PCB ํํ๋ก ์ ์ฅํ๋ค. ๊ทธ๋ฆฌ๊ณ ์๋กญ๊ฒ ์ํํ ํ๋ก์ธ์ค P1์ PCB ์ ๋ณด๋ฅผ loadํด์ P1๋ฅผ ์ํํ ์ ์๋๋ก ์ธํ ํ๋ค. PC๊ฐ ์ธํ ํ๊ณ , ๋ ์ง์คํฐ์ ๊ฐ์ ๋ค์ ๋ถ๋ฌ์ค๊ณ ,, ๋ฑ๋ฑ
Process Scheduling Queues
OS๊ฐ ๊ด๋ฆฌํด์ผ ํ ํ๋ก์ธ์ค๋ค์ด ํ ๋ ๊ฐ๊ฐ ์๋ ๊ฒ์. CPU๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค๋ค๋ ์์ ๊ฒ์ด๊ณ , CPU๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ํ๋ก์ธ์ค, ๋๋ I/O๋ก ์ธํด์ waiting ์ํ์ ์๋ ํ๋ก์ธ์ค๋ค ๊น์ง.
์ด๋ฐ ํ๋ก์ธ์ค๋ค์ด ๊ทธ๋ฅ ๋ค์ฃฝ๋ฐ์ฃฝ์ผ๋ก ์๋ค๋ฉด OS๊ฐ ๋ค์์ CPU๋ฅผ ์ค ๋์ ํ๋ก์ธ์ค๋ฅผ ์ฐพ๋ ๊ฒ์ด ๋ฒ๊ฑฐ๋ก์ธ ๊ฒ์ด๋ค.
๊ทธ๋์ ์ํ๋ณ๋ก ํ๋ก์ธ์ค๋ฅผ queue์ ๋ชจ์๋๋ค.
1. Job Queue: ์์คํ ๋ด์ ๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ง๊ณ ์๋ ํ
2. Ready Queue: CPU๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ready ์ํ์ ํ๋ก์ธ์ค๋ค์ด ๋ชจ์ฌ์๋ ํ.
=> OS๊ฐ CPU๋ฅผ ์ค ๋์์ ์ ํ ๋ Ready ํ์ ์๋ ํ๋ก์ธ์ค ์ค ๊ณ ๋ฅผ ๊ฒ์.
3. Device Queue: I/O Device๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค. ์ฆ, wait ์ํ์ ์๋ ํ๋ก์ธ์ค๋ค์ด ๋ชจ์ฌ์๋ ํ
์ํ๊ฐ ๋ณํ๋ฉด Queue -> Queue๋ก ํ๋ก์ธ์ค๊ฐ ์ด๋ํ๋ค.
ํ์ ์๋ ํ๋ก์ธ์ค๋ค ์ค ์ด๋ค ํ๋ก์ธ์ค์ ์ํ๋ฅผ ๋ฐ๊พธ๊ณ ๋ค๋ฅธ ํ๋ก ์ฎ๊ธธ์ง ์ ํํ๋ ์ญํ ์ ํ๋ ๊ฒ์ด Scheduler์ด๋ค.
ํ๊ฐ์ ์ด๋์ด ๋ฐ์ํ๋ ์ฃผ๊ธฐ์ ๋ฐ๋ผ long-term, short-term, mid-term ์ค์ผ์ค๋ฌ๋ก ๋๋ ์ ์๋ค.
Long-term scheduler( or job scheduler )
: ํ๋ก์ธ์ค๊ฐ ์๋ก ์์ฑ๋์์ ๋ ์์ฑ๋ ํ๋ก์ธ์ค๋ฅผ ๋์์ผ๋ก ๊ธฐ์กด์ ํ๋ก์ธ์ค๊ฐ ํ๋ ๋น ์ ธ๋๊ฐ๋ฉด ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ์ง์ด๋ฃ๋ ์ญํ ์ด๊ธฐ ๋๋ฌธ์ ์์ฃผ ๋ฐ์ํ์ง๋ ์๋๋ค( Long-term ).
new ์ํ์ ํ๋ก์ธ์ค๋ฅผ ready ์ํ๋ก ๋ง๋ค๊ณ ready queue์ ๋ฃ์ด์ฃผ๋ ์ญํ
Short-term scheduler( or CPU scheduler )
: Ready ์ํ์ ํ๋ก์ธ์ค ์ค ์ด๋ค ๋์๊ฒ CPU๋ฅผ ์ค์ง ๊ฒฐ์ ํ๋ ์ญํ ์ด๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ์์ฃผ ๋ฐ์( Short-term ).
๋ํ I/O๊ฐ ๋๋ ํ๋ก์ธ์ค๋ฅผ Device queue์์ Ready queue๋ก ์ฎ๊ธฐ๋ ๊ฒ ์ญ์ Short-term scheduler์ ์ญํ ์ด๋ค.
Midium-term scheduler
: ๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ค ๋ณด๋ฉด ๋ง์ ํ๋ก๊ทธ๋จ์ด ๋์์ ๋์๊ฐ๊ฒ ๋์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ๋ณดํด์ผ ํ๋๋ฐ, ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ ์ ์๋ค. ๊ทธ๋ฌ๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํ๊ณ ์๋ ์ฌ๋ฌ ํ๋ก์ธ์ค ์ค ํ๋๋ฅผ ๊ณจ๋ผ์ ๋์คํฌ๋ก ๋ด๋ฆฌ๊ณ (swap out) ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ์ง์ด ๋ฃ๋๋ค(swap in).
์ด๋ค ํ๋ก์ธ์ค๊ฐ ์ผ์ ํ๋ค๊ฐ swap out์ด ๋๋ฉด, swap out๋ ์ํ๋ก ์๋ค๊ฐ ์ด๋์ด ๋ค์ CPU๋ฅผ ์ก์์ผ ๋ ์์ ์ด ์ค๋ฉด ๋ค์ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ง๊ณ ์์ Ready ํ์ ๋ฃ์ด์ค๋ค.
์ด๋ค ํ๋ก์ธ์ค๋ฅผ swap out์์ผ์ CPU๋ฅผ ์ฃผ์ง ์๋ ์ํ๋ก ๋ฐ๊ฟ์ฃผ๊ณ ๋ค์ CPU๋ฅผ ์ก์์ผ ํ ์์ ์ด ์ค๋ฉด ๋ค์ ๋์คํฌ์์ ์ฝ์ด์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฐ ๋ค์ Ready ํ๋ก ๋ณด๋ด์ฃผ๋ ์ผ์ ํ๋ ์ ๊ฐ Medium term scheduler.
์ด๋ค ํ๋ก์ธ์ค๊ฐ swap out๋ ๊น?
์ฌ์ฉ์๊ฐ Ctrl + Z๋ฅผ ๋๋ฌ์ suspend ์ํ๊ฐ ๋ ์ ๋ค์ swap out์ ์ํฌ ์์ฃผ ์ข์ ๋์.
์ฃผ๋ก suspend ์ํ์ ํ๋ก์ธ์ค๊ฐ swap out ๋์์ด ๋๋๋ผ.
Long-term scheduler๋ Degree of multiprogramming์ ๊ด๋ฆฌํ๋๋ฐ
Degree of multiprogramming์ด๋ CPU ์ค์ผ์ค๋ง์ ๋์์ด ๋๋ ํ๋ก์ธ์ค์ ์๋ฅผ ๋งํ๋ค. Long-term scheduler๊ฐ ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ CPU ์ค์ผ์ค๋ง ๋์์ ํธ์ ์ํค๋ฉด Degree๊ฐ 1 ์ฆ๊ฐํ๋ค.
์ค์ผ์ค๋ง์ ํจ์จ์ฑ์ ์ํด ํ๋ก์ธ์ค์ ์ข
๋ฅ๋ฅผ 2๊ฐ๋ก ๋๋ ์ ๊ด๋ฆฌํ๋ค.
I/O๋ฅผ ๋ง์ด ๋ฐ์์ํค๋ ํ๋ก์ธ์ค๋, I/O๋ ๋ฐ์์ํค์ง ์๊ณ ๊ณ์ฐ์ ๋ง์ด ํ๋ ํ๋ก์ธ์ค๋.
์ด๊ฒ CPU ์ค์ผ์ค๋งํ ๋ ์์ฃผ ์ค์ํ ์ ๋ณด๊ฐ ๋๋ค.
I/O bound process
ํธ์ง๊ธฐ, ๋ฉ์ ์ ์ฌ์ฉ์๊ฐ ์ ๋ ฅ์ ๋ง์ด ํ๋ ํ๋ก์ธ์ค๋ค.
์ฌ์ฉ์์ ์ ๋ ฅ์ ๊ณ์ ๋ฐ๋ค๊ฐ ์ฌ์ฉ์๊ฐ ๋ญ๊ฐ ํ ๋๋ฅด๋ฉด ๊ทธ๋๋ง ์ ์ CPU๋ฅผ ๋ฐ์์ ์ผ์ ํ๋ค.
CPU๋ฅผ ํ ๋ฒ ์ฌ์ฉํ ๋ ๋งค์ฐ ์งง๊ฒ ์ฌ์ฉํจ.
CPU ์ฌ์ฉ ๋น๋ ↑, 1ํ๋น ์ฌ์ฉ ์๊ฐ ↓
CPU bound process
I/O๋ ๊ฑฐ์ ๋ฐ์ํ์ง ์๊ณ ๊ณ์ฐ์ ๋ง์ด ํ๋ ํ๋ก์ธ์ค๋ค.
CPU-bound process๋ ํ ๋ฒ CPU๋ฅผ ๋ฐ์ผ๋ฉด ์ต๋ํ ์ฌ์ฉํ๋ ค๊ณ ํจ. I/O๊ฐ ๋ฐ์ํ์ง ์์ผ๋๊น.
CPU ์ฌ์ฉ ๋น๋ ↓, 1ํ๋น ์ฌ์ฉ ์๊ฐ ↑
Context Switch
๊ธฐ์กด ์ํ ์ค์ด๋ ํ๋ก์ธ์ค์ ๋ฌธ๋งฅ์ ์์ ํ ์๋ก์ด ํ๋ก์ธ์ค์ ๋ฌธ๋งฅ์ผ๋ก ์ ํํ๊ธฐ ๋๋ฌธ์ Context Switch๋ผ๊ณ ํ๋ค.
ํ์ฌ CPU๋ฅผ ์ก๊ณ ์๋ ํ๋ก์ธ์ค์์ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ๋๊ฒจ์ฃผ๋ ๊ณผ์ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋จ.
๊ทธ๋ฌ๊ธฐ ์ํด์๋ ํ์ฌ ์ํ ์ค์ธ ํ๋ก์ธ์ค์ ์ ๋ณด๋ฅผ PCB์ ํํ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํด ๋๊ณ , ๋ค์์ผ๋ก ์ํํ ํ๋ก์ธ์ค์ PCB๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ๋ก๋ํด์ ํ๋ก์ธ์๋ฅผ ์ธํ .
๊ธฐ์กด ํ๋ก์ธ์ค ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ , ๋ฉ๋ชจ๋ฆฌ์์ ์ํํ ํ๋ก์ธ์ค์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์์ ์ธํ ์ ํด์ผ ํ๋ฏ๋ก ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค.
Context Switch๋ ๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ๋ OS๋ผ๋ฉด ๊ฐ๋ดํด์ผ ํ ์ค๋ฒํค๋์ด๋ค.
Context Switch๋ฅผ ํจ์ ๋ฐ๋ผ ๋ถ๊ฐ์ ์ผ๋ก ๋ฐ์๋๋ ์ค๋ฒํค๋๊ฐ ์๋๋ฐ, ๋ฐ๋ก Cache flushing ์ด๋ค.
์บ์์๋ ํ์ฌ CPU๊ฐ ํ๋ก๊ทธ๋จ์ ์ํํ๋ ๊ณผ์ ์ ๋ฉ๋ชจ๋ฆฌ์์ ์ฝ์ด๋ค์ธ ๋ฐ์ดํฐ๊ฐ ์บ์์ ์ฌ๋ผ์จ๋ค.
์ฆ, ํ์ฌ ์ํ์ค์ธ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ์ ์ผ๋ถ๊ฐ ์ ์ฅ๋๋ ๊ฒ.
๊ทธ๋ฐ๋ฐ Context Switch๊ฐ ๋ฐ์ํ๋ฉด ์๋ก์ด ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ณ ๊ธฐ์กด์ ์บ์์ ์ ์ฅ๋์ด ์๋ ์ด์ ํ๋ก๊ทธ๋จ์ ๋ฌธ๋งฅ(instruction๊ณผ ๋ฐ์ดํฐ)์ ํ์๊ฐ ์์ด์ง.
๊ทธ๋์ Context Switch๊ฐ ๋ฐ์ํ๋ฉด ์บ์๋ฅผ ์์ ๋น์๋ฒ๋ฆฐ๋ค(Cache flushing). ๊ทธ๋ฆฌ๊ณ ๋์ ์๋ก์ด ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด ์บ์๊ฐ ๋น์ด์๊ธฐ ๋๋ฌธ์ ์ด๋ฐ์ ๋ฌด์กฐ๊ฑด cache miss๊ฐ ๋งค์ฐ ์์ฃผ ๋ฐ์ํจ.
=> Context Switch๊ฐ ๋๋ฐํ๋ ์ค๋ฒํค๋
Process Creation
๋ง์ฝ ์ฌ์ฉ์๊ฐ ํ๋ก๊ทธ๋จ์ ๋๋ธ ํด๋ฆญํด์ ์คํ ํ๊ฒ ๋๋ฉด Process๊ฐ ๋ง๋ค์ด์ง๊ฒ ๋๋๋ฐ, ์ด ํ๋ก์ธ์ค๋ฅผ ๋ง๋๋ ์ฃผ์ฒด๋ ๋๊ตฌ์ผ๊น. ๋๋ธ ํด๋ฆญ์ ํ๋ ์ฃผ์ฒด๋ ์ฌ๋์ด๊ธด ํ์ง๋ง ์ฌ๋์ด ํ๋ก์ธ์ค๋ฅผ ๋ง๋๋ ๊ฑด ์๋๋๊น ๋๊ตฐ๊ฐ ํ๊ณ ์์ ํ
๋ฐ ๋๊ตฌ์ผ๊น.
์ ์ ๊ฐ ๋๋ธํด๋ฆญ์ ํ๊ฒ ๋๋ฉด, User Interface๋ฅผ ๊ด์ฅํ๋ ํ๋ก์ธ์ค๊ฐ ๋๋ธ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ๋ฐ์๋ค์ฌ์ Fork()๋ฅผ ํธ์ถํด ์ค.
๋๋ ํฐ๋ฏธ๋์์ ๋ช
๋ น์ด๋ฅผ ์น๊ณ ์ํฐ๋ฅผ ๋๋ฅด๋ฉด, ์ฌ์ฉ์ ๋ช
๋ น์ ๋ฐ์๋ค์ด๋ ํ๋ก์ธ์ค์ธ Shell process๊ฐ ํค๋ณด๋ input์ ๋ฐ์ ๋ค์ฌ์ Fork()๋ฅผ ํธ์ถ.
๊ฒฐ๊ตญ ํ๋ก์ธ์ค๋ฅผ Createํ๋ ์ฃผ์ฒด๋ ํ๋ก์ธ์ค์.
ํ๋ก์ธ์ค๊ฐ ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค๊ณ ์ฐ์์ ์ผ๋ก ํ๋ก์ธ์ค๊ฐ ํ๋ก์ธ์ค๋ฅผ ๋ง๋๋ ๊ฒ์ด๋ค.
=> ๊ทธ๋์ ํ๋ก์ธ์ค๋ค ๊ฐ์ ๊ฐ๊ณ๋๊ฐ ์กด์ฌ.
๋ถํ
์ ํ๊ฒ ๋๋ฉด ๋ฃจํธ ํ๋ก์ธ์ค๊ฐ ๋ง๋ค์ด์ง๊ณ ๋ฃจํธ ํ๋ก์ธ์ค๊ฐ Init ํ๋ก์ธ์ค๋ฅผ ์์ฑ. Init ํ๋ก์ธ์ค๊ฐ Shell ํ๋ก์ธ์ค๋ฅผ ๋น๋กฏํด ์ฌ๋ฌ ํ๋ก์ธ์ค๋ค์ Forkํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๊ทธ ํ๋ก์ธ์ค๋ค์ด ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ Fork,,,
์ด๋ป๊ฒ ์ด ๋ง์ ํ๋ก์ธ์ค๋ค์ ๊ตฌ๋ถํ๊ณ ๊ด๋ฆฌํ ๊น?
๋ชจ๋ ํ๋ก์ธ์ค๋ ๊ณ ์ ํ ํ๋ก์ธ์ค ID๋ฅผ ๊ฐ์ง๋ค. ์ด pid๋ฅผ ๊ฐ์ง๊ณ ๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ๊ตฌ๋ถ.
ํ๋ก์ธ์ค๊ฐ ํ๋ก์ธ์ค๋ฅผ ๋ง๋๋ ๋ฐฉ์์ผ๋ก ํ๋ก์ธ์ค๊ฐ ๋ง๋ค์ด์ง๊ธฐ ๋๋ฌธ์ ๋ถ๋ชจ ํ๋ก์ธ์ค์ ์์ ํ๋ก์ธ์ค ์กด์ฌ.
- Resource Sharing
์์ ํ๋ก์ธ์ค๋ ๋ถ๋ชจ ํ๋ก์ธ์ค์ ์์ ํ ๋์ผํ๊ฒ Address Space๊ฐ ๊ตฌ์ฑ์ด ๋๋๋ฐ, ๊ทธ๋ผ ์์๋ ๊ณต์ ํ ๊น?
Parent ํ๋ก์ธ์ค์ Child ํ๋ก์ธ์ค ์ฌ์ด์๋ ์ฌ์ค ๋ด์ฉ์ ์ธ(Context) ์ธก๋ฉด์ผ๋ก๋ ์๋ฌด ๊ด๊ณ๊ฐ ์์.
๊ทธ๋ ๋ค ํ๋๋ผ๋ ๊ด๊ณ๋ฅผ ๊ด๋ฆฌํ๋ ์ด์ ๋ ์๊ธฐ ์์์ ํ๋ก์ธ์ค๊ฐ ์ฃฝ์์ ๋ ๋ฆฌํด ๊ฐ์ ๋๊ตฐ๊ฐ๋ ๋ฐ์์ผ ํ๋๋ฐ ๋ฐ์์ฃผ๋ ์ฌ๋์ด ์์ผ๋ฉด output๊ฐ์ ์์ด์ง๋ ๊ฒ์. ๊ทธ ์ญํ ์ ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ํ๋ค.
๋ถ๋ชจ์ ์์ ์ฌ์ด๊ฐ ๋ด์ฉ์ ์ผ๋ก๋ ๋งค์ฐ ๋ฐ์ ํ ๊ฒฝ์ฐ๋ ์๊ธด ํ๋ค.
์น ์๋ฒ๋ฅผ ์๊ฐํด๋ณด๋ฉด, ๋๊ตฐ๊ฐ ์น ์๋ฒ์ ์ ์ํ์ ๋ ์น ์๋ฒ๋ ์์ ํ๋ก์ธ์ค๋ฅผ ํ๋ ๋ง๋ค์ด์ request๋ฅผ ์ฒ๋ฆฌํ๊ฒ ๋ง๋ ๋ค. (์ค์ ๋ก ํ๋ก์ธ์ค๊ฐ ์๋ ์ค๋ ๋๊ฐ ๋ง๋ค์ด์ง์ง๋ง ์ผ๋จ ํ๋ก์ธ์ค๋ผ ์๊ฐํ์)
http request๊ฐ ์ฌ ๋๋ง๋ค ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค์ด์ request๋ฅผ ์ฒ๋ฆฌ.
์น ์๋ฒ๊ฐ ๋ง๋ ์์ ํ๋ก์ธ์ค๋ ๊ทธ ์น ์๋ฒ ํ๋ก๊ทธ๋จ์ ์ฝ๋๋ฅผ ์คํํ๋ ํ๋ก์ธ์ค๋ค.
๊ฒฐ๊ตญ ๋ ๊ฐ์ ํ๋ก์ธ์ค๋ ๋๊ฐ์ ์ฝ๋์ง๋ง ๋ค๋ฅธ ๋ถ๋ถ์ ์ํํ๊ณ ์๋ ๊ฒ์ด๋ค.
์ฆ, text ๋ถ๋ถ์ ์์ ํ ๋๊ฐ์ง๋ง PC๊ฐ ๊ฐ๋ฆฌํค๋ ์์น๋ง ๋ค๋ฅธ ๊ฒ.
=> ๋งค์ฐ ๋ฐ์ ํ ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ค.
=> ์ด๋ฌํ ๊ฒฝ์ฐ์๋ ์์์ ๊ณต์ ํ๋ ๊ฒฝ์ฐ๋ ์์.
๋ถ๋ชจ ์์ ๊ฐ์ ์์ ์ ์ฒด๋ฅผ ๊ณต์ ํ ์๋ ์๊ณ ์ผ๋ถ๋ง ๊ณต์ ํ ์๋ ์๊ณ , ์๋ฌด๋ฐ ๊ด๊ณ๊ฐ ์๋ ๊ฒฝ์ฐ ๊ณต์ ๋ฅผ ์ ํ ์๋ ์์.
- Execution
๋ถ๋ชจ์ ์์ ํ๋ก์ธ์ค๋ ๋์์ ์ํ๋๋ ๊ฒ์ด ์์น.
๊ทธ๋ฐ๋ฐ ์ด๋ค ๊ฒฝ์ฐ์๋ ๋ถ๋ชจ๊ฐ ์์์ Fork ์์ผ๋๊ณ ๋ถ๋ชจ๋ wait. ๊ทธ๋ฆฌ๊ณ ์์์ด ์ข
๋ฃ๋์ด return ๊ฐ์ด ์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค. return ๊ฐ์ด ์ค๋ฉด ๊นจ์ด๋์ return ๊ฐ์ ์ฒ๋ฆฌํด ์ฃผ๋ ๊ด๊ณ๊ฐ ์กด์ฌํ ์๋ ์๋ค.
- Address Space
ํ๋ก์ธ์ค๊ฐ Fork๋์ด ์๋ก ๋ง๋ค์ด์ง๋ฉด ์๋ก ๋ง๋ค์ด์ง ํ๋ก์ธ์ค์ Address space(์๋ฃ ๊ตฌ์กฐ)์๋ ๋ฌด์จ ๋ด์ฉ์ด ์ฑ์์ง๊น.
๊ธฐ๋ณธ์ ์ผ๋ก Fork๊ฐ ๋๋ฉด ๋ถ๋ชจ ํ๋ก์ธ์ค์ Address space๋ฅผ ๊ทธ๋๋ก ์นดํผํ๋ ๊ฒ ๋ํดํธ.
=> Fork๊ฐ ํธ์ถ๋๋ ์์ ์๋ Child ํ๋ก์ธ์ค๊ฐ ์ด๋ค ๋ด์ฉ์ ์ํํ ์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ์ผ๋จ ๋ถ๋ชจ ํ๋ก์ธ์ค์ ๋ด์ฉ์ ๋ชจ๋ ๋ณต์ฌํ๋ค.
๋ณ๋์ ํ๋ก๊ทธ๋จ์ ์ํํ ํ๋ก์ธ์ค๋ผ๋ ๊ฒ์ด ๊ฒฐ์ ์ด ๋๋ฉด ๊ทธ๋์์ผ ๋ณ๋์ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ด์ฉ์ ์ฑ์ฐ๊ฒ ๋๋ค.
- UNIX
์ด ๊ณผ์ ์ UNIX๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ฅผ ๋ค์ด๋ณด์.
UNIX์์๋ ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค์ด์ ๋ถ๋ชจ ํ๋ก์ธ์ค์ Address space๋ฅผ ๊ทธ๋๋ก ๋ณต์ฌํ๋ ๊ฒ๊น์ง๊ฐ fork() system call์ ํด๋นํ๋ ๋ด์ฉ.
=> ์ด๋๊น์ง๋ ๋ถ๋ชจ ํ๋ก์ธ์ค์ ์์ ํ๋ก์ธ์ค๋ ์์ ํ ๋์ผํ ๋ด์ฉ
exec() system call์ ํธ์ถํด์ผ ์ธ์๋ก ๋๊ฒจ์ค ํ๋ก๊ทธ๋จ ์ด๋ฆ์ ํตํด ๊ทธ ํ๋ก๊ทธ๋จ์ Context๋ก ์์ ํ๋ก์ธ์ค์ Address space๋ฅผ ์ฑ์ฐ๊ฒ ๋๋ค.
=> ๋ถ๋ชจ ํ๋ก์ธ์ค์ ์์ ํ ๋
๋ฆฝ์ ์ธ ํ๋ก์ธ์ค๊ฐ ๋ง๋ค์ด์ง
๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ ์๋ฌธ์ .
fork system call์ด ํธ์ถ๋ ์งํ์ ๋ถ๋ชจ ํ๋ก์ธ์ค์ ์์ ํ๋ก์ธ์ค๊ฐ ์์ ํ ๋์ผํ๋ค๊ณ ํ๋ค. ๊ทธ๋ฌ๋ฉด ์ด ๋ ํ๋ก์ธ์ค๋ฅผ ์ด๋ป๊ฒ ๊ตฌ๋ถํ ๊น. ๋ถ๋ชจ ํ๋ก์ธ์ค์ Address space๋ฅผ ๊ทธ๋๋ก ๋ณต์ฌํ์ผ๋ PC ๊ฐ, ๋ ์ง์คํฐ ์ํ๊น์ง ๊ฐ์๋ฐ, ์ด๋ป๊ฒ ๊ตฌ๋ถ์ ํด์ ์์ํํ
์ด๊ฑธ ์ํค๊ณ ๋ถ๋ชจ๋ ๊ณ์ ์ผ์ ํ๊ณ ์ด๋ ๊ฒ ์ปจํธ๋กค ํ ๊น.
Fork() System call์ return value์ ์ฃผ๋ชฉํด์ผ ํ๋ค.
๋ถ๋ชจ ํ๋ก์ธ์คํํ
๋ return value๋ก ์๊ธฐ๊ฐ ๋ง๋ ์์ ํ๋ก์ธ์ค์ pid ๊ฐ์ด ๋ฆฌํด์ด ๋๊ณ , ์์ ํ๋ก์ธ์คํํ
๋ 0์ด ๋ฆฌํด๋จ
C์ฝ๋๋ก ์์๋ฅผ ๋ณด์
fork()๋ฅผ ํธ์ถํ ์งํ ๋ถ๋ชจ ํ๋ก์ธ์ค๋ ์ด๋ค ๋ช
๋ น์ ์ํํ ์ฐจ๋ก์ผ๊น.
fork()์ ๋ฆฌํด value๋ฅผ ๋ฐ์์ pid ๋ณ์์ ๋ฃ์ด์ค ์ฐจ๋ก๋ค. ์ฆ, PC๋ fork()์ return ๊ฐ์ ๋ฐ์ pid ๋ณ์์ ๋ฃ์ด์ฃผ๋ Instruction์ ๊ฐ๋ฆฌํค๊ณ ์์. ๊ทธ๋ฐ๋ฐ ์์ ํ๋ก์ธ์ค์ PC์ญ์ ๋๊ฐ์ ๊ณณ์ ๊ฐ๋ฆฌํค๊ณ ์๋ค.
๊ทธ๋์ ์ฌ๊ธฐ์ ๊ฐ์ value๋ฅผ returnํ๋ฉด ๋ ํ๋ก์ธ์ค๋ฅผ ์์ํ ๊ตฌ๋ถํ ์ ์๊ฒ ๋๋ค.
๊ทธ๋ฐ๋ฐ ์์ ํ๋ก์ธ์ค์๊ฒ ๋ค๋ฅธ ์ผ์ ์ํค๋ ๊ฒ์ด ์ฐ๋ฆฌ์ ๋ชฉํ์.
return ๊ฐ์ ๋ค๋ฅด๊ฒ ์ค์ ๊ตฌ๋ถ๋ ์ ์๋๋ก ํ๋ค.
๋ถ๋ชจ ํ๋ก์ธ์ค์๊ฒ ์์ ํ๋ก์ธ์ค์ pid๋ฅผ ๋ฆฌํด, ์์ ํ๋ก์ธ์ค์๊ฒ 0์ ๋ฆฌํด.
๊ทธ๋ฌ๋ฉด ๋ชจ๋ ๊ฒ ๊ฐ์ง๋ง pid ๋ณ์์ ๋ค์ด์๋ ๊ฐ์ด ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ๋ง๋ค์ด์ง๋ค.
๊ทธ๋ฆฌ๊ณ execlp๋ฅผ ํธ์ถํ๋ ์๊ฐ ls ํ๋ก๊ทธ๋จ์ ํด๋นํ๋ ๋ด์ฉ์ผ๋ก ์์ ํ๋ก์ธ์ค์ Address Space๊ฐ ์ฑ์์ง๊ฒ ๋๋ค.
Single and Multithreaded Processes
๋ฉํฐ ์ค๋ ๋ ํ๋ก์ธ์ค์์ ํ๋์ ํ๋ก๊ทธ๋จ ๋ด์ ๊ฐ๊ฐ์ ์ค๋ ๋๋ค์ ํ๋ก์ธ์ค๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ ๊ฐ๋ณ์ ์ผ๋ก ๊ฐ์ง ์ ์์. ๊ทธ๋ฆฌ๊ณ ์ด๋ ๋ถ๋ถ์ ์ํํ๊ณ ์๋ ์ ์ญ ๋ณ์๋ ๊ณต์ ๊ฐ ๋์ด์ผ ํ๋ค.
=> ์ฝ๋์ ์ ์ญ๋ณ์, ์คํ๋ ํ์ผ์ ๊ณต์ ๋ฅผ ํด์ผ ํจ.
๊ทธ๋ผ ์ค๋ ๋๋ค์ด ๊ฐ๋ณ์ ์ผ๋ก ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ ๊ฐ์ ์ด๋ค ๊ฒ ์์๊น.
๊ฐ ์ค๋ ๋ ๋ง๋ค ๋ค๋ฅธ function์ ์ํํ๊ธฐ ๋๋ฌธ์ ์คํ์์ญ์ ์ ์ฅ๋๋ function call๊ณผ ๊ด๋ จ๋ ์ ๋ณด๋ค return address, parameter, local variable๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ค์ ๋ค๋ฅด๊ฒ ๊ฐ์ง ์ ๋ฐ์ ์์
=> Stack ์์ญ์ ๊ฐ์ ๊ฐ์ง ์ ๋ฐ์ ์๋ค.
=> ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ๋ถ๋ถ์ ์ฝ๋๋ฅผ ์ํํ๊ธฐ ๋๋ฌธ์ ๋ ์ง์คํฐ๊ฐ์ ๋น์ฐํ ๋ค๋ฅด๋ค.
Benefits of Multithreaded Process
1. ํ๋์ ์ค๋ ๋๋ฅผ ์ฌ์ฉํด์ ํ๋ก์ธ์ค๊ฐ ๋์ํ๋ฉด, I/O๊ฐ ๋ฐ์ํ๊ฑฐ๋ ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๋ System call์ด ํธ์ถ๋๋ฉด ํ๋ก์ธ์ค๋ ๋ฉ์ถฐ์ผ๋ง ํ๋ค(waiting ์ํ๊ฐ ๋์ด์ผ๋ง ํจ)
=> ์ด ํ๋ก์ธ์ค๋ฅผ ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๋ก ๋ง๋ค๊ณ ๊ฐ ์ค๋ ๋๊ฐ ๋ค๋ฅธ ์ผ์ ํ๊ฒ ํ๋ค๋ฉด, ํน์ ์ค๋ ๋๋ง ๋ฉ์ถ๋ฉด ๋จ. ํ๋ก์ธ์ค ์ ์ฒด ์
์ฅ์์๋ ์ง๋๊ฐ ๋๊ฐ๊ณ ์๋ค. ๊ทธ๋ ๊ฒ ๋๋ฉด ํ๋ก์ธ์ค์ ์๋ต์ฑ์ด ์ข์์ง๋ค.
2. ํ๋ก์ธ์ค๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ง๋ค๋ฉด ๊ฐ์ ์ผ์ ํ๋ ํ๋ก์ธ์ค๋ผ๋ ๊ฐ๊ฐ์ Address space๋ฅผ ๊ฐ์ง๋ค. ๊ฐ์ ์ผ์ ํ๋ ํ๋ก์ธ์ค๋๊น ๋ด์ฉ์ด ์์ ํ ๊ฐ์ Address space๋ฅผ ๊ฐ๊ฒ ๋๋ค. ๋์ผํ ๋ด์ฉ์ text, data ์์ญ์ด ์ฌ๋ฌ ๊ฐ ๋ง๋ค์ด์ ธ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋ฏ๋ก ์์์ด ๋ญ๋น๋จ.
=> ์ค๋ ๋๋ฅผ ์ฌ์ฉํ๋ฉด ์์์ ๊ณต์ ํ์ฌ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
3. ํ๋ก์ธ์ค๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ง๋๋ ๊ฒ์ ์ค๋ ๋๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ง๋๋ ๊ฒ๋ณด๋ค ์ค๋ฒํค๋๊ฐ ํฌ๋ค.
๊ฐ์ ๋ด์ฉ์ ํ๋ก์ธ์ค๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ง๋ค๋ฉด ๋ง๋ค ๋๋ง๋ค Addresss space ์ ์ฒด๋ฅผ ๋ณต์ฌํด์ผ ํจ. ์ค๋ ๋๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ง๋ค๋ฉด Stack์ด๋ Register ๊ฐ๋ง ๋ณต์ฌํ๋ฉด ๋จ
4. ํ์ฅ์ฑ์ ์ฐจ์ด.
๋ฉํฐ ์ฝ์ด์ผ ๋ ํ๋ก์ธ์ค๊ฐ ํ๋๋ผ๋ฉด, ํ๋์ ํ๋ก์ธ์ค๋ ์ ๋ ์ฌ๋ฌ ์ฝ์ด์์ ์ํ๋ ์๊ฐ ์์. ๊ทธ๋ฐ๋ฐ ๊ทธ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉด, ํ๋์ ํ๋ก์ธ์ค๋ผ๋ ์ฌ๋ฌ ์ฝ์ด์์ ๋์๊ฐ ์ ์์.
=> ๊ทธ๋ฌ๋ฉด ์ง๋๊ฐ ํจ์ฌ ๋นจ๋ฆฌ ๋๊ฐ๊ฒ ๋๋ค
*๋ชจ๋ ๋ด์ฉ์ ํ์๋ํ๊ต ๊ฐ์์ฉ ๊ต์๋์ ๊ฐ์ ๋ด์ฉ์ ์ฐธ๊ณ ํ์ฌ ์์ฑ๋์์ต๋๋ค.
'HYU > ์ด์์ฒด์ (OS)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
5. Process Synchronization (1) (0) | 2023.03.30 |
---|---|
4. CPU Scheduling (3) | 2023.03.24 |
2. Operating System Overview (2) (0) | 2023.03.23 |
2. Operating System Overview (1) (0) | 2023.03.22 |
1. Computer System Overview (2) (0) | 2023.03.20 |