ํ๋ก์ธ์ค์ ์ค๋ ๋.
๋ญ๊ฐ ์ฌ๋ฌ๊ฐ์ง ์ผ์ ๋์์ ์ฒ๋ฆฌํ ์ ์์ ๊ฒ ๊ฐ์ ๊ธฐ๋ฅ. ๋น์ทํ ์๋ฏธ์ธ๊ฐ?
<ํค์๋>
ํ๋ก์ธ์ค์ ์ค๋ ๋๋ ์๋ฒฝํ ๋ค๋ฅธ ๋ฌด์์ธ๊ฐ๊ฐ ์๋๋ค.
[์์]
ํผ์๊ฐ๊ฒ ์์
ํผ์ ๋ ์ํผ = ์ฝ๋(โ ํ๋ก๊ทธ๋จ)
ํผ์ = ํ๋ก์ธ์ค
์ปจํ
์คํธ ์ค์์นญ(Context Switching)
-> ์ด๋ฅผ ๊ฐ์ ํ ๊ฒ์ด ๊ฒฝ๋ํ๋ ํ๋ก์ธ์ค(Lightweight Process)
์ปจํ ์คํธ ์ค์์นญ(Context Switching)์ ์ปดํจํฐ ์ด์ ์ฒด์ ์์ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ CPU(Central Processing Unit)๋ฅผ ๊ณต์ ํ ๋ ๋ฐ์ํ๋ ํ์์ ๋๋ค. ํ๋์ ํ๋ก์ธ์ค๊ฐ ์คํ ์ค์ธ ๋์ค์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ์ ํ๋๋ ๊ณผ์ ์ ๋ํ๋ ๋๋ค. ์ปจํ ์คํธ ์ค์์นญ์ ๋ค์๊ณผ ๊ฐ์ ์ํฉ์์ ๋ฐ์ํฉ๋๋ค:
์ปจํ ์คํธ ์ค์์นญ์ ๋น์ฉ์ด ๋ฐ์ํ๋ฉฐ, ์์คํ ์ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ํ๋ก์ธ์ค์ ์ํ๋ฅผ ์ ์ฅํ๊ณ ๋ณต์ํ๋ ์์ ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ฒฝ๋ํ๋ ํ๋ก์ธ์ค(Lightweight Process)๋ ์ปจํ ์คํธ ์ค์์นญ์ ๋น์ฉ์ ์ค์ด๊ธฐ ์ํ ๊ฐ๋ ์ ๋๋ค. ๊ฒฝ๋ํ๋ ํ๋ก์ธ์ค๋ ์ด์ ์ฒด์ ์์ค์์ ๊ด๋ฆฌ๋๋ฉฐ, ์ ํต์ ์ธ ํ๋ก์ธ์ค์๋ ๋ค๋ฅด๊ฒ ์ค๋ ๋(Thread)์ฒ๋ผ ๊ฐ๋ฒผ์ด ๋จ์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ฒฝ๋ํ๋ ํ๋ก์ธ์ค๋ ์์ฒด ์คํ๊ณผ ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก์ ๊ฐ์ง๋ฉฐ, ์ฌ๋ฌ ๊ฐ์ ๊ฒฝ๋ํ๋ ํ๋ก์ธ์ค๊ฐ ํ๋์ ์ค์ ํ๋ก์ธ์ค(ํ๋ก์ธ์ค ์ปจํ ์ด๋) ๋ด์์ ์คํ๋ ์ ์์ต๋๋ค.
๊ฒฝ๋ํ๋ ํ๋ก์ธ์ค๋ ์ ํต์ ์ธ ํ๋ก์ธ์ค๋ณด๋ค ๋ ์ ์ ์ปจํ ์คํธ ์ค์์นญ ๋น์ฉ์ ๊ฐ์ง๋ฉฐ, ์ด๋ก ์ธํด ๋ ๋น ๋ฅธ ์ฑ๋ฅ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ฃผ๋ก ๋ฉํฐ์ค๋ ๋ฉ ํ๊ฒฝ์์ ํ์ฉ๋๋ฉฐ, ๋ค์์ ๊ฒฝ๋ํ๋ ํ๋ก์ธ์ค๊ฐ ๋์์ ์คํ๋ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ธฐ์ ์ ๋ณ๋ ฌ ์ฒ๋ฆฌ ๋ฐ ๋ค์ค ์ฝ์ด CPU์์ ํจ๊ณผ์ ์ผ๋ก ํ์ฉ๋ฉ๋๋ค.
๊ฒฝ๋ํ๋ ํ๋ก์ธ์ค๋ ๋ณ๊ฐ์ ์ค๋ ๋๊ฐ Code, Data, Heap ์์ญ์ ๊ณตํต์ผ๋ก ์ฌ์ฉํ๊ณ
Stack๋ง์ ๊ณ ์ ํ๊ฒ ๊ฐ๋ ๊ฒ์ด๋ค.
๋ฉํฐํ๋ก์ธ์ค์ ๋ฉํฐ์ค๋ ๋ ๋ชจ๋ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ๋ํ ์ด์ผ๊ธฐ์.
ํ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ํ ๋ค๋ฅธ ๋ ๊ฐ์ง ์ฒ๋ฆฌ๋ฐฉ๋ฒ์ ๋ํ ์ด์ผ๊ธฐ๋ฅผ ํ๋ ๊ฒ์.
Ex) Chrome์ ๋ฉํฐ ํ๋ก์ธ์ค ๋ฐฉ์, Explorer๋ ๋ฉํฐ ์ค๋ ๋ ๋ฐฉ์์
๋ฉํฐ ํ๋ก์ธ์ค์ & ๋ฉํฐ ์ค๋ ๋๋ SW ๋ถ์ผ์ชฝ์ ๊ฐ๊น๊ณ
๋ฉํฐ์ฝ์ด๋ HW ์ธก๋ฉด์ ์ด์ผ๊ธฐ์ ์ข ๋ ๊ฐ๊น๋ค.
๋ฉํฐ์ฝ์ด์ ๊ด๋ จ๋ ํค์๋๋ ๋์์ฑ๊ณผ ๋ณ๋ ฌ์ฒ๋ฆฌ์ด๋ค.
๋ฒ์ธ : ๋ฆฌ๋ ์ค์์ Process์ Thread
๋ฆฌ๋ ์ค ์ปค๋์์๋ ํ๋ก์ธ์ค์ ์ค๋ ๋๋ฅผ ๋์ผํ๊ฒ ๋ณธ๋ค.
์ค๋ ๋๋ ์ฌ์ฉ์ ์ค๋ ๋์ ์ปค๋ ์ค๋ ๋๋ก ๋๋จ.
์ฌ์ฉ์ ๋ ๋ฒจ๊ณผ ์ปค๋ ๋ ๋ฒจ.
๋ค๋์ผ, ์ผ๋์ผ, ๋ค๋๋ ๋ชจ๋ธ์ด ์์.
๋ฆฌ๋
์ค๋ ์ผ๋์ผ ๋ชจ๋ธ์
๊ทธ๋์ ๋ฆฌ๋
์ค์์๋ ์ฌ์ฉ์ ์ค๋ ๋์ ์ปค๋ ์ค๋ ๋๋ฅผ ๋์ผํ๊ฒ ๋ณธ๋ค๋ ์ด์ผ๊ธฐ๋ฅผ ํ๋ ๊ฒ์.