์ด์ ์ฒด์ ์๊ฐ
ํค์ด ํ๋ธ๋ฅด! ์ ์๊ฐ์๋ ํฅ๋ฏธ๋ก์ด ๋ฌธํ ์ธ OSTEP์ ๋ํ ์ผ๋ จ์ ๊ธฐ์ฌ ๋ฒ์ญ์ ์ฌ๋ฌ๋ถ์ ๊ด์ฌ์ ๋๊ณ ์ถ์ต๋๋ค. ์ด ์๋ฃ๋ ์ ๋์ค ๊ณ์ด ์ด์ ์ฒด์ ์ ์์
, ์ฆ ํ๋ก์ธ์ค, ๋ค์ํ ์ค์ผ์ค๋ฌ, ๋ฉ๋ชจ๋ฆฌ ๋ฐ ์ต์ OS๋ฅผ ๊ตฌ์ฑํ๋ ๊ธฐํ ์ ์ฌํ ๊ตฌ์ฑ ์์ ์์
์ ๋ํด ๋งค์ฐ ๊น์ด ๋
ผ์ํฉ๋๋ค. ์ฌ๊ธฐ์์ ๋ชจ๋ ์๋ฃ์ ์๋ณธ์ ๋ณผ ์ ์์ต๋๋ค.
์ด ์ฃผ์ ์ ๋ํ ์ฐ๊ตฌ์ค ์์ ์ ์ฌ๊ธฐ์์ ์ฐพ์ ์ ์์ต๋๋ค.
- ๊ธฐ๋ฐํ:
ํ์ด์ง.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html - ๊ธฐ๋ฐํ:
github.com/remzi-arpacidusseau/ostep-code - ๋ด ๊ฐ์ธ์ ์ธ ์ ์:
github.com/bykvaadm/OS/tree/master/ostep
๊ธฐํ ๋ถํ :
์์ ๋ด ์ฑ๋์ ํ์ธํ ์๋ ์์ต๋๋ค.
OS๊ฐ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ถ์ํ์ธ ํ๋ก์ธ์ค๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ํ๋ก์ธ์ค์ ์ ์๋ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ. ํ๋ก๊ทธ๋จ ์์ฒด๋ ๋์คํฌ์ ์๋ ์๋ช
์ด ์๋ ๊ฒ์
๋๋ค. ์ด๋ ์ผ๋ จ์ ๋ช
๋ น์ด๋ฉฐ ์คํ์ ๊ธฐ๋ค๋ฆฌ๋ ์ผ๋ถ ์ ์ ๋ฐ์ดํฐ์ผ ์๋ ์์ต๋๋ค. ํด๋น ๋ฐ์ดํธ๋ฅผ ๊ฐ์ ธ์ ์คํํ์ฌ ํ๋ก๊ทธ๋จ์ ์ ์ฉํ ๊ฒ์ผ๋ก ๋ณํํ๋ ๊ฒ์ OS์
๋๋ค.
๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ฌ์ฉ์๋ ๋์์ ๋ ๊ฐ ์ด์์ ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ๋ฅผ ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋
ธํธ๋ถ์์ ๋ธ๋ผ์ฐ์ , ๊ฒ์, ๋ฏธ๋์ด ํ๋ ์ด์ด, ํ
์คํธ ํธ์ง๊ธฐ ๋ฑ์ ์คํํ ์ ์์ต๋๋ค. ์ค์ ๋ก ์ผ๋ฐ์ ์ธ ์์คํ
์ ์์ญ ๋๋ ์๋ฐฑ ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ๋์์ ์คํํ ์ ์์ต๋๋ค. ์ด ์ฌ์ค์ ์์คํ
์ฌ์ฉ์ ๋ ์ฝ๊ฒ ๋ง๋ค๊ณ , CPU๊ฐ ๋น์ด ์๋์ง ์ฌ๋ถ์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์์ผ๋ฉฐ, ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์ด๋ ๋ฌธ์ ๋ฅผ ์ ๊ธฐํฉ๋๋ค. ์ด๋ป๊ฒ ๋ง์ CPU๊ฐ ์๋ค๋ ํ์์ ์ ๊ณตํ ์ ์์๊น์? ๋ฌผ๋ฆฌ์ CPU๊ฐ ํ๋๋ง ์๋ ๊ฒฝ์ฐ์๋ OS๋ ์ด๋ป๊ฒ CPU ์๊ฐ ๊ฑฐ์ ๋ฌดํํ๋ค๋ ํ์์ ๋ง๋ค ์ ์์ต๋๊น?
OS๋ CPU ๊ฐ์ํ๋ฅผ ํตํด ์ด๋ฌํ ํ์์ ๋ง๋ญ๋๋ค. ํ๋์ ํ๋ก์ธ์ค๋ฅผ ์์ํ ๋ค์ ์ค์งํ๊ณ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ์์ํ๋ ๋ฑ์ ๊ณผ์ ์ ํตํด OS๋ ์ค์ ๋ก๋ ํ๋ ์ด์์ ๋ฌผ๋ฆฌ์ ํ๋ก์ธ์๊ฐ ์์ ๋์๋ ๊ฐ์ CPU๊ฐ ๋ง๋ค๋ ์ฐฉ๊ฐ์ ์ ์งํ ์ ์์ต๋๋ค. ์ด ๊ธฐ์ ์ CPU ๋ฆฌ์์ค๋ฅผ ์๊ฐ๋ณ๋ก ๋๋๊ธฐ. ์ด ๊ธฐ์ ์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๋ ์ํ๋ ๋งํผ ๋ง์ ๋์ ํ๋ก์ธ์ค๋ฅผ ์คํํ ์ ์์ต๋๋ค. ์ด ์๋ฃจ์
์ ๋น์ฉ์ ์ฑ๋ฅ์
๋๋ค. ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ๊ณต์ ํ๋ ๊ฒฝ์ฐ ๊ฐ ํ๋ก์ธ์ค๊ฐ ๋ ๋๋ฆฌ๊ฒ ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
CPU ๊ฐ์ํ๋ฅผ ๊ตฌํํ๊ณ ํนํ ์ด๋ฅผ ์ ์ํํ๋ ค๋ฉด OS์ ๋ฎ์ ์์ค๊ณผ ๋์ ์์ค์ ์ง์์ด ๋ชจ๋ ํ์ํฉ๋๋ค. ๋ฎ์ ์์ค์ ์ง์์ด ํธ์ถ๋ฉ๋๋ค. ๋ฉ์ปค๋์ฆ ๊ธฐ๋ฅ์ ํ์ ๋ถ๋ถ์ ๊ตฌํํ๋ ํ์ ์์ค ๋ฉ์๋ ๋๋ ํ๋กํ ์ฝ์
๋๋ค. ์ด๋ฌํ ๊ธฐ๋ฅ์ ์๋ก๋ OS์ ํ๋์ ํ๋ก๊ทธ๋จ์ ์ค์งํ๊ณ ํ๋ก์ธ์์์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ปจํ
์คํธ ์ ํ์ด ์์ต๋๋ค. ์ด ์๋ถํ ์ ๋ชจ๋ ์ต์ ์ด์ ์ฒด์ ์์ ๊ตฌํ๋ฉ๋๋ค.
์ด๋ฌํ ๋ฉ์ปค๋์ฆ ์์๋ "์ ์ฑ
"์ ํํ๋ก OS์ ๋ด์ฅ๋ ์ผ๋ถ ๋
ผ๋ฆฌ๊ฐ ์์ต๋๋ค. ์ ์ฑ
์ด์ ์ฒด์ ์ ๋ํ ํน์ ์์ฌ ๊ฒฐ์ ์๊ณ ๋ฆฌ์ฆ์
๋๋ค. ์๋ฅผ ๋ค์ด, ์ด๋ฌํ ์ ์ฑ
์ (๋ช
๋ น ๋ชฉ๋ก์์) ๋จผ์ ์์ํด์ผ ํ ํ๋ก๊ทธ๋จ์ ๊ฒฐ์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ด ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ ์ ์ฑ
์ผ๋ก ํด๊ฒฐ๋ฉ๋๋ค. ์ค์ผ์ค๋ฌ(์ค์ผ์ค๋ง ์ ์ฑ
) ์๋ฃจ์
์ ์ ํํ ๋ ์์ ๊ธฐ๋ก(๋ง์ง๋ง ๋ช ๋ถ ๋์ ๊ฐ์ฅ ์ค๋ซ๋์ ์คํ๋ ํ๋ก๊ทธ๋จ), ์ด ํ๋ก์ธ์ค๊ฐ ์ ๋ฌํ๋ ๋ก๋(์คํ๋ ํ๋ก๊ทธ๋จ ์ ํ), ์ฑ๋ฅ ์งํ(์์คํ
์ด ์คํ๋์๋์ง ์ฌ๋ถ)์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ด๋ฉ๋๋ค. ๋ํํ ์ํธ ์์ฉ ๋๋ ์ฒ๋ฆฌ๋) ๋ฑ์ ์ต์ ํ๋์ด ์์ต๋๋ค.
์ถ์ํ: ํ๋ก์ธ์ค
์ด์ ์ฒด์ ์ ์ํด ์คํ๋๋ ์คํ ํ๋ก๊ทธ๋จ์ ์ถ์ํ๋ฅผ ์ฐ๋ฆฌ๋ ์ด๋ ๊ฒ ๋ถ๋ฆ
๋๋ค. ๋ฐฉ๋ฒ. ์์ ์ธ๊ธํ๋ฏ์ด ํ๋ก์ธ์ค๋ ์ด๋ ์๊ฐ์๋ ์คํ๋๋ ํ๋ก๊ทธ๋จ์ผ ๋ฟ์
๋๋ค. ์ด ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์ ์ก์ธ์คํ๊ฑฐ๋ ์ํฅ์ ๋ฏธ์น๋ ๋ค์ํ ์์คํ
๋ฆฌ์์ค๋ก๋ถํฐ ์์ฝ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋ ํ๋ก๊ทธ๋จ์
๋๋ค.
ํ๋ก์ธ์ค์ ๊ตฌ์ฑ์์๋ฅผ ์ดํดํ๋ ค๋ฉด ์์คํ
์ํ, ์ฆ ํ๋ก๊ทธ๋จ์ด ์๋ ์ค์ ๋ฌด์์ ์ฝ๊ฑฐ๋ ๋ณ๊ฒฝํ ์ ์๋์ง๋ฅผ ์ดํดํด์ผ ํฉ๋๋ค. ์ธ์ ๋ ์ง ํ๋ก๊ทธ๋จ ์คํ์ ์ค์ํ ์์คํ
์์๋ฅผ ์ดํดํด์ผ ํฉ๋๋ค.
ํ๋ก์ธ์ค์ ํฌํจ๋ ์์คํ
์ํ์ ๋ช
๋ฐฑํ ์์ ์ค ํ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ะฟะฐะผััั. ์ง์นจ์ ๋ฉ๋ชจ๋ฆฌ์ ์์ต๋๋ค. ํ๋ก๊ทธ๋จ์ด ์ฝ๊ฑฐ๋ ์ฐ๋ ๋ฐ์ดํฐ๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํ๋ก์ธ์ค๊ฐ ์ฃผ์๋ฅผ ์ง์ ํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ(์ฃผ์ ๊ณต๊ฐ์ด๋ผ๊ณ ํจ)๋ ํ๋ก์ธ์ค์ ์ผ๋ถ์
๋๋ค.
๋ํ ์์คํ
์ํ์ ์ผ๋ถ๋ ๋ ์ง์คํฐ์
๋๋ค. ๋ง์ ๋ช
๋ น์ด๋ ๋ ์ง์คํฐ ๊ฐ์ ๋ณ๊ฒฝํ๊ฑฐ๋ ๊ทธ ๊ฐ์ ์ฝ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ฏ๋ก ๋ ์ง์คํฐ๋ ํ๋ก์ธ์ค ์๋์ ์ค์ํ ๋ถ๋ถ์ด ๋ฉ๋๋ค.
๋จธ์ ์ํ๋ ์ผ๋ถ ํน์ ๋ ์ง์คํฐ๋ก๋ถํฐ๋ ํ์ฑ๋๋ค๋ ์ ์ ์ ์ํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, IP - ๋ช
๋ น์ด ํฌ์ธํฐ โ ํ๋ก๊ทธ๋จ์ด ํ์ฌ ์คํ ์ค์ธ ๋ช
๋ น์ด์ ๋ํ ํฌ์ธํฐ์
๋๋ค. ๋ ์์ต๋๋ค ์คํ ํฌ์ธํฐ ๊ทธ๋ฆฌ๊ณ ๊ทธ์ ๊ด๋ จ๋ ํ๋ ์ ํฌ์ธํฐ, ํจ์ ๋งค๊ฐ๋ณ์, ์ง์ญ ๋ณ์ ๋ฐ ๋ฐํ ์ฃผ์๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก ํ๋ก๊ทธ๋จ์ ROM(์ฝ๊ธฐ ์ ์ฉ ๋ฉ๋ชจ๋ฆฌ)์ ์ก์ธ์คํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด "I/O"(์
๋ ฅ/์ถ๋ ฅ) ์ ๋ณด์๋ ํ์ฌ ํ๋ก์ธ์ค์์ ์ด๋ ค ์๋ ํ์ผ ๋ชฉ๋ก์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค.
ํ๋ก์ธ์ค API
ํ๋ก์ธ์ค ์๋ ๋ฐฉ์์ ๋ํ ์ดํด๋ฅผ ๋์ด๊ธฐ ์ํด ์ด์ ์ฒด์ ์ธํฐํ์ด์ค์ ํฌํจ๋์ด์ผ ํ๋ ์์คํ ํธ์ถ์ ์๋ฅผ ์ฐ๊ตฌํด ๋ณด๊ฒ ์ต๋๋ค. ์ด๋ฌํ API๋ ๋ชจ๋ OS์์ ์ด๋ค ํํ๋ก๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
โ ๋ง๋ค๊ธฐ (์์ฑ): OS์๋ ์ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ ์ ์๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ด ํฌํจ๋์ด ์์ด์ผ ํฉ๋๋ค. ํฐ๋ฏธ๋์ ๋ช
๋ น์ ์
๋ ฅํ๊ฑฐ๋ ์์ด์ฝ์ ๋ ๋ฒ ํด๋ฆญํ์ฌ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ํ๋ฉด OS์ ํธ์ถ์ด ์ ์ก๋์ด ์ ํ๋ก์ธ์ค๋ฅผ ๋ง๋ ๋ค์ ์ง์ ๋ ํ๋ก๊ทธ๋จ์ ์์ํฉ๋๋ค.
โ ์ ๊ฑฐ: ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ธํฐํ์ด์ค๊ฐ ์๊ธฐ ๋๋ฌธ์ OS๋ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ ๋ก ์ ๊ฑฐํ๋ ๊ธฐ๋ฅ๋ ์ ๊ณตํด์ผ ํฉ๋๋ค. ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋จ์ ์คํ๋๋ฉด์ ์์ฐ์ค๋ฝ๊ฒ ์์ฒด์ ์ผ๋ก ์์๋๊ณ ์ข
๋ฃ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฌ์ฉ์๋ ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํ ์ ์๊ธฐ๋ฅผ ์ํ๋ฏ๋ก ํ๋ก์ธ์ค๋ฅผ ์ค์งํ๋ ์ธํฐํ์ด์ค๊ฐ ์ ์ฉํ ๊ฒ์
๋๋ค.
โ ๊ธฐ๋ค๋ฆผ (๋๊ธฐ): ๋๋ก๋ ํ๋ก์ธ์ค๊ฐ ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ด ์ ์ฉํ๋ฏ๋ก ๋๊ธฐ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ผ๋ถ ์ธํฐํ์ด์ค๊ฐ ์ ๊ณต๋ฉ๋๋ค.
โ ๊ธฐํ ์ ์ด (๋ค์ํ ์ ์ด): ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํ๊ณ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ ์ธ์๋ ๋ค์ํ ์ ์ด ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋๋ถ๋ถ์ ์ด์ ์ฒด์ ๋ ํ๋ก์ธ์ค๋ฅผ ์ ์ง(ํน์ ๊ธฐ๊ฐ ๋์ ์คํ์ ์ค์ง)ํ ๋ค์ ๋ค์ ์์(์คํ์ ๊ณ์)ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
โ Status (์ํ): ์คํ ๊ธฐ๊ฐ์ด๋ ํ์ฌ ์ํ ๋ฑ ํ๋ก์ธ์ค ์ํ์ ๋ํ ์ผ๋ถ ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํ ๋ค์ํ ์ธํฐํ์ด์ค๊ฐ ์์ต๋๋ค.
ํ๋ก์ธ์ค ์์ฑ: ์ธ๋ถ์ ๋ณด
ํฅ๋ฏธ๋ก์ด ์ ์ค ํ๋๋ ํ๋ก๊ทธ๋จ์ด ์ ํํ ์ด๋ป๊ฒ ํ๋ก์ธ์ค๋ก ๋ณํ๋๋์ง์
๋๋ค. ํนํ OS๊ฐ ํ๋ก๊ทธ๋จ์ ์ ํํ๊ณ ์คํํ๋ ๋ฐฉ๋ฒ. ํ๋ก์ธ์ค๊ฐ ์ ํํ ์ด๋ป๊ฒ ์์ฑ๋๋์ง.
์ฐ์ , OS๋ ํ๋ก๊ทธ๋จ ์ฝ๋์ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ(ํ๋ก์ธ์ค ์ฃผ์ ๊ณต๊ฐ)์ ๋ก๋ํด์ผ ํฉ๋๋ค. ํ๋ก๊ทธ๋จ์ ์ผ๋ฐ์ ์ผ๋ก ์ผ๋ถ ์คํ ๊ฐ๋ฅ ํ์์ผ๋ก ๋์คํฌ๋ ์๋ฆฌ๋ ์คํ
์ดํธ ๋๋ผ์ด๋ธ์ ์์นํฉ๋๋ค. ๋ฐ๋ผ์ ํ๋ก๊ทธ๋จ๊ณผ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ๋ ํ๋ก์ธ์ค์์๋ OS๊ฐ ๋์คํฌ์์ ํด๋น ๋ฐ์ดํธ๋ฅผ ์ฝ๊ณ ๋ฉ๋ชจ๋ฆฌ ์ด๋๊ฐ์ ๋ฐฐ์นํ ์ ์์ด์ผ ํฉ๋๋ค.
์ด๊ธฐ ์ด์ ์ฒด์ ์์๋ ๋ก๋ฉ ํ๋ก์ธ์ค๊ฐ ์ ๊ทน์ ์ผ๋ก ์ํ๋์์ต๋๋ค. ์ด๋ ํ๋ก๊ทธ๋จ์ด ์์๋๊ธฐ ์ ์ ์ ์ฒด ์ฝ๋๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋์์์ ์๋ฏธํฉ๋๋ค. ์ต์ ์ด์ ์ฒด์ ์์๋ ์ด ์์ ์ ๋๋ฆฌ๊ฒ ์ํํฉ๋๋ค. ์ฆ, ํ๋ก๊ทธ๋จ ์คํ ์ค์ ํ์ํ ๋๋ง ์ฝ๋๋ ๋ฐ์ดํฐ ์กฐ๊ฐ์ ๋ก๋ํฉ๋๋ค.
์ฝ๋์ ์ ์ ๋ฐ์ดํฐ๊ฐ OS ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋๋ฉด ํ๋ก์ธ์ค๋ฅผ ์คํํ๊ธฐ ์ ์ ์ํํด์ผ ํ ๋ช ๊ฐ์ง ์์ ์ด ๋ ์์ต๋๋ค. ์คํ์ ์ผ์ ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํด์ผ ํฉ๋๋ค. ํ๋ก๊ทธ๋จ์ ์ง์ญ ๋ณ์, ํจ์ ๋งค๊ฐ๋ณ์ ๋ฐ ๋ฐํ ์ฃผ์์ ์คํ์ ์ฌ์ฉํฉ๋๋ค.. OS๋ ์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ์ฌ ํ๋ก์ธ์ค์ ์ ๊ณตํฉ๋๋ค. ์คํ์ ์ผ๋ถ ์ธ์๋ฅผ ์ฌ์ฉํ์ฌ ํ ๋นํ ์๋ ์์ต๋๋ค. ํนํ argc ๋ฐ argv ๋ฐฐ์ด๊ณผ ๊ฐ์ด main() ํจ์์ ๋งค๊ฐ๋ณ์๋ฅผ ์ฑ์๋๋ค.
์ด์ ์ฒด์ ๋ ํ๋ก๊ทธ๋จ ํ์ ์ผ๋ถ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ ์๋ ์์ต๋๋ค. ํ์ ํ๋ก๊ทธ๋จ์์ ๋์ ์ผ๋ก ํ ๋น๋ ๋ฐ์ดํฐ๋ฅผ ๋ช ์์ ์ผ๋ก ์์ฒญํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.. ํ๋ก๊ทธ๋จ์ ํจ์๋ฅผ ํธ์ถํ์ฌ ์ด ๊ณต๊ฐ์ ์์ฒญํฉ๋๋ค. malloc () ํจ์๋ฅผ ํธ์ถํ์ฌ ๋ช ์์ ์ผ๋ก ์ง์๋๋ค. ๋ฌด๋ฃ(). ํ์ ์ฐ๊ฒฐ๋ ์ํธ, ํด์ ํ ์ด๋ธ, ํธ๋ฆฌ ๋ฑ๊ณผ ๊ฐ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ํ์ํฉ๋๋ค. ์ฒ์์๋ ์๋์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ ํ ๋น๋์ง๋ง ์๊ฐ์ด ์ง๋๋ฉด์ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉด์ ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ API ํธ์ถ malloc()์ ํตํด ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ฒญํ ์ ์์ต๋๋ค. ์ด์ ์ฒด์ ๋ ์ด๋ฌํ ํธ์ถ์ ๋ง์กฑ์ํค๊ธฐ ์ํด ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ ํ๋ก์ธ์ค์ ์ฐธ์ฌํฉ๋๋ค.
์ด์ ์ฒด์ ๋ ํนํ I/O์ ๊ด๋ จ๋ ์ด๊ธฐํ ์์ ๋ ์ํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, UNIX ์์คํ ์์ ๊ฐ ํ๋ก์ธ์ค์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ค ์ ๋ ฅ, ์ถ๋ ฅ ๋ฐ ์ค๋ฅ์ ๋ํ 3๊ฐ์ ์ด๋ฆฐ ํ์ผ ์ค๋ช ์๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ํธ๋ค์ ํตํด ํ๋ก๊ทธ๋จ์ ํฐ๋ฏธ๋์ ์ ๋ ฅ์ ์ฝ์ ์ ์์ ๋ฟ๋ง ์๋๋ผ ํ๋ฉด์ ์ ๋ณด๋ฅผ ํ์ํ ์๋ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ฝ๋์ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ๊ณ , ์คํ์ ์์ฑ ๋ฐ ์ด๊ธฐํํ๊ณ , I/O ์์ ์ํ๊ณผ ๊ด๋ จ๋ ๊ธฐํ ์์ ์ ์ํํจ์ผ๋ก์จ OS๋ ํ๋ก์ธ์ค๋ฅผ ์คํํ ๋จ๊ณ๋ฅผ ์ค๋นํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก ๋ง์ง๋ง ์์ ์ด ํ๋ ๋จ์์ต๋๋ค. main() ํจ์๋ผ๊ณ ํ๋ ์ง์ ์ ์ ํตํด ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๊ฒ์ ๋๋ค. main() ํจ์๋ฅผ ์คํํ๋ฉด OS๋ ์๋ก ์์ฑ๋ ํ๋ก์ธ์ค์ CPU ์ ์ด๊ถ์ ๋๊ฒจ์ฃผ๊ณ ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ธฐ ์์ํฉ๋๋ค.
ํ๋ก์ธ์ค ์ํ
์ด์ ํ๋ก์ธ์ค๊ฐ ๋ฌด์์ธ์ง, ํ๋ก์ธ์ค๊ฐ ์ด๋ป๊ฒ ์์ฑ๋๋์ง ์ด๋ ์ ๋ ์ดํดํ์ผ๋ฏ๋ก ํ๋ก์ธ์ค ์ํ๋ฅผ ๋์ดํด ๋ณด๊ฒ ์ต๋๋ค. ๊ฐ์ฅ ๊ฐ๋จํ ํํ๋ก ํ๋ก์ธ์ค๋ ๋ค์ ์ํ ์ค ํ๋์ผ ์ ์์ต๋๋ค.
โ ๋ฌ๋ฆฌ๋. ์คํ ์ ํ๋ก์ธ์ค๋ ํ๋ก์ธ์์์ ์คํ๋ฉ๋๋ค. ์ด๋ ๋ช
๋ น์ด ์คํ๋๊ณ ์์์ ์๋ฏธํฉ๋๋ค.
โ ์ค๋น. ์ค๋น ์ํ์์๋ ํ๋ก์ธ์ค๋ฅผ ์คํํ ์ค๋น๊ฐ ๋์์ง๋ง ์ด๋ค ์ด์ ๋ก OS๊ฐ ์ง์ ๋ ์๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ์คํํ์ง ์์ต๋๋ค.
โ ๋งํ. ์ฐจ๋จ๋ ์ํ์์ ํ๋ก์ธ์ค๋ ์ผ๋ถ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๊น์ง ์คํ ์ค๋น๊ฐ ๋์ง ์๋๋ก ํ๋ ์ผ๋ถ ์์
์ ์ํํฉ๋๋ค. ํ ๊ฐ์ง ์ผ๋ฐ์ ์ธ ์๋ ํ๋ก์ธ์ค๊ฐ IO ์์
์ ์์ํ ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ํ๋ก์ธ์๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ์ฐจ๋จ๋๋ ๊ฒ์
๋๋ค.
์ด๋ฌํ ์ํ๋ฅผ ๊ทธ๋ํ ํํ๋ก ์์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆผ์์ ๋ณผ ์ ์๋ฏ์ด ํ๋ก์ธ์ค ์ํ๋ OS์ ์ฌ๋์ ๋ฐ๋ผ RUNNING๊ณผ READY ์ฌ์ด์์ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ํ๋ก์ธ์ค ์ํ๊ฐ READY์์ RUNNING์ผ๋ก ๋ณ๊ฒฝ๋๋ฉด ํด๋น ํ๋ก์ธ์ค๊ฐ ์์ฝ๋์์์ ์๋ฏธํฉ๋๋ค. ๋ฐ๋ ๋ฐฉํฅ - ๋ ์ด์์์์ ์ ๊ฑฐ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด IO ์์
์ ์์ํ๋ ๋ฑ ํ๋ก์ธ์ค๊ฐ BLOCKED๋๋ ์๊ฐ OS๋ IO ์๋ฃ์ ๊ฐ์ ์ผ๋ถ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๊น์ง ์ด ์ํ๋ฅผ ์ ์งํฉ๋๋ค. ์ด ์๊ฐ READY ์ํ๋ก ์ ํ๋๊ณ , OS๊ฐ ๊ฒฐ์ ํ๋ฉด ์ฆ์ RUNNING ์ํ๋ก ์ ํ๋ ์๋ ์์ต๋๋ค.
๋ ํ๋ก์ธ์ค๊ฐ ์ด๋ฌํ ์ํ๋ฅผ ์ด๋ป๊ฒ ์ด๋ํ๋์ง์ ๋ํ ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ฐ์ ๋ ํ๋ก์ธ์ค๊ฐ ๋ชจ๋ ์คํ ์ค์ด๊ณ ๊ฐ๊ฐ โโCPU๋ง ์ฌ์ฉํ๊ณ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์ํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ค์ ์์์ ์ฒซ ๋ฒ์งธ ํ๋ก์ธ์ค๋ ์ผ์ ์๊ฐ ์คํ๋ ํ IO๋ฅผ ์์ฒญํ๊ณ BLOCKED ์ํ์ ๋ค์ด๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์คํ๋๋๋ก ํ์ฉํฉ๋๋ค(๊ทธ๋ฆผ 1.4). OS๋ ํ๋ก์ธ์ค 0์ด CPU๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ํ์ธํ๊ณ ํ๋ก์ธ์ค 1์ ์์ํฉ๋๋ค. ํ๋ก์ธ์ค 1์ด ์คํ๋๋ ๋์ IO๊ฐ ์๋ฃ๋๊ณ ํ๋ก์ธ์ค 0์ ์ํ๊ฐ READY๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก ํ๋ก์ธ์ค 1์ด ์๋ฃ๋๊ณ , ์๋ฃ๋๋ฉด ํ๋ก์ธ์ค 0์ด ์์
์ ์์ํ๊ณ ์คํํ๊ณ ์๋ฃํฉ๋๋ค.
๋ฐ์ดํฐ ๊ตฌ์กฐ
OS ์์ฒด๋ ํ๋ก๊ทธ๋จ์ด๋ฉฐ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ค์ํ ๊ด๋ จ ์ ๋ณด๋ฅผ ์ถ์ ํ๋ ๋ช ๊ฐ์ง ์ฃผ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ฐ ํ๋ก์ธ์ค์ ์ํ๋ฅผ ์ถ์ ํ๊ธฐ ์ํด OS๋ ์ผ๋ถ ํ๋ก์ธ์ค๋ฅผ ์ง์ํฉ๋๋ค. ํ๋ก์ธ์ค ๋ชฉ๋ก READY ์ํ์ ๋ชจ๋ ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด์ ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ์ถ์ ํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ์ถ๊ฐ ์ ๋ณด์ ๋๋ค. ๋ํ OS๋ ์ฐจ๋จ๋ ํ๋ก์ธ์ค๋ฅผ ๋ชจ๋ํฐ๋งํด์ผ ํฉ๋๋ค. IO๊ฐ ์๋ฃ๋ ํ OS๋ ํ์ํ ํ๋ก์ธ์ค๋ฅผ ๊นจ์ฐ๊ณ ์คํํ ์ค๋น๊ฐ ๋ ์ํ๋ก ๋์์ผ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด OS๋ ํ๋ก์ธ์ ๋ ์ง์คํฐ์ ์ํ๋ฅผ ๋ณด์กดํด์ผ ํฉ๋๋ค. ํ๋ก์ธ์ค๊ฐ ์ค์ง๋๋ ์๊ฐ ๋ ์ง์คํฐ์ ์ํ๋ ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ์ ์ ์ฅ๋๋ฉฐ, ๋์์ด ๊ณ์๋๋ ์๊ฐ ๋ ์ง์คํฐ์ ๊ฐ์ด ๋ณต์๋์ด ์ด ํ๋ก์ธ์ค์ ์คํ์ด ๊ณ์๋ฉ๋๋ค.
์ค๋น๋จ, ์ฐจ๋จ๋จ, ์คํ ์ค ์ํ ์ธ์๋ ๋ช ๊ฐ์ง ๋ค๋ฅธ ์ํ๊ฐ ์์ต๋๋ค. ๋๋ก๋ ์์ฑ ๋น์ ํ๋ก์ธ์ค๊ฐ INIT ์ํ์ผ ์ ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก, ํ๋ก์ธ์ค๊ฐ ์ด๋ฏธ ์๋ฃ๋์์ง๋ง ํด๋น ์ ๋ณด๊ฐ ์์ง ์ง์์ง์ง ์์ ๊ฒฝ์ฐ ํ๋ก์ธ์ค๊ฐ FINAL ์ํ์ ๋์ผ ์ ์์ต๋๋ค. UNIX ์์คํ ์์๋ ์ด ์ํ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ถ๋ฆ ๋๋ค. ์ข๋น ํ๋ก์ธ์ค. ์ด ์ํ๋ ์์ ํ๋ก์ธ์ค๊ฐ ํ์ ํ๋ก์ธ์ค์ ๋ฐํ ์ฝ๋๋ฅผ ์๊ณ ์ถ์ดํ๋ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ผ๋ฐ์ ์ผ๋ก 0์ ์ฑ๊ณต์ ๋ํ๋ด๊ณ 1์ ์ค๋ฅ๋ฅผ ๋ํ๋ด์ง๋ง ํ๋ก๊ทธ๋๋จธ๋ ๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ์๋ฆฌ๊ธฐ ์ํด ์ถ๊ฐ ์ถ๋ ฅ ์ฝ๋๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค. ์์ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ฉด wait()์ ๊ฐ์ ์ต์ข ์์คํ ํธ์ถ์ ํตํด ํ์ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ณ ์ข ๋ฃ๋ ํ๋ก์ธ์ค์ ๊ด๋ จ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ง์ธ ์ ์์์ OS์ ์๋ฆฝ๋๋ค.
๊ฐ์์ ํต์ฌ ํฌ์ธํธ:
โ ะัะพัะตัั โ OS์์ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ์ฃผ์ ์ถ์ํ์
๋๋ค. ์ธ์ ๋ ์ง ํ๋ก์ธ์ค๋ ํด๋น ์ํ, ์ฆ ์ฃผ์ ๊ณต๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๋ด์ฉ, ๋ช
๋ น์ด ํฌ์ธํฐ ๋ฐ ์คํ ํฌ์ธํฐ๋ฅผ ํฌํจํ ํ๋ก์ธ์ ๋ ์ง์คํฐ์ ๋ด์ฉ, ์ฝ๊ฑฐ๋ ์ฐ๋ ์ด๋ฆฐ ํ์ผ๊ณผ ๊ฐ์ IO ์ ๋ณด๋ก ์ค๋ช
ํ ์ ์์ต๋๋ค.
โ ํ๋ก์ธ์ค API ํ๋ก๊ทธ๋จ์ด ํ๋ก์ธ์ค๋ฅผ ํธ์ถํ ์ ์๋ ํธ์ถ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ํธ์ถ์ ์์ฑ, ์ญ์ ๋๋ ๊ธฐํ ํธ์ถ์
๋๋ค.
โ ํ๋ก์ธ์ค๋ ์คํ ์ค, ์ค๋น ์๋ฃ, ์ฐจ๋จ๋จ ๋ฑ ์ฌ๋ฌ ์ํ ์ค ํ๋์ ์์ต๋๋ค. ์ค์ผ์ค๋ง, ์ค์ผ์ค๋ง ์์ธ ๋๋ ๋๊ธฐ์ ๊ฐ์ ๋ค์ํ ์ด๋ฒคํธ๋ก ์ธํด ํ๋ก์ธ์ค ์ํ๊ฐ ์๋ก ๋ฐ๋ ์ ์์ต๋๋ค.
โ ํ๋ก์ธ์ค ๋ชฉ๋ก ์์คํ
์ ๋ชจ๋ ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด๋ฅผ ํฌํจํฉ๋๋ค. ๊ฐ ํญ๋ชฉ์ ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก์ด๋ผ๊ณ ํ๋ฉฐ ์ค์ ๋ก๋ ํน์ ํ๋ก์ธ์ค์ ๋ํด ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ํฌํจํ๋ ๊ตฌ์กฐ์
๋๋ค.โ
์ถ์ฒ : habr.com