๐ง ํ๋ก์ธ์ค
์ฐ์ ํ๋ก์ธ์ค์ ๋ํด ์์๋ณด๊ธฐ ์ ์, ํ๋ก์ธ์ค์ ๊ฐ์ด ์์๋์ด์ผ ํ ์ฉ์ด๊ฐ ์์ต๋๋ค.
๋ฐ๋ก ํ๋ก๊ทธ๋จ๊ณผ Task์ ๋๋ค.
๐ ํ๋ก๊ทธ๋จ
์ผ๋ฐ์ ์ผ๋ก ํ๋ ๋์คํฌ์ ์ ์ฅ๋์ด ์๋ ์คํ์ฝ๋๋ฅผ ๋ปํ๋๋ฐ, ์๋ฅผ ๋ค์ด ์นด์นด์คํก, ์๋, ํ๊ธ ๋ฑ์ด ๊ฐ๊ฐ ํ๋์ ํ๋ก๊ทธ๋จ์ ๋๋ค.
์นด์นด์คํก์ ์์๋ก ๊ณ์ ์ค๋ช ํ์๋ฉด, ์นด์นด์คํก์ ์ปดํจํฐ์ ์ค์นํ๊ธฐ๋ง ํด์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์นด์นด์คํก ํ๋ก๊ทธ๋จ์ ์คํํ์ฌ์ผ ์ฌ์ฉํ ์ ์๋๋ฐ, ์คํํ๋ ๊ฒฝ์ฐ ์นด์นด์คํก ํ๋ก๊ทธ๋จ์ ๋ํ ์ธ์คํด์ค๊ฐ ์์ฑ๋ฉ๋๋ค.
์ด๊ฒ์ด ๋ฐ๋ก ํ๋ก์ธ์ค์ ๋๋ค.
ํ๋ก์ธ์ค๋ OS๊ฐ ๋ง๋ค์ด ์ฃผ๋ ์คํ ํ๋ก๊ทธ๋จ์ ์ธ์คํด์ค์ ๋๋ค.
์ปดํจํฐ๋ User, Kernel, HW ์์ญ์ผ๋ก ๋๋์ด์ง๋๋ค.
์นด์นด์คํก, ์๋ ๋ฑ์ ํ๋ก๊ทธ๋จ์ User ์์ญ์์ ์คํ๋๋ฉฐ, Kernel ์์ญ์์๋ ์ด๋ฌํ ํ๋ก์ธ์ค๋ค์ ๊ด๋ฆฌํ๋ ์ญํ ์ ์ํํฉ๋๋ค.
Kernel ์์ญ์์๋ ๋ํ์ ์ผ๋ก CPU์ ๋ฉ๋ชจ๋ฆฌ(RAM) ์์์ ๊ด๋ฆฌํฉ๋๋ค. (์ด๋ค ์ฝ์ด๋ฅผ ์จ๋ผ, ์ด๋ค ๋ฉ๋ชจ๋ฆฌ ๋ถ๋ถ์ ์จ๋ผ ๋ฑ๋ฑ..)
ํ๋ก์ธ์ค๋ OS๋ก๋ถํฐ ์์คํ ์์์ ํ ๋น๋ฐ์ ์์ ์ ๋จ์์ ๋๋ค.
๐ Task
Task๋ ์คํ ๋จ์ ๋๋ ์์ ์ ๋จ์๋ก์จ, ํ๋ก์ธ์ค๋ฅผ ์ง์นญํฉ๋๋ค.
๐ง ๋ฉํฐ ํ๋ก์ธ์ฑ, ๋ฉํฐ ํ์คํน
ํ๋์ ์ปดํจํฐ์์๋ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์๋๋ฐ, ์ด ๊ฒฝ์ฐ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ์คํ๋ฉ๋๋ค.
์ด๋ฅผ ๋ฉํฐ ํ๋ก์ธ์ฑ ํน์ ๋ฉํฐ ํ์คํน์ด๋ผ ๋ถ๋ฆ ๋๋ค.
์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ์คํ๋๋ ๊ฒฝ์ฐ, CPU์ ๋ฉ๋ชจ๋ฆฌ(RAM)์ ํ์ ์ ์ด๊ธฐ ๋๋ฌธ์ ์ด๋ค์ ๊ณต์ ํ์ฌ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
OS์์๋ CPU, ๋ฉ๋ชจ๋ฆฌ ๋ฑ๊ณผ ๊ฐ์ ์์์ ์ฌ๋ฌ ํ๋ก์ธ์ค ์ฌ์ด์์ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๊ด๋ฆฌํด์ค๋๋ค.
์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ผ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ํ ๋นํ์ฌ ์ด๋ฅผ ์คํ์ํค๊ณ , ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ์ ์ ํตํด ์ฌ๋ฌ ํ๋ก์ธ์ค ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์์ ๊ณต์ ํ ์ ์๊ฒ ํด์ค๋๋ค.
๐ง ๋ฌธ๋งฅ ์ ํ
๋ฉํฐ ํ๋ก์ธ์ฑ ํ๊ฒฝ์์, CPU๋ ํ์ ๋์ด ์์ผ๋ฏ๋ก ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋ฒ๊ฐ์ ๊ฐ๋ฉฐ CPU๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๋ฌธ๋งฅ ์ ํ์ด๋ ํ๋์ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ฌ์ฉํ๋ค๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ์ฌ ์งํ์ค์ธ ํ๋ก์ธ์ค์ ์ํ๋ฅผ PCB(Process Control Block)์ ์ ์ฅํ๊ณ , ์๋ก์ด ํ๋ก์ธ์ค์ ์ํ๋ฅผ CPU์ ์ ์ฌํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๐ง ์ฐ๋ ๋
ํ๋ก์ธ์ค๊ฐ ํ ๋น๋ฐ์ ์์์ ์ด์ฉํด์, ์ค์ ๋ก ์์ ์ ์ํํ๋ ์ฃผ์ฒด๋ฅผ ์๋ฏธํฉ๋๋ค.
ํ๋์ ํ๋ก์ธ์ค์๋ ์ต์ํ ํ๋์ ์ฐ๋ ๋๊ฐ ๋ฐ๋์ ์กด์ฌํ๋ฉฐ, ์ฐ๋ ๋๋ ์์ ์ด ์ํํ๋ ํ๋ก์ธ์ค ๋ด์ ์์๋ค๋ง์ ์ฌ์ฉํฉ๋๋ค.
๐ง ๋ฉํฐ์ฐ๋ ๋
ํ๋์ ํ๋ก์ธ์ค ๋ด์์ ์ฌ๋ฌ ์ฐ๋ ๋๊ฐ ๋์์ ์์ ์ ์ํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
ํ๋์ ํ๋ก์ธ์ค ๋ด์ ์ฌ๋ฌ ์ฐ๋ ๋๋ค์ code, data, files, heap์ ๊ณต์ ํ์ฌ ์ฌ์ฉํ๋ฉฐ, ๋จ์ง register์ PC, stack๋ง์ ๋ ๋จ์ ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
์ฐ๋ ๋๋ ์์ ์ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์์์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ์ฐ๋ ๋ ์์ฑ ์ ์๋ก์ด ์์์ ํ์๋ก ํ์ง ์์ต๋๋ค.
๐ง Thread ๊ฐ์์ ์ฑ๋ฅ
CPU์ ์ฝ์ด๋ ํ ๋ฒ์ ํ๋์ ์์ ๋ง ์ํํ ์ ์์ต๋๋ค.
์ฆ ์ค์ ๋ก ๋์์ ์ฒ๋ฆฌ๋๋ ์์ ์ ์๋ CPU์ ์ฝ์ด์ ๊ฐ์์ ์ผ์นํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ฐ๋ ๋์ ์๋ ์ฝ์ด์ ์๋ณด๋ค ์ธ์ ๋ ๋ง์ต๋๋ค.
๋ฐ๋ผ์ CPU์ ์ฝ์ด๋ ์์ฃผ ์งง์ ์๊ฐ ๋์ ์ฌ๋ฌ ์์ ์ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ์ํํจ์ผ๋ก์จ ์ฌ๋ฌ๊ฐ์ ์์ ๋ค์ด ๋์์ ์ํ๋๋ ๊ฒ ์ฒ๋ผ ๋ณด์ด๊ฒ ํฉ๋๋ค.
์ด๋ฌํ ์ด์ ๋ก ํ๋ก์ธ์ค์ ์ฑ๋ฅ์ด ๋จ์ํ ์ฐ๋ ๋์ ๊ฐ์์ ๋น๋กํ๋ ๊ฒ์ด ์๋๋๋ค.
ํ๋์ ์ฐ๋ ๋๋ฅผ ๊ฐ์ง ํ๋ก์ธ์ค๋ณด๋ค ๋๊ฐ์ ์ฐ๋ ๋๋ฅผ ๊ฐ์ง ํ๋ก์ธ์ค์ ์ฑ๋ฅ์ด ์คํ๋ ค ๋ ๋ฎ์ ์ ์์ต๋๋ค.
(์๋ฅผ ๋ค์ด ์ฐ๋ ๋ ๊ฐ ๋ฌธ๋งฅ ์ ํ์ด ์์ฃผ ๋ฐ์ํ๋ ๊ฒฝ์ฐ)
๐ง ์ฐ๋ ๋์์ ์คํ๊ณผ PC(ํ๋ก๊ทธ๋จ ์นด์ดํฐ)๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ํ ๋นํ๋ ์ด์
Thread์์ stack๊ณผ PC register๋ฅผ ๋
๋ฆฝ์ ์ผ๋ก ํ ๋นํ๋ ๊ฒ์, ๊ฐ thread๊ฐ ์ํํ๋ ์์
์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์
๋๋ค.
Stack์ ํจ์ ํธ์ถ์ ์ํด ํ์ํ ๋ณ์๋ค์ ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์
๋๋ค.
๊ฐ thread๋ ๋ค๋ฅธ ํจ์๋ฅผ ํธ์ถํ๊ณ , ๋ค๋ฅธ ๋ณ์๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ฐ thread๋ง๋ค ๋
๋ฆฝ์ ์ธ stack์ ํ ๋นํด์ผ ํฉ๋๋ค.
PC register๋ ํ์ฌ ์คํ๋๋ instruction์ ์ฃผ์๋ฅผ ์ ์ฅํ๋ ๋ ์ง์คํฐ์
๋๋ค. ๊ฐ thread๋ ๋ค๋ฅธ instruction์ ์คํํ๊ธฐ ๋๋ฌธ์ ๊ฐ thread๋ง๋ค ๋
๋ฆฝ์ ์ธ PC register๋ฅผ ํ ๋นํด์ผ ํฉ๋๋ค.
๋
๋ฆฝ์ ์ธ stack๊ณผ PC register๋ฅผ ํ ๋นํจ์ผ๋ก์จ, ๊ฐ thread๋ ์์ ๋ง์ ์์
์ํ๋ฅผ ์ ์งํ ์ ์๊ฒ ๋๋ฉฐ, thread context switch ๊ณผ์ ์์๋ ์์
์ํ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๋ณต์ํ ์ ์๊ฒ ๋ฉ๋๋ค.
๐ง ์ฐ๋ ๋๊ฐ์ ๋ฌธ๋งฅ์ ํ
๋ฌธ๋งฅ์ ํ์ ํ๋ก์ธ์ค ์ฌ์ด์์๋ ๋ฐ์ํ์ง๋ง, ์ฐ๋ ๋ ์ฌ์ด์์๋ ๋ฐ์ํ ์ ์์ต๋๋ค.
Thread ์ฌ์ด์์ ๋ฌธ๋งฅ ์ ํ์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ, TCB(Thread Control Block)์ ์ ๋ณด๋ฅผ ์ ์ฅํฉ๋๋ค.
TCB๋ Thread๋ณ๋ก ์กด์ฌํ๋ฉฐ, PC์ Register Set(CPU ์ ๋ณด), ๊ทธ๋ฆฌ๊ณ PCB๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ฅผ ๊ฐ์ง๋๋ค.
๊ฐ์ ํ๋ก์ธ์ค์์์ ์ฐ๋ ๋ ๊ฐ ๋ฌธ๋งฅ ์ ํ ์์๋ TCB ์ ๋ณด๋ง ์ ์ฅํ๋ฉด ๋ฉ๋๋ค.
ํ์ง๋ง ๋ค๋ฅธ ํ๋ก์ธ์ค ๊ฐ์ ๋ฌธ๋งฅ ์ ํ ์์๋ PCB / TCB ์ ๋ณด๋ฅผ ๋ชจ๋ ์ ์ฅํด์ผ ํฉ๋๋ค.
์ฐ๋ ๋ ์ฌ์ด์์ ๋ฌธ๋งฅ ์ ํ์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ, ์ฐ๋ ๋๋ค์ ๊ฐ์ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์์์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์ ํ์ด ํ์ํ์ง ์์ต๋๋ค. ๋ํ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์ ์ง์ญ์ฑ ํจ์จ์ด ๋์ ์บ์ฑ์ ํจ๊ณผ๋ ์ฆ๊ฐํฉ๋๋ค.
์ฆ ๋ฌธ๋งฅ ์ ํ ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ํ๋ ํจ๊ป ๋ฐ์ํ๋ ํ๋ก์ธ์ค ๊ฐ ๋ฌธ๋งฅ ์ ํ์ ๋นํ์ฌ, ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ๋ฌธ๋งฅ ์ ํ ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ํ์ด ๋ฐ์ํ์ง ์๋ ์ฐ๋ ๋ ์ฌ์ด์ ๋ฌธ๋งฅ ์ ํ์ ํจ์ฌ ๋น ๋ฅด๊ฒ ์ด๋ฃจ์ด์ง๋๋ค.