ํ๋ก์ธ์ค๋ ์คํ์ค์ธ ํ๋ก๊ทธ๋จ์ด๋ค.
cpu ์ํ ์ํ๋ฅผ ๋ํ๋ด๋ ํ๋์จ์ด ๋ฌธ๋งฅ
- Program Counter
- ๊ฐ์ข register
ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ
- ํ๋ก์ธ์ค๋ ์คํ ์์ ์ ํ๋ก์ธ์ค๋ง์ ๋ ์์ ์ธ ์ฃผ์๊ณต๊ฐ์ด ํ ๋น๋จ
- code, data, stack
ํ๋ก์ธ์ค ๊ด๋ จ ์ปค๋ ์๋ฃ ๊ตฌ์กฐ
- PCB(Process Control Block)
- Kernel stack
ํ๋ก์ธ์ค์ ์ํ๋ ํฌ๊ฒ 5๊ฐ์ง๋ก ์ ์ํ ์ ์๋ค
- New: ํ๋ก์ธ์ค๊ฐ ์์ฑ์ค์ธ ์ํ
- Running: cpu๋ฅผ ํ ๋น๋ฐ์ ๋ช ๋ น์ด(instruction)์ ์ํ์ค์ธ ์ํ
- Waiting: cpu๋ฅผ ํ ๋นํด์ฃผ์ด๋ ๋น์ฅ ๋ช ๋ น์ด๋ฅผ ์ํํ ์ ์๋ ์ํ
- Process ์์ ์ด ์์ฒญํ event(I/O)๊ฐ ์ฆ์ ๋ง์กฑ๋์ง ์์ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
- ex) ๋์คํฌ์์ file์ ์ฝ์ด์์ผ ํ๋ ๊ฒฝ์ฐ- Ready: cpu๋ฅผ ํ ๋น๋ฐ๊ธธ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํ(๋ฉ๋ชจ๋ฆฌ ๋ฑ ๋ค๋ฅธ ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑ์ํค๋ ๊ฒฝ์ฐ)
- ๋น์ฅ cpu๋ง ํ ๋นํ๋ฉด ์คํ ๊ฐ๋ฅํ ๊ฒฝ์ฐ- Terminated: ์ํ(execution)์ด ๋๋ ์ํ
์ด์์ฒด์ ๊ฐ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ ์งํ๊ณ ์๋ ํ๋ก์ธ์ค ์ ๋ณด
1: OS๊ฐ ๊ด๋ฆฌ์ ์ฌ์ฉํ๋ ์ ๋ณด
- Process State, Process ID
- scheduling information, priority
2: cpu ์ํ ๊ด๋ จ ํ๋์จ์ด ๊ฐ
- Program Counter, register
3: ๋ฉ๋ชจ๋ฆฌ ๊ด๋ จ
- code, stack, data์ ์์น ์ ๋ณด
4: ํ์ผ๊ด๋ จ
- Open file descriptors ๋ฑ
PCB๋ context switch์ด ์ด๋ฃจ์ด์ก์ ๋ ๊ธฐ์กด์ ์คํํ๋ process์ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ์ํด ํ์ํ๋ค
- ๊ทธ๋ ๋ค๋ฉด context switch๋ ๋ญ๊น?
cpu๋ฅผ ํ ํ๋ก์ธ์ค์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋๊ฒจ์ฃผ๋ ๊ณผ์
- 1: ์ํ์ค์ธ ํ๋ก์ธ์ค์ ์ํ๋ฅผ PCB์ ์ ์ฅ
- 2: ์๋กญ๊ฒ ์คํํ ํ๋ก์ธ์ค์ PCB๋ฅผ ์ฝ์ด์จ๋ค
- system call: ํ๋ก์ธ์ค๊ฐ ๋ณธ์ธ์ด ํ์ํด์ ์ด์์ฒด์ ์๊ฒ ๋ฌด์ธ๊ฐ ์์ฒญํ๋ ๊ฒ
- ์ ๋ ๊ฐ์ง ์ฌํญ ์ค ํ๋๊ฐ ๋ฐ์ํ๋ฉด cpu์ ๋ํ ๊ถํ์ด ์ฌ์ฉ์ ํ๋ก์ธ์ค๋ก๋ถํฐ ์ด์์ฒด์ kernel ๋ก ๋์ด๊ฐ๊ฒ ๋๋ค
- ์ด๊ฒ์ context switch๊ฐ ์๋ !
interrupt of system call์ด ๋ฐ์ํ๋ฉด kernel mode์์ ISR(interrupt service routine) or system call ํจ์๋ฅผ ์คํํ ํ context switch๋ฅผ ํ ์ง user mode๋ก ๋ณต๊ทํ ์ง ๊ฒฐ์ ํ๋ค.
- ์ด ๋ user mode๋ก ๋ณต๊ทํ๋ค๋ฉด context switch๋ ์ผ์ด๋์ง ์์ ๊ฒ. ํ์ง๋ง time interrupt๊ฐ ๋ฐ์ํ๋ค๋ฉด kerner mode์์ context switch๋ฅผ ๋ฐ์์ํจ๋ค.
๋ ๊ฐ์ง ๊ฒฝ์ฐ ๋ชจ๋ context์ ์ผ๋ถ๋ฅผ pcb์ ์ ์ฅํด์ผ ํ์ง๋ง context switch๊ฐ ์ผ์ด๋๋ ๊ฒฝ์ฐ์ cost๊ฐ ๋ ๋๋ค
์คํ ๊ฐ๋ฅํ ํ๋ก์ธ์ค ์ค ๋ค์ ์คํ์ ์ํด ํ๋ก์ธ์ค๋ฅผ ๊ณ ๋ฅด๋ ์์
ready queue: main memory์ ๋จ์์๊ฑฐ๋ ์คํํ๊ธฐ ์ํด ready ํน์ waiting ์ํ์ธ ๋ชจ๋ ํ๋ก์ธ์ค์ ์งํฉ
wait queue: event ๋ฐ์์ผ๋ก ์ธํด ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ๋ชจ๋ ํ๋ก์ธ์ค์ ์งํฉ
- ex) I/O request
- ์์ ํ๋ก์ธ์ค ์ค ์ด๋ค ๊ฒ๋ค์ ready queue๋ก ๋ณด๋ผ์ง ๊ฒฐ์
- new ์ํ์ธ ํ๋ก์ธ์ค์ memory๋ฅผ ํ ๋นํ์ฌ ready queue๋ก ๋ณด๋ด๋ ์์
- ํ๋ก์ธ์ค์ memory(๋ฐ ๊ฐ์ข ์์)์ ์ฃผ๋ ๋ฌธ์
- degree of multiprogramming์ ์ ์ด
- memory์ ์ฌ๋ผ๊ฐ ์๋ ํ๋ก์ธ์ค์ ์ -> memory์ ํ๋ก์ธ์ค๊ฐ ๋๋ฌด ๋ง๊ฑฐ๋ ์ ์ด๋ ์ข์ง ์๋ค
- time sharing system์๋ ๋ณดํต ์ฅ๊ธฐ ์ค์ผ์ค๋ฌ๊ฐ ์์ (๋ฌด์กฐ๊ฑด ready)
- ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ๋ค์๋ฒ์ running์ํฌ์ง ๊ฒฐ์
- ํ๋ก์ธ์ค์ cpu๋ฅผ ์ฃผ๋ ๋ฌธ์
- ์ถฉ๋ถํ ๋นจ๋ผ์ผ ํจ(ms ๋จ์)
- ์ฌ์ ๊ณต๊ฐ ๋ง๋ จ์ ์ํด ํ๋ก์ธ์ค๋ฅผ ํต์งธ๋ก ๋ฉ๋ชจ๋ฆฌ->๋์คํฌ๋ก ์ซ์๋
- ํ๋ก์ธ์ค์๊ฒ์ memory๋ฅผ ๋บ๋ ๋ฌธ์
- degree of multiprogramming์ ์ ์ด
- ๋๋ถ๋ถ ์ฅ๊ธฐ ์ค์ผ์ค๋ฌ๊ฐ ์๊ณ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋์๋ง์ memory์ ์ฌ๋ ค ready queue์ ์ง์ ํ๊ธฐ ๋๋ฌธ์ memory์ ๋๋ฌด ๋ง์ ํ๋ก์ธ์๊ฐ ์ฌ๋ผ๊ฐ ์๋ ๊ฒ์ ๋ฐฉ์งํ๋ค
Swapper์ ์ํด ์๋กญ๊ฒ ์ ์ํ process state
์ธ๋ถ์ ์ธ ์ด์ ๋ก ํ๋ก์ธ์ค์ ์ํ์ด ์ ์ง๋ ์ํ
ํ๋ก์ธ์ค๋ ํต์จฐ๋ก ๋์คํฌ์ swap out ๋๋ค
- ex) ์ฌ์ฉ์๊ฐ ํ๋ก๊ทธ๋จ์ ์ผ์ ์ ์ง์ํจ ๊ฒฝ์ฐ (break key)
- ์์คํ ์ด ์ฌ๋ฌ ์ด์ ๋ก ํ๋ก์ธ์ค๋ฅผ ์ ์ ์ค๋จ์ํด(๋ฉ๋ชจ๋ฆฌ์ ๋๋ฌด ๋ง์ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ผ์ ์์ ๋)
- ํ๋ก์ธ์ค๋ ๊ฐ๊ฐ ๋ ๋ฆฝ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ(Code, Data, Stack, Heap์ ๊ตฌ์กฐ)์ ํ ๋น๋ฐ๋๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ก์ธ์ค๋น ์ต์ 1๊ฐ์ ์ค๋ ๋(๋ฉ์ธ ์ค๋ ๋)๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- ๊ฐ ํ๋ก์ธ์ค๋ ๋ณ๋์ ์ฃผ์ ๊ณต๊ฐ์์ ์คํ๋๋ฉฐ, ํ ํ๋ก์ธ์ค๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋ณ์๋ ์๋ฃ๊ตฌ์กฐ์ ์ ๊ทผํ ์ ์๋ค.
- ํ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์์์ ์ ๊ทผํ๋ ค๋ฉด ํ๋ก์ธ์ค ๊ฐ์ ํต์ (IPC, inter-process communication)์ ์ฌ์ฉํด์ผ ํ๋ค. (Ex. ํ์ดํ, ํ์ผ, ์์ผ ๋ฑ์ ์ด์ฉํ ํต์ ๋ฐฉ๋ฒ ์ด์ฉ)
ํ๋ก์ธ์ค๋ ์ด์์ฒด์ ๋ก๋ถํฐ ์์์ ํ ๋น๋ฐ๋ ์์ ์ ๋จ์์ด๊ณ , ์ค๋ ๋๋ ํ๋ก์ธ์ค๊ฐ ํ ๋น๋ฐ์ ์์์ ์ด์ฉํ๋ ์คํ์ ๋จ์ ์ด๋ค.
ํ๋ก์ธ์ค๋ ์ด์์ฒด์ ๋ก๋ถํฐ ๋ฉ๋ชจ๋ฆฌ, ์ฃผ์ ๊ณต๊ฐ ๋ฑ์ ํ ๋น๋ฐ๊ณ ์ฐ๋ ๋๋ ํ ๋น๋ฐ์ ์์๋ค์ ๋ด๋ถ ์ค๋ ๋๋ผ๋ฆฌ ๊ณต์ ํ๋ฉด์ ์คํ๋๋ค.
- ์ฝ๊ฒ ์ค๋ช ํ๋ฉด, ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ๊ฐ ํค๋ ๊ฒ๋ณด๋ค ํ๋์ ํ๋ก๊ทธ๋จ ์์์ ์ฌ๋ฌ ์์ ์ ํด๊ฒฐํ๋ ๊ฒ์ด๋ค.
- ์์์ ํจ์จ์ฑ ์ฆ๋ : ๋ฉํฐ ํ๋ก์ธ์ค๋ก ์คํ๋๋ ์์ ์ ๋ฉํฐ ์ค๋ ๋๋ก ์คํํ ๊ฒฝ์ฐ, ํ๋ก์ธ์ค๋ฅผ ์์ฑํ์ฌ ์์์ ํ ๋นํ๋ ์์คํ ์ฝ์ด ์ค์ด๋ค์ด ์์์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค. (ํ๋ก์ธ์ค ๊ฐ์ Context Switching์ ๋จ์ํ CPU ๋ ์ง์คํฐ ๊ต์ฒด ๋ฟ๋ง ์๋๋ผ RAM๊ณผ CPU ์ฌ์ด์ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ๋ฐ์ดํฐ๊น์ง ์ด๊ธฐํ๋๋ฏ๋ก ์ค๋ฒํค๋๊ฐ ํฌ๊ธฐ ๋๋ฌธ) : ์ค๋ ๋๋ ํ๋ก์ธ์ค ๋ด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ๋ ๋ฆฝ์ ์ธ ํ๋ก์ธ์ค์ ๋ฌ๋ฆฌ ์ค๋ ๋ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ด ๊ฐ๋จํด์ง๊ณ ์์คํ ์์ ์๋ชจ๊ฐ ์ค์ด๋ค๊ฒ ๋๋ค.
- ์ฒ๋ฆฌ ๋น์ฉ ๊ฐ์ ๋ฐ ์๋ต ์๊ฐ ๋จ์ถ : ํ๋ก์ธ์ค ๊ฐ์ ํต์ (IPC)๋ณด๋ค ์ค๋ ๋ ๊ฐ์ ํต์ ์ ๋น์ฉ์ด ์ ์ผ๋ฏ๋ก ์์ ๋ค ๊ฐ์ ํต์ ์ ๋ถ๋ด์ด ์ค์ด๋ ๋ค. (์ค๋ ๋๋ Stack ์์ญ์ ์ ์ธํ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ) : ํ๋ก์ธ์ค ๊ฐ์ ์ ํ ์๋๋ณด๋ค ์ค๋ ๋ ๊ฐ์ ์ ํ ์๋๊ฐ ๋น ๋ฅด๋ค. (Context Switching์ ์ค๋ ๋๋ Stack ์์ญ๋ง ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ)
๋ฉํฐ ํ๋ก์ธ์ฑ์ ์ฌ๋ฌ๊ฐ์ ์ฒ๋ฆฌ์ฅ์น(CPU)๋ฅผ ์ฅ์ฐฉํ์ฌ ๋์์ ์ฌ๋ฌ ์์ ์ ๋ณ๋ ฌ๋ก ์คํํ๋ ๋ฐฉ๋ฒ.
๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ์ ๋ค์ ๊ฐ์ ํ๋ก๊ทธ๋จ์ ๊ฐ์ด ์ฃผ๊ธฐ์ต์ฅ์น์ ์๋๋ก ํ ๋ฐฉ์.
ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ธฐ ์ํด ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๊ฐ ๋์ด์ผํ๋ค.
๋ฐ๋ผ์ ์ด์์ฒด์ ์์ ํ๋ก๊ทธ๋จ์ ์คํ์ ์ํด ๋คํฅํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ๊ณตํ๋ค.
์ฝ๋, ๋ฐ์ดํฐ, ์คํ, ํ ์์ญ์ด ํ ๋น๋๊ณ ๊ฐ ์ญํ ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ฝ๋ : ์คํํ ํ๋ก๊ทธ๋จ์ ์ฝ๋๊ฐ ์ ์ฅ๋๋ ํ ์คํธ ์์ญ์ด๋ค. CPU๋ ์ฝ๋์์ญ์์ ์ ์ฅ๋ ๋ช ๋ น์ด๋ฅผ ํ๋์ฉ ๊ฐ์ ธ๊ฐ์ ์ฒ๋ฆฌํ๋ค.
- ๋ฐ์ดํฐ : ์ ์ญ๋ณ์์ ์ ์ ๋ณ์๊ฐ ์ดํด ํด๋น๋๋ค. ํ๋ก๊ทธ๋จ์ ์์๊ณผ ํจ๊ป ํ ๋น๋๋ฉฐ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋ฉด ์๋ฉธ๋๋ค.
- ์คํ : ์คํ์์ญ์ ํจ์์ ํธ์ถ๊ณผ ๊ด๊ณ๋๋ ์ง์ญ๋ณ์์ ๋งค๊ฐ๋ณ์๊ฐ ์ ์ฅ๋๋ ์์ญ์ด๋ค.
ํจ์์ ํธ์ถ๊ณผ ํจ๊ป ํ ๋น๋๋ฉฐ, ํจ์์ ํธ์ถ์ด ์ข ๋ฃ๋ ๋ ํด์ ๋๋ค.- ํ : ํ ์์ญ์ ์ฌ์ฉ์๊ฐ ์ง์ ๊ด๋ฆฌํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค. ํ ์์ญ์ ์ฌ์ฉ์์ ์ํด ๋ฉ๋ชจ๋ฆฌ๊ณต๊ฐ์ด ๋์ ์ผ๋ก ํ ๋น๋๊ณ ํด์ ๋๋ค.
์ฐธ๊ณ ์๋ฃ) -ย KOCW ๊ณต๊ฐ๊ฐ์ (2014-1. ์ดํ์ฌ์๋ํ๊ต - ๋ฐํจ๊ฒฝ)