PCB์ Context Switching
Table of Contents
์ฌ๊ธฐ์๋ ๋ณผ ์ ์์ด์
๐ ํ๋ก์ธ์ค
๐ ํ๋ก๊ทธ๋จ๊ณผ ํ๋ก์ธ์ค โจ
์ด์์ฒด์ ์์ ํ๋ก์ธ์ค
๋ ํ๋์ ์์
๋จ์์
๋๋ค. (๊ทธ๋์ ํ๋ก์ธ์ค๋ฅผ task
๋ผ๊ณ ๋ ๋ถ๋ฆ
๋๋ค.) ์ฌ์ฉ์๊ฐ ๋ง์ฐ์ค๋ฅผ ๋๋ธํด๋ฆญํ์ฌ ํ๋ก๊ทธ๋จ
์ ์คํํ๋ฉด ๊ทธ ํ๋ก๊ทธ๋จ์ด ํ๋ก์ธ์ค๊ฐ ๋๋ ๊ฒ๋๋ค. ๊ทธ๋ผ ์ ํํ ๋์ ์ฐจ์ด๋ ๋ญ๊น์?
์ ์ ์ธ ์ํ vs. ๋์ ์ธ ์ํ
ํ๋ก๊ทธ๋จ์ ์ ์ฅ์ฅ์น์ ๋ณด๊ด๋์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ค๋ ๊ฑด ํ๋ก๊ทธ๋จ ์ฝ๋๊ฐ
๋ฉ๋ชจ๋ฆฌ
์ ์ฌ๋ผ์์ ์์ ์ด ์งํ๋๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฒ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ๊ฒ์ด ํ๋ก์ธ์ค๋ผ๊ณ ํ ์ ์์ต๋๋ค.
ํ๋ก๊ทธ๋จ์ ์์ ์ ์ฐจ๋ฅผ ์ญ ์ ์ด๋์ ๊ฒ์ด๊ณ , ํ๋ก์ธ์ค๋ ๊ทธ ์์ฑ๋ ์์ ์ ์ฐจ๋ฅผ ์ค์ ๋ก ์คํํ๋ ๊ฒ์ ๋๋ค.
์๋ฅผ ๋ค์๋ฉด, ์๋ฆฌํ ๋ ๋ ์ํผ๋ฅผ ๋ณด๊ณ ๋ ์ํผ๋ฅผ ์์๋๋ก ์คํํ๋ฉด์ ์๋ฆฌ๋ฅผ ํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ์ด ๋ ๋ ์ํผ๊ฐ ํ๋ก๊ทธ๋จ์ด๊ณ , ์๋ฆฌ๋ฅผ ํ๋ ๊ฒ์ ํ๋ก์ธ์ค๊ฐ ๋ช ๋ น์ ์คํํ๋ ๊ฒ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
์ด ๋, ๋ ์คํ ๋์์ ์๋ฆฌํ๋ ์๋ฆฌ์ฌ๋ฅผ ์๊ฐํด๋ด ์๋ค. ๊ณ์ํด์ ์ฌ๋ฌ ์๋ฆฌ ์ฃผ๋ฌธ์ด ๋ค์ด์ค๊ฒ ์ฃ ? ๊ทผ๋ฐ ์๋ฆฌ์ฌ๊ฐ ํ ๋ฒ์ ํ ์๋ฆฌ๋ง ์๋ฆฌํ๋ฉด ์ด๋จ๊น์? ์๋๋ค๋ ์ค๋ ๊ธฐ๋ค๋ฆฌ๊ณ , ๋นํจ์จ์ ์ผ๋ก ์๋ฆฌ๋ฅผ ํ๊ฒ ๋๊ฒ ์ฃ ? ํ๋ก์ธ์ค๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. CPU๊ฐ ํ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ์คํํ์ง ๋ชปํ๋ค๋ฉด ๋นํจ์จ์ ์ ๋๋ค. ๊ทธ๋์ ์ค์ ๋ก ํ๋ก์ธ์ค ์ญ์
Context Switching(๋ฌธ๋งฅ ๊ตํ)
์ ํตํด ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ์คํ๋๊ฒ ๋ฉ๋๋ค.
๐ ํ๋ก๊ทธ๋จ์์ ํ๋ก์ธ์ค๋ก
๋์ ์ฐจ์ด๋ ์๊ฒ ์ต๋๋ค. ๊ทธ๋ผ ํ๋ก๊ทธ๋จ์์ ์ ํํ ์ด๋ป๊ฒ ํ๋ก์ธ์ค๋ก ์ ํ๋๋ ๊ฑธ๊น์?
์ฐ์ ๋ช ๋ น์ด๋ฅผ ์คํํ๊ธฐ ์ํด์๋ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ผ ํ๊ฒ ์ฃ ? ๊ทธ๋์ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๋นํ ์์น๋ก ๊ฐ์ ธ์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ธ์ค๊ธฐ๋ง ํ๋ฉด ๋์ผ๊น์?
์์ ์ ์ง์ง๋ก ํ๋ ๊ฑด CPU์ ๋๋ค. CPU๊ฐ ํ๋ก์ธ์ค๋ฅผ ์คํํ๊ธฐ ์ํด์๋ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ด๋์ ์ฌ๋ผ์ ์๋ ์ง๋ฅผ ์์์ผํ ๊ฒ์ ๋๋ค. ๋, ์์์ Context Switching์ ํตํด ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ์คํ๋๋ค๊ณ ํ์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด์ ์ ํ๋ก์ธ์ค๊ฐ ์ด๋๊น์ง ์คํ๋๋ ์ง ์ ๋ณด๋ ํ์ํฉ๋๋ค. ๋ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์คํ๋๊ณ ์์ผ๋, ํ๋ก์ธ์ค๋ง๋ค ์ด๋ฆ์ด ์์ด์ผ ์๋ก ๊ตฌ๋ถํ๊ณ ์ํ๋ ๊ฑธ ์คํํ ์๋ ์์ ๊ฒ์ ๋๋ค.
์ฆ, ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ๊ฒ ๋ฟ๋ง ์๋ ์ด๋ฐ ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ๊ฐ์ข
์ ๋ณด๋ค์ ์ ์ฅํด๋์ผ ํฉ๋๋ค. ์ด ์ ๋ณด๋ค์ ์ด์์ฒด์ ๋ PCB(Process Control Block)
๋ฅผ ์์ฑํด์ ๊ด๋ฆฌํฉ๋๋ค.
๐ ํ๋ก์ธ์ค์ ์ํ โจ
์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ์คํํ๋ค๋ฉด, ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค๋ ์์๊ฒ์ด๊ณ , ๋๊ธฐ ์ค์ด๊ฑฐ๋, ์คํ์ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค๊ฐ ์์ ๊ฒ์ ๋๋ค. OS๋ ์ด๋ฐ ํ๋ก์ธ์ค์ ์ํ๋ฅผ ๊ด๋ฆฌํด์ผ ๋ค์์ ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ์คํํ ์ง ์ ์ ์๊ฒ ์ฃ ?
์ด๋ฐ ํ๋ก์ธ์ค์ ์ํ๋ง๋ค OS๋ ์ฌ๋ฌ ํ์ ์ queue๋ฅผ ๋๊ณ ๊ด๋ฆฌํฉ๋๋ค.
์ฌ๊ธฐ์ queue๋ผ๊ณ ํ์ง๋ง, ์ค์ ๋ก๋ OS๋ง๋ค ๋ค๋ฅด๊ฒ ๊ตฌํ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด linux๋ Red Black Tree๋ฅผ ์ด์ฉํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด queue์ PCB๋ฅผ ๋ฃ์ด์ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋๋ค.
๐ ์ ํ๋ก์ธ์ค์ ์ํ๋ง๋ค ํ๋ฅผ ๋๊ณ ๊ด๋ฆฌํ๋ ๊ฑธ๊น์?
๐ ํ๋ก์ธ์ค์ ์ํ ์ข
๋ฅ
ํฌ๊ฒ๋ Run, Ready, Waiting 3๊ฐ์ง ์ํ๋ก ๋ณผ ์๋ ์๊ณ , ์ด์ธ์๋ ์ฌ๋ฌ ํ๋ก์ธ์ค ์ํ ๋ชจ๋ธ์ด ์๋๋ฐ, 5๊ฐ์ง ์ํ์ ํ๋ก์ธ์ค ๋ชจ๋ธ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์์ฑ ์ํ
create
ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์คํ ์ค๋น๋ฅผ ์๋ฃํ ์ํ์ ๋๋ค.
์ด ๋ PCB๋ ์์ฑ๋ฉ๋๋ค.
์ค๋น ์ํ
ready
์์ฑ๋ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ป์ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์ํ. ์๊ธฐ ์คํ ์์๊ฐ ๋ ๋๊น์ง ํ๋ก์ธ์ค๋ ์ค๋น ์ํ์์ ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค.
CPU scheduler๊ฐ ์ค๋น ํ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. CPU ์ค์ผ์ค๋ฌ๋ Context Switching์ด ์ผ์ด๋ ๋ ์ด๋ค ํ๋ก์ธ์ค๋ฅผ running ์ํฌ ์ง ๊ฒฐ์ ํฉ๋๋ค. ๋ ์์ธํ ๊ฑด ์ค์ผ์ค๋ฌ ๊ด๋ จํด์ ๋ฐ๋ก ์ ๋ฆฌํ๊ฒ ์ต๋๋ค.
์คํ ์ํ
running
์ค๋น ์ํ์ ์๋ ํ๋ก์ธ์ค ์ค ํ๋๊ฐ CPU๋ฅผ ์ป์ด ์ค์ ์์ ์ ์ํํ๋ ์ํ์ ๋๋ค.
์ผ์ ์๊ฐ๋์ CPU๋ฅผ ์ฌ์ฉํ ๊ถ๋ฆฌ๋ฅผ ๊ฐ๋๋ค. ์ฃผ์ด์ง ์๊ฐ๋์ ์์ ์ด ๋๋์ง ์์๋ค๋ฉด ๋ค์ ์ค๋น ์ํ๋ก ๋์๊ฐ๋๋ค.
์๋ฃ ์ํ
terminate
exit
์ฃผ์ด์ง ์๊ฐ๋์ ์์ ์ ์๋ฃํ ์ํ์ ๋๋ค.
์ด ๋ PCB๋ ํ๊ธฐํ๊ณ , ์ฝ๋์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ์ญ์ ํฉ๋๋ค.
์ ์์ ์ข ๋ฃ๋ผ๋ฉด exit()๋ก ๊ฐ๋จํ๊ฒ ์ฒ๋ฆฌ๋์ง๋ง, ์ค๋ฅ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํด ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋๋ ๊ฐ์ ์ข ๋ฃ(abort)๋ฅผ ๋ง๋๋ฉด ๋๋ฒ๊น ํ๊ธฐ ์ํด ๊ฐ์ ์ข ๋ฃ ์ง์ ์ ๋ฉ๋ชจ๋ฆฌ ์ํ๋ฅผ ์ ์ฅ์ฅ์น๋ก ์ฎ๊น๋๋ค. ์ด๋ฅผ ์ฝ์ด ๋คํ(core dump)๋ผ๊ณ ํฉ๋๋ค.
๋๊ธฐ ์ํ
blocking
waiting
ํ๋ก์ธ์ค๊ฐ ์ ์ถ๋ ฅ์ ์๊ตฌํ๋ฉด, CPU๊ฐ ์ง์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ด ์๋๊ณ ์ ์ถ๋ ฅ ๊ด๋ฆฌ์์๊ฒ ๋ช ๋ น์ ๋ด๋ฆฝ๋๋ค. ์ด ์ํ์์ ํ๋ก์ธ์ค๊ฐ ์์ฒญํ ์์ ์ด ๋๋ ๋๊น์ง CPU๊ฐ ์๋ฌด ์์ ๋ ํ์ง ์๊ณ ๊ธฐ๋ค๋ฆฌ๋ฉด ํจ์จ์ฑ์ด ๋จ์ด์ง๊ฒ ์ฃ ?
๋ฐ๋ผ์ ์ ์ถ๋ ฅ์ ์๊ตฌํ ํ๋ก์ธ์ค๊ฐ ์ ์ถ๋ ฅ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์ํ์ ๋๋ค.
๋๊ธฐ ์ํ์ ํ๋ก์ธ์ค๋ ์์ฒญํ ์ ์ถ๋ ฅ์ด ์๋ฃ๋๋ฉด ์ ์ถ๋ ฅ ๊ด๋ฆฌ์๋ก๋ถํฐ ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ์ต๋๋ค. ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค๊ฐ ์๊ธฐ ๋๋ฌธ์, ๋๊ธฐ ์ํ์ ํ๋ก์ธ์ค๋ ๋ฐ๋ก ์คํ ์ํ๋ก ๋์๊ฐ์ง ์๊ณ , ์ค๋น ์ํ๋ก ๋์๊ฐ์ ๋ค์ ์๊ธฐ ์ฐจ๋ก๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค.
๐ PCB: Process Control Block
๐ ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก
ํ๋ก์ธ์ค์ ๊ฐ์์์ ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ ๋ฐ ๋ฉ๋ชจ๋ฆฌ๋ง ํ์ํ ๊ฒ์ด ์๋๊ณ , ๊ด๋ฆฌํ๊ธฐ ์ํ ์๋ฃ ๊ตฌ์กฐ๋ก PCB๊ฐ ํ์ํ๋ค๊ณ ํ์ฃ ? PCB์ ๋ํด ๋ ์์๋ด ์๋ค.
ํ๋ก์ธ์ค๋ฅผ Task๋ผ๊ณ ๋ ํ๋ ๊ฒ์ฒ๋ผ, PCB ์ญ์ TCB๋ผ๊ณ ๋ ๋ถ๋ฆ ๋๋ค.
โ๏ธPCB ๊ตฌ์ฑ
ํฌ์ธํฐ
ํ๋ก์ธ์ค ์ํ
Process ID
Process Priority
Program Counter
๊ฐ์ข CPU Registers ์ ๋ณด
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ ๋ณด
ํ ๋น๋ ์์ ์ ๋ณด
PPID์ CPID
ํฌ์ธํฐ
ํ๋ก์ธ์ค์ ๊ฐ์์์ ํ๋ก์ธ์ค์ ์ํ์ ๋ฐ๋ผ ํ๋ก ์ด์๋๋ค๊ณ ํ์ต๋๋ค. ์ด ๋ queue์์ PCB๋ฅผ ์ฐ๊ฒฐํ ๋ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํ๋ก์ธ์ค ์ํ
Run, Ready, Waiting ๋ฑ์ ์ํ
ํ๋ก์ธ์ค ID
ํ๋ก์ธ์ค๋ฅผ ๊ตฌ๋ณํ๊ธฐ ์ํ ๊ตฌ๋ถ์
ํ๋ก๊ทธ๋จ ์ฐ์ ์์
CPU Scheduling์ด ์ผ์ด๋์ ์ค์ผ์ค๋ฌ๊ฐ ์ค๋น ์ํ์ ์๋ ํ๋ก์ธ์ค ์ค ์คํ ์ํ๋ก ์ฎ๊ฒจ์ผ ํ ํ๋ก์ธ์ค๋ฅผ ์ด๋ป๊ฒ ์ ํํ ๊น์?
ํ๋ก์ธ์ค ์ฐ์ ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์์, ๋์ ์ฐ์ ์์์ ํ๋ก์ธ์ค๋ฅผ ๋จผ์ ์คํํ๊ฒ ๋ฉ๋๋ค. ์ด์ ๊ดํ๊ฑด ์ค์ผ์ค๋ง๋ง ๋ค๋ฃฐ ๋ ๋ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ํ๋ก๊ทธ๋จ ์นด์ดํฐ
๋ค์์ ์คํ๋ ๋ช ๋ น์ด์ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋ ํ๋ก๊ทธ๋จ ์นด์ดํฐ ๊ฐ์ ์ ์ฅํด๋์ต๋๋ค. ์ด๊ฒ ์์ด์ผ Context Switching์ด ์ผ์ด๋์ ๋ค์ ํ๋ก์ธ์ค๊ฐ ์คํ๋ ๋ ์ด๋๋ฅผ ์คํํด์ผํ ์ง ์ ์ ์๊ฒ ์ฃ ?
๊ฐ์ข ๋ ์ง์คํฐ ์ ๋ณด
ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ฉด์ ํจ์๋ฅผ ํธ์ถํ ๋๋ง๋ค ์ง์ญ ๋ณ์๋ ์คํ์ ์ ์ฅ๋์ฃ ? ๊ทธ๋ผ ์ด ์คํ์ด ์ด๋จ๋ ์ง๋ฅผ ์์์ผ ์ ์ฅ์ ํ ์ ์์ต๋๋ค. ์ด ๋
์คํ ํฌ์ธํฐ
๋ ์ด ๋ ์ง์คํฐ ์ ๋ณด์ ํฌํจ๋ฉ๋๋ค.์ด ๊ฐ์ ์ ์ฅํด๋์ผ ๋ค์์ ์คํํ ๋ ์ด์ด์ ์คํํ ์ ์์ ๊ฑฐ์์.
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ ๋ณด
ํ ๋น๋ฐ์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ด๋ ์๋์ง ๋ํ๋ด๋ ์์น ์ ๋ณด,
segmentation table
,page table
์ ์ ๋ณด๋ ๋ณด๊ดํฉ๋๋ค. ๋ ์์ธํ ๊ฑด ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ํด ๋ค๋ฃฐ ๋ ์ ๋ฆฌํ๊ฒ ์ต๋๋ค.
ํ ๋น๋ ์์ ์ ๋ณด
ํ๋ก์ธ์ค๊ฐ ์คํ ์ค์ ์ฌ์ฉํ๋ ํ์ผ, ์ ์ถ๋ ฅ ์ฅ์น ๊ฐ์ ๋ฆฌ์์ค๋ ์ฒ์ ์ฌ์ฉ๋ ๋ OS๊ฐ ๋ฆฌ์์ค ๋ฒํธ๋ฅผ ํ ๋นํฉ๋๋ค. ์ด ๋ ์ด ๋ฒํธ๋ ์์ ์ ์๋ก์, PCB์ file descriptor table์ ๋ฑ๋ก๋ฉ๋๋ค.
์ฐธ๊ณ : bash-shell/file_descriptors
PPID์ CPID
๋ถ๋ชจ ํ๋ก์ธ์ค๋ฅผ ๊ฐ๋ฆฌํค๋ PPID, ์์ ํ๋ก์ธ์ค(๋ค)๋ฅผ ๊ฐ๋ฆฌํค๋ CPID ์ ๋ณด๋ ์ ์ฅ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด
fork()
์์คํ ํธ์ถ๋ก ํ๋ก์ธ์ค๊ฐ ๋ณต์ฌ๋ฉ๋๋ค. ์ด ๋ ์๋ ์คํํ๋ ํ๋ก์ธ์ค๋ ๋ถ๋ชจ ํ๋ก์ธ์ค, ์๋ก ์๊ธด ํ๋ก์ธ์ค๋ ์์ ํ๋ก์ธ์ค๋ก ๋ถ๋ชจ-์์ ๊ด๊ณ๊ฐ ๋ฉ๋๋ค.
๐ Context Switching โจ
CPU๊ฐ ํ ํ๋ก์ธ์ค๊ฐ ๋๋ ๋๊น์ง ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ์คํํ์ง ์์ผ๋ฉด ๋นํจ์จ์ ์ด์ด์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ๋ฒ๊ฐ์๊ฐ๋ฉด์ ์คํํ๊ณ , ๊ทธ ๋ ํ๋ก์ธ์ค์ ์ ๋ณด๋ค์ PCB์ ์ ์ฅํด์ ๊ด๋ฆฌํ๋ค๊ณ ํ์ต๋๋ค. ๊ทธ๋ผ ์ด๋ป๊ฒ ๋ฒ๊ฐ์๊ฐ๋ฉด์ ์คํํ ๊น์?
โ๏ธ Context Switching(๋ฌธ๋งฅ ๊ตํ)์ด๋
Context Switching์ด๋ CPU๋ฅผ ์ฐจ์งํ๋ ํ๋ก์ธ์ค๊ฐ ๋๊ฐ๊ณ ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ๋ฐ์๋ค์ด๋ ์์ ์ ๋๋ค. ์ด ๋ ์คํ ์ํ์์ ๋๊ฐ๋ PCB์๋ ์ง๊ธ๊น์ง์ ์์ ๋ด์ฉ์ ์ ์ฅํ๊ณ , ๋ฐ๋๋ก ์คํ ์ํ๋ก ๋ค์ด์ค๋ PCB์ ๋ด์ฉ์ ์ฝ์ด์ ๋ ์ง์คํฐ์ ์ ์ฌํ์ฌ CPU๊ฐ ์ธํ ๋ฉ๋๋ค. ๊ทธ๋์ผ ๋ค์ด์ค๋ ํ๋ก์ธ์ค๊ฐ ๊ณ์ํด์ ์ด์ด์ ์์ ์ ํ ์ ์๊ฒ ์ฃ ?
์ฆ, ์ด์ ๊ฐ์ด ๋ ํ๋ก์ธ์ค์ PCB๋ฅผ ๊ตํํ๋ ์์ ์ด Context Switching์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ ๊ต์ฒด๋๋ ์๋ก์ด ํ๋ก์ธ์ค๋ CPU ์ค์ผ์ค๋ฌ์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค.
โ๏ธ ์ธ์ ์ผ์ด๋ ๊น?
์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ์ ๋ ์ผ์ด๋ฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก๋ ํ๋ก์ธ์ค๊ฐ ์ฃผ์ด์ง CPU ์ฌ์ฉ ํ๊ฐ ์๊ฐ์ ๋ชจ๋ ์์งํ ๋
์ ์ถ๋ ฅ์ ์ํด ๋๊ธฐํ ๋
์์ ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค ๋
์ธํฐ๋ฝํธ ์ฒ๋ฆฌ๋ฅผ ๊ธฐ๋ค๋ฆด ๋
โ๏ธ ์ ์ฐจ
ํ๋ก์ธ์ค P1๊ณผ P2์ Context switching ๊ณผ์ ์ ์ข ๋ ์ดํด๋ด ์๋ค.
1
์ธํฐ๋ฝํธ/ ์์คํ ํธ์ถ
์ด๋ค ์ด์ ๋ก ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์คํ ์ํ์ ์๋ ํ๋ก์ธ์ค P1์ด ์ฃผ์ด์ง ์๊ฐ์ ๋ค ์ฌ์ฉํ์ฌ ์ด์์ฒด์ ์์ ์ค์ผ์ค๋ฌ์ ์ํด ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํฉ๋๋ค.
2
์ปค๋ ๋ชจ๋ ์ ํ
P1์ด ์ ์ ๋ชจ๋์์ ์ปค๋ ๋ชจ๋๋ก ์ ํ, P1์ ์ค๋น ์ํ
3
ํ์ฌ ํ๋ก์ธ์ค ์ํ PCB์ ์ ์ฅ
P1์ ํ์ฌ ํ๋ก์ธ์ค ์ํ PCB์ ์ ์ฅ
4
๋ค์ ์คํ ํ๋ก์ธ์ค ๋ก๋
P2์ PCB ์ ๋ณด๋ฅผ ํตํด CPU ๋ ์ง์คํฐ ์ ๋ณด๋ฅผ ์ฑ์ ์ด ๋ Program Counter๋ฅผ ํตํด ์ด๋ ๋ช ๋ น์ด๋ฅผ ์คํํ ์ง๋ฅผ ์ ์ ์๊ณ , Stack Pointer๋ฅผ ํตํด ํ๋ก์ธ์ค์ ์คํ ์์ญ ๋ง์ง๋ง ์ฃผ์๋ฅผ ์ ์ ์์ต๋๋ค.
5
์ ์ ๋ชจ๋ ์ ํ
P2 ํ๋ก์ธ์ค ์ปค๋ ๋ชจ๋์์ ์ ์ ๋ชจ๋๋ก ์ ํ๋์ด ์คํ
โ๏ธ๋จ์
Context Switching์ด ๋๋ฌด ์ฆ์ผ๋ฉด ์ค๋ฒํค๋๊ฐ ๋ฐ์ํด์ ์ฑ๋ฅ์ด ๋จ์ด์ง๋๋ค.
์ปค๋ ๋ชจ๋, ์ ์ ๋ชจ๋ ์ ํํ๋ฉด์ ์ํ ์ ์ฅํ๊ณ ๋ ์ง์คํฐ๊ฐ ๋ค์ ๋ถ๋ฌ์ค๊ณ ..
๊ทธ ์ธ์๋ ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ๋น์์ผ ํ๊ณ ..
์ด๋ฌ๋ ๋์ CPU๋ ๋ค๋ฅธ ์์ ์ ํ์ง ๋ชปํฉ๋๋ค.
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ CPU๋ฅผ ๊ทธ๋ฅ ๋๊ฒ ๋๋๋ ๊ฒ๋ณด๋ค ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ์ํ์ํค๋ ๊ฒ์ด ๋ ํจ์จ์ ์ผ ๋ ์ค์ผ์ค๋ฌ๋ Context Switching์ ํฉ๋๋ค.
๐ ์ค๋ฒํค๋๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์๊น์?
๐ ๋ค์์ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์ต๋๋ค.
ํ๋ถ ์์
Last updated