๐ข chap10. ์ ๋์ค์ ์ญ์ฌ์ ์ํคํ ์ฒ
โญ 10.1 ์ ๋์ค์ ์ญ์ฌ
โ 10.1.1 ๋ฉํฑ์ค์ ์ ๋์ค
- ์ ๋์ค ์ด์ ์ ๋ฒจ ์ฐ๊ตฌ์๊ฐ ์ฃผ๋ํ ๋ฉํฑ์ค OS
- ์ ๋์ค์ ์ ๊ตฌ์์๋ ์ผ ํฐ์จ์ด๋ ๋ฐ๋์ค ๋ฆฌ์น๋ ์ฌ๋ฌ ์ด์ ๋ก ๋ฉํฑ์ค๋ฅผ ํฌ๊ธฐ
- ๋ฒจ ์ฐ๊ตฌ์์์ ๊ณ ์ํ ๋ ๋จ์ํ๊ณ ๋ ํจ์จ์ ์ธ ์ด์์ฒด์ ์ ๋์ค
โ ๋ฉํฐ์ค์ ์ ๋์ค ์ฐจ์ด์ ๊ณผ ์ ์ฌ์
- ๋ฉํฑ์ค์ ์ ๋์ค ๋ชจ๋ ๋ด๋ถ ๊ตฌ์กฐ๋ก โ์ํ์ฒ๋ผ ์ฌ๋ฌ ๊ฒน์ผ๋ก ๊ตฌ์ฑ๋ ๋ง ๋ชจ์์ ์ํคํ ์ฒโ ๋ ๋ค ์ํคํ ์ฒ ๋ด์ ๊ฑฐ์ ๊ฐ์ ๊ตฌ์กฐ์ ๋ง์ด ์๋๋ฐ, ํนํ ์ปค๋ ๋ง๊ณผ ์ ธ ๋ง์ด ์ด์ ํด๋น
- ๋ฉํฑ์ค๋ ์๋ํ๊ธฐ ์ํด ๋น์ผ ์์๊ณผ ๋จธ์ ์ด ํ์
- ๋ฉํฑ์ค๋ ์ค๊ณ๊ฐ ๋ณต์ก
โ> 2000๋ 10์ 30์ผ์ ๋ง์ง๋ง์ผ๋ก ๋ฉํฑ์ค๋ฅผ ์ฐ๋ ์ปดํจํฐ๊ฐ ์ข ๋ฃ.
- ๋ฉํฑ์ค๊ฐ ์ ์ํ ์์ด๋์ด์ ํ์ ์ ๋จ์ํํ ๊ฒฐ๊ณผ โ ์ ๋์ค
โ 10.1.2 BCPL๊ณผ B
- BCPL์ ๋งํด ๋ฆฌ์ฒ๋Martin Richards๊ฐ ์ปดํ์ผ๋ฌ๋ฅผ ์์ฑํ ๋ชฉ์ ์ผ๋ก ๋ง๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
- ์ด์ ๋ธ๋ฆฌ์ด๊ฐ ์๋ ๋ ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํด ์ด์์ฒด์ ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์์ฑํ ์ ์์์ ํ์ธํ ๋ฒจ ์ฐ๊ตฌ์
- ๋ฉํฑ์ค๋ ์ ๋์ค๋ฅผ ๊ฐ๋ฐํ๋ ๊ณผ์ ์์ ๋ค๋ฅธ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ค๋ ์์ด๋์ด์ ์ค์ฌ
- ๋ฒจ ์ฐ๊ตฌ์์ ์ผ ํฐ์จ๊ณผ ๋ฐ๋์ค ๋ฆฌ์น๋ BCPL์ ์ฌ์ฉํ๋ ค๊ณ ํ์ง๋ง, DEC PDP-7 ๊ณผ ๊ฐ์ ๋ฏธ๋ ์ปดํจํฐ์์ BCPL์ ์ฌ์ฉํ๋ ค๋ฉด ์ธ์ด์ ๋ช๋ช ๋ถ๋ถ์ ์์ ํด์ผ ํ๋ค.
- ์ด๋ฌํ ์ด์ ๋ก B ์ธ์ด ํ์
B๋ ์์คํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๊ด์ ์์ ๋จ์ ์ด ์กด์ฌ
- B๋ ๋ฉ๋ชจ๋ฆฌ์์๋ง ์๋๋ฅผ ์ฌ์ฉํ ์ ์์์ต๋๋ค.
๋ชจ๋ ์ด์์ฒด์ ๋ ์๋์ ๊ด์ ์์ ์ํ๋์ด์ผ ํ์ต๋๋ค. ๋น์์๋ ๋ฐ์ดํธ๋ก ์๋ํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ๊ฟ๋ง ๊ฐ์ ๊ฒ์ด์์ต๋๋ค. ๊ทธ ๋น์ ์ฌ์ฉํ ์ ์์๋ ํ๋์จ์ด๋ ์๋ ๊ธฐ๋ฐ ์ฒด๊ณ scheme๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ค๋ค๊ธฐ ๋๋ฌธ์ ๋๋ค.
- B๋ ์๋ฃํ์ด ์์์ต๋๋ค.
๋ ์ ํํ๊ฒ ๋งํ์๋ฉด B๋ ๋จ์ผ ์๋ฃํ ์ธ์ด์์ต๋๋ค.(ypeless ์ธ์ด) ๋ชจ๋ ๋ณ์๋ ์๋์๋ฃํ์ด์์ต๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ง์ฝ 20๊ฐ์ ๋ฌธ์(๋์ null ๋ฌธ์๊ฐ ๋ํด์ ธ 21๊ฐ)๋ฅผ ๊ฐ๋ ๋ฌธ์์ด์ด ์๋ค๋ฉด, ์ด๋ฅผ ์๋๋ก๋ง ๋๋์ด์ ํ๋ ์ด์์ ๋ณ์์ ๋ด์์ผ ํ์ต๋๋ค. ์๋๊ฐ 4๋ฐ์ดํธ์ธ ๊ฒฝ์ฐ, 21๊ฐ ๋ฌธ์๋ก ๋ ๋ฌธ์์ด์ ์ ์ฅํ๋ ค๋ฉด ๋ณ์ 6๊ฐ๊ฐ ํ์ํฉ๋๋ค.
- ์๋ฃํ์ด ์๋ค๋ ๊ฒ์ ๋ฌธ์์ด ์กฐ์ ์๊ณ ๋ฆฌ๋ฌ ๊ฐ์ ๋ฉํฐ๋ฐ์ดํธmultibyte ์งํฅ ์๊ณ ๋ฆฌ๋ฌ์ด B์์ ํจ์จ์ ์ผ๋ก ์์ฑ๋ ์ ์์์ ์๋ฏธํฉ๋๋ค.
B๋ ๋ฐ์ดํธ๊ฐ ์๋ ์๋๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ ์๋ ๋ฌธ์์ด ๊ฐ์ ๋ฉํฐ๋ฐ์ดํธ ์๋ฃํ์ ๋ค๋ฃจ๊ธฐ์ ์๋๋ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ๋ ์ ์์์ต๋๋ค.
- B๋ ๋ถ๋์์์ ์ฐ์ฐ์ ์ง์ํ์ง ์์์ต๋๋ค.
๋น์ ์ ์ ๋ ๋ง์ ์๋ก์ด ํ๋์จ์ด์์ ๋ถ๋์์์ ์ฐ์ฐ์ ์ด์ฉํ ์ ์์์ง๋ง, B ์ธ์ด์์๋ ์ด๋ฅผ ์ง์ํ์ง ์์์ต๋๋ค.
- ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์์ ํน์ ๋ฐ์ดํธ ๋๋ ํ ๋ฐ์ดํธ ๋ฒ์์ ์ ๊ทผํ๋ ค๊ณ ํ ๋, ํด๋นํ๋ ์๋ ์ธ๋ฑ์ค๋ฅผ ๊ณ์ฐํ๋ ค๋ฉด ๋ ๋ง์ด ์ฐ์ฐํด์ผ ํ์ต๋๋ค.
๋ฐ์ดํธ ๊ธฐ๋ฐ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ค๋ฃฐ ์ ์๋ PDP-1๊ณผ ๊ฐ์ ๋จธ์ ์ ์ด์ฉํ ์ ์์์ง๋ง, B๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํธ๋ฅผ ๋ค๋ฃจ๊ธฐ์ ๋นํจ์จ์ ์์ด ๋๋ฌ๋ฌ์ต๋๋ค. ์ด๋ B ํฌ์ธํฐ์์ ๋ ๋ช ํํด์ก๋๋ฐ, ์ด ํฌ์ธํฐ๋ ๋ฐ์ดํธ๊ฐ ์๋๋ผ ๋ฉ๋ชจ๋ฆฌ์ ์๋๋ง์ ๋ค๋ฃฐ ์ ์์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๋ฌํ ์ด์ ๋ก NB (New B) ์ธ์ด๋ฅผ ๊ฐ๋ฐํ ๋๊น์ง B ์ธ์ด๋ ๊ณ์ ์์ ํด์ผ ํ์ต๋๋ค
๋์ค์ B ์ธ์ด๋ก๋ถํฐ ๊ตฌ์กฐ์ฒด๊ฐ ์ ๋๋์๋ค. ์ด๋ฌํ B์์๋ ๊ตฌ์กฐ์ฒด์ ์๋ฃํ์ด ์์์ง๋ง, C์์๋ ์๋ฃํ์ด ์กด์ฌ
- ๋ง์นจ๋ด 1973๋ ์ ์ ๋์ค์ ๋ค ๋ฒ์งธ ๋ฒ์ ์ (์ฌ์ ํ ์ด์ ๋ธ๋ฆฌ ์ฝ๋ ์กด์ฌ) C๋ฅผ ์ด์ฉํด ๊ฐ๋ฐ
โญ 10.2 ์ ๋์ค ์ํคํ ์ฒ
โ 10.2 ์ ๋์ค ์ํคํ ์ณ
๋ฉํฑ์ค์ ์ ๋์ค๋ ๋ชจ๋ ๋น์ทํ ์ํคํ ์ฒ๋ฅผ ๋์ ํ๋ ค ํ์ต๋๋ค. ํ์ง๋ง ์ด ๋์ ์๋นํ ๋ค๋ฅธ ์ด๋ช ์ ์ฒํฉ๋๋ค. ๋ฉํฑ์ค๋ ์ธ๊ธฐ๋ง์ ์ํ๊ธฐ ์์ํ ๋ฐ๋ฉด, ์ ๋์ค ๋ฐ BSD์ ๊ฐ์ ์ ๋์ค ๊ธฐ๋ฐ์ ์ด์์ฒด์ ๋ ๊ทธ ์ดํ๋ก๋ ์ฑ์ฅํ๊ณ ์์ต๋๋ค.
์ ๋์ค ์ฒ ํ โ ๊ฐ๋จํ ์ ๋์ค ์ค๊ณ๊ฐ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ณ ์์ค์ ์๊ตฌ ์ฌํญ์ ๋ชจ์ ์งํฉ
โ 10.2.1 ์ ๋์ค ์ฒ ํ
- ์ ๋์ค๋ ์ผ๋ฐ์ ์ธ ์ต์ข ์ฌ์ฉ์end user๊ฐ ์๋ ๊ฐ๋ฐ์๋ฅผ ์ํด ์ค๊ณ ๋ฐ ๊ฐ๋ฐ๋์์ต๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ ์ฌ์ฉ์ ๊ฒฝํ์์ ์๊ตฌํ๋ ์ฌ๋ฌ ๊ณ ๋ ค ์ฌํญ์ ์ ๋์ค ์ํคํ ์ฒ์ ํด๋นํ์ง ์์ต๋๋ค.
- ์ ๋์ค ์์คํ ์ ์๊ณ ๋จ์ํ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด๋ค ํ๋ก๊ทธ๋จ ๊ฐ๊ฐ์ ์๊ณ ๋จ์ํ ์ผ์ ์ํํ๋ ค๊ณ ์ค๊ณ๋์์ต๋๋ค. ls. mkdir. ifconfig, grep, sed ๊ฐ์ด ์๊ณ ๋จ์ํ ํ๋ก๊ทธ๋จ์ ์ฌ๋ก๊ฐ ๋ง์ต๋๋ค.
- ๋ณต์กํ ์ผ์ ์๊ณ ๋จ์ํ ํ๋ก๊ทธ๋จ์ ์ฐ์์ ์ผ๋ก ์คํํด์ ์ํํ ์ ์์ต๋๋ค. ํฌ๊ณ ๋ณต์กํ ์ผ์๋ ๋ณธ ์ง์ ์ผ๋ก ํ๋ ์ด์์ ํ๋ก๊ทธ๋จ์ด ํจ๊ป ํฌํจ๋์ด์ผ ํ๋ฉฐ, ๊ฐ ํ๋ก๊ทธ๋จ์ ์๋ฌด๋ฅผ ๋ฌ์ฑํ๋ ค๋ฉด ์ฌ๋ฌ ๋ฒ ์ค ํ๋์ด์ผ ํ๋ค๋ ์๋ฏธ์ ๋๋ค. ์ฒ์๋ถํฐ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๋์ ์ ธ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ทธ ์ข์ ์ฌ๋ก์ ๋๋ค. ์ฐธ๊ณ ๋ก ์ ธ ์คํฌ๋ฆฝํธ๋ ์ ๋์ค ์์คํ ๊ฐ์ ๋น๋ฒํ๊ฒ ์ด์๋ ์ ์์ผ๋ฉฐ, ์ ๋์ค๋ ๊ฐ๋ฐ์๊ฐ ํฌ๊ณ ๋ณต์กํ ํ๋ก๊ทธ๋จ์ ์๊ณ ๋จ์ํ ํ๋ก๊ทธ๋จ์ผ๋ก ๋๋๋๋ก ์ฅ๋ คํฉ๋๋ค.
๊ฐ๊ฐ์ ์๊ณ ๋จ์ํ ํ๋ก๊ทธ๋จ์ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์ ๋ ฅ์ผ๋ก ์ ๋ฌํ ์ ์์ด์ผ ํ๋ฉฐ, ์ด ์ฒด์ธ ์ ๊ณ์ ์ด์ด์ ธ์ผ ํฉ๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ๋ณต์กํ ์ผ์ ์ํํ ๋ฅ๋ ฅ์ด ์๋ ์ฒด์ธ์ผ๋ก ์์ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ์ฒด์ธ์์ ๊ฐ ํ๋ก๊ทธ๋จ์ ์ด์ ํ๋ก๊ทธ๋จ์ ์ถ๋ ฅ์ ๋ฐ๊ณ , ๋ก์ง์ ๋ฐ๋ผ ํํ๋ฅผ ๋ฐ๊พธ๊ณ ์ฒด์ธ์ ๋ค์ ํ๋ก๊ทธ๋จ์ ์ด๋ฅผ ์ ๋ฌํ๋ ํธ๋์คํฌ๋จธ transformer๋ก ๊ฐ์ฃผํ ์ ์์ต๋๋ค. ํนํ ์ ๋์ค ๋ช ๋ น์ด ์ฌ์ด์ ์๋ ์์ง ๋ง๋ ํ์ดํ์ธ ls -l grep a.out๊ณผ ๊ฐ์ ๊ฒ์ด ์ข์ ์์์ ๋๋ค. - ์ ๋์ค๋ ๋งค์ฐ ๋ฌธ์ ์งํฅ์ ์ ๋๋ค. ๋ชจ๋ ํ๊ฒฝ ์ค์ ์ ํ ์คํธ ํ์ผ๋ก ๋์ด ์์ผ๋ฉฐ, ๋ฌธ์๋ก ๋ ๋ช ๋ น์ด๋ฅผ ๊ฐ์ง๋๋ค. ์ ธ ์คํฌ๋ฆฝํธ ๋ํ ๋ค๋ฅธ ์ ๋์ค ์ ธ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ์๊ณ ๋ฆฌ๋ฌ์ ์์ฑํ๋ ๋จ์ํ ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ ํ ์คํธ ํ์ผ์ ๋๋ค.
- ์ ๋์ค๋ ์๋ฒฝํจ๋ณด๋ค ๊ฐ๊ฒฐํจ์ ์ ํํ๋๋ก ์ ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์ ๋จ์ํ ํด๊ฒฐ์ฑ ์ด ํจ๊ณผ์ ์ด๋ผ๋ฉด ๋ฏธ๋ฏธํ ์ ๋๋ก ์กฐ๊ธ ๋ ์ ์๋ํ๋ ๋ณต์กํ ํด๊ฒฐ์ฑ ์ ์ค๊ณํ์ง ์์์ผ ํฉ๋๋ค. ใป์ด๋ค ์ ๋์ค ํธํ ์ด์์ฒด์ ์ ๋ํด ์์ฑ๋ ํ๋ก๊ทธ๋จ์ ๋ค๋ฅธ ์ ๋์ค ์์คํ ์์๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ด์ผ ํฉ๋๋ค. ์ด๋ ์ฃผ๋ก ๋ค์ํ ์ ๋์ค ํธํ ์์คํ ์์ ๋น๋ ๋ฐ ์คํ ๊ฐ๋ฅํ ๋จ์ผ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๊ฐ์ถค์ผ๋ก์จ ์ถฉ์กฑ๋ฉ๋๋ค.
โ 10.2.2 ์ ๋์ค ๋ง
๋ง ๋ชจ๋ธ์ ์ ๋์ค์ ์ ๋ฐ์ ์ธ ์ํคํ ์ฒ๋ฅผ ๋ฌ์ฌํ ์ ์์ต๋๋ค. ๋ง ๊ฐ๊ฐ ์ ๋ด๋ถ์ ๋ง์ ๊ฐ์ธ๋ ๋ํผ๋ก ๊ธฐ๋ฅํฉ๋๋ค.
- ๋ง ๋ชจ๋ธ์ ํต์๋ ํ๋์จ์ด๊ฐ ์์ต๋๋ค.
์ด์์ฒด์ ์ ์ฃผ์ ์๋ฌด๋ ์ฌ์ฉ์๊ฐ ํ๋์จ์ด์ ์ํธ์์ฉํด ํ๋์จ์ด๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ ๊ฒ์ ๋๋ค. ์ฆ, ํ๋์จ์ด์ ์ ๊ทผํ๋ ค๋ ํ๋ก๊ทธ๋จ์ด ํ๋์จ์ด๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ด ์ ๋์ค์ ์ฃผ์ ๋ชฉํ์ ๋๋ค.
- ํ๋์จ์ด๋ฅผ ๋๋ฌ์ผ ๋ง์ ์ปค๋ kernel ์ ๋๋ค.
- ์ปค๋์ ์ด์์ฒด์ ์์ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ ๋๋ค. ํ๋์จ์ด์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ธต์ด๊ณ , ํ๋์จ์ด์ ์ง์ ๋ถ์ฐฉ๋ ๊ธฐ๋ฅ์ ๋๋ฌ๋ด๋ ๋ํผ wrapper์ ์ญํ ์ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ์ด๋ ๊ฒ ์ง์ ์ ์ผ๋ก ์ ๊ทผํ ์ ์์ผ๋ฏ๋ก, ์ปค๋์ ์์คํ ์ ์ ์ฒด ์์์ ์ด์ฉํ ์ ์๋ ๊ฐ์ฅ ๋์ ๊ถํ์ ๊ฐ์ต๋๋ค.
- ์๋ก์ด ์ ๋์ค ๊ณ์ด ์ด์์ฒด์ ๋ฅผ ์์ฑํ ๋๋ ์ปค๋์ ์์ฑํ๋ ๋ฐ ๊ฐ์ฅ ํฐ ๋ ธ๋ ฅ์ด ํ์ํฉ๋๋ค.
- ์ปค๋ ๋ง์ด ๋ค๋ฅธ ๋ง๋ณด๋ค ๋๊ป๊ฒ ๊ทธ๋ ค์ ธ ์์ต๋๋ค. ์ ๋์ค ์ปค๋ ๋ด๋ถ์๋ ๋ง์ ๋ค์ํ ์ ๋์ด ์กด์ฌํ๋ฉฐ, ์ ๋ ๊ฐ๊ฐ์ ์ ๋์ค ์ํ๊ณ์์ ํ์์ ์ธ ์ญํ ์ ํฉ๋๋ค.
- ๋ค์ ๋ง์ ์ ธshell ์ ๋๋ค.
- ์ฌ์ฉ์ ์์ฉํ๋ก๊ทธ๋จ์ด ์ปค๋๊ณผ ์ํธ์์ฉํด ์ปค๋์ ์ฌ๋ฌ ์๋น์ค๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ด ์ปค๋ ์ฃผ๋ณ์ ์ ธ์ ๋๋ค.
- ์ ธ ๋ง์ ์ ๋์ค ์ฒ ํ์ ๋ฐ๋ฅธ ๋๋ถ๋ถ์ ์๊ตฌ ์ฌํญ์ ์ฃผ๋ก ๋จ๋ ์ผ๋ก ์ ๊ณต
- ์ ธ ๋ง์ ์ฌ๋ฌ ์์ ํ๋ก๊ทธ๋จ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด๋ค ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ์๋ ์์ฉํ๋ก๊ทธ๋จ์ด ์ปค๋์ ์๋น์ค๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๋๊ตฌ ๋ชจ์์ ํ์ฑํฉ๋๋ค. ๋ํ ์ ธ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ์๋ ํฌํจํ๋๋ฐ, ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ชจ๋ C๋ก ์์ฑ๋์์ต๋๋ค.
- ๋จ์ผ ์ ๋์ค ๊ท๊ฒฉ simple Unix Specification (SUS)์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก, ์ ธ ๋ง์ ๊ฐ๋ฐ์๋ฅผ ์ํด ํ์ค ๋ฐ ๊ฐ๊ฒฐํ๊ฒ ์ ์๋ ์ธํฐํ์ด์ค๋ฅผ ๋ฐ๋์ ๋ ธ์ถํด์ผ ํฉ๋๋ค.
- ๋ง์ง๋ง์ผ๋ก ๊ฐ์ฅ ๋ฐ๊นฅ์ชฝ ๋ง์ธ ์ฌ์ฉ์ ์์ฉํ๋ก๊ทธ๋จ
- ์ ๋์ค ์์คํ ์์ ์ฌ์ฉํ๊ธฐ ์ํด ์์ฑ๋ ์ค์ ๋ชจ๋ ์์ฉํ๋ก๊ทธ๋จ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ์ฌ๊ธฐ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค, ์น ์๋น์ค, ๋ฉ์ผ ์ ๋น์ค, ์น ๋ธ๋ผ์ฐ์ , ์ํฌ์ํธ ํ๋ก๊ทธ๋จ, ์๋ ํธ์ง ํ๋ก๊ทธ๋จ ๋ฑ์ด ์์ต๋๋ค.
- ์ด๋ฌํ ์์ฉํ๋ก๊ทธ๋จ์ ์๋ฌด๋ฅผ ์์ํ๊ธฐ ์ํด, ๊ณง ๋ค๋ฃฐ ์์คํ ํธ์ถsystem call์ ํตํด์ ์ปค๋์์ง์ ์ ๊ทผํ๊ธฐ๋ณด๋ค๋ ์ ธ ๋ง์ด ์ ๊ณตํ๋ API์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ ๋์ค ์ฒ ํ์ ์๋ ์ด์์ฑ์ ์๋ฆฌ ๋๋ฌธ์ ๋๋ค.
- ์ ธ ๋ง๋ง ์ฌ์ฉํด์ผ ํ๋ค๋ ์ ์ฝ์ ์ด๋ฌํ ์์ฉํ๋ก๊ทธ๋จ์ด ์ ๋์ค ํธํ ์ด์์ฒด์ ๊ฐ ์๋ ๋ค์ํ ์ ๋์ค ๊ณ์ด ์์คํ ์์ ํธํํ ์ ์๋๋ก ํฉ๋๋ค.
- ์ ๋์ค ๋ง ๋ชจ๋ธ์ ๋ํ ์ผ๋ฐ์ ์ธ ์ฃผ์ ์ค์๋ ๋ฐ๊นฅ ๋ง์ด ์๋น์ค๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๋ด๋ถ ๋ง์ด ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํด์ผ ํ๋ค๋ ๊ฒ์ด ์์ต๋๋ค. ์ฌ์ค ๋ง ์ฌ์ด์ ์ธํฐํ์ด์ค๋ ๋ง ๊ทธ ์์ฒด๋ณด๋ค ๋ ์ค์ํฉ๋๋ค.
โญ 10.3 ์ฌ์ฉ์ ์์ฉํ๋ก๊ทธ๋จ์ ๋ํ ์ ธ ์ธํฐํ์ด์ค
์ธ๊ฐ ์ฌ์ฉ์๋ ์ ๋์ค ์์คํ ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด ํฐ๋ฏธ๋์ด๋ ์น ๋ธ๋ผ์ฐ์ ๊ฐ์ ํน์ GUI ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํฉ๋๋ค.
- ํฐ๋ฏธ๋๊ณผ GUI ํ๋ก๊ทธ๋จ = ์ฌ์ฉ์ ์์ฉํ๋ก๊ทธ๋จ = ์์ฉํ๋ก๊ทธ๋จ = ํ๋ก๊ทธ๋จ
- ์ด๋ค์ ์ ธ ๋ง์ ํตํด ํ๋์จ์ด๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค. ์ ธ๋ง์ด ์ ๊ณตํ๋ API๋ฅผ ํตํด ๋๋ถ๋ถ์ ์ ๋์ค ํ๋ก๊ทธ๋จ์ด ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ํ๋์จ์ด๋ก๋ ๋ฉ๋ชจ๋ฆฌ, CPU, ๋คํธ์ํฌ ์ด๋ํฐ, ํ๋๋์คํฌ ๋๋ผ์ด๋ธ๊ฐ ์์ต๋๋ค.
- ์ ๋์ค๋ฅผ ์ํด C๋ก ๊ฐ๋ฐ๋ ๋ค์ํ ํ๋ก๊ทธ๋จ์ด ์กด์ฌ. ์ด๋ค์ ๊ณตํต์ ์? ์ด๋ค ํ๋ก๊ทธ๋จ์ ์ฝ๋๋ ์ฝ๊ฐ๋ง ๋ณํํ๋ฉด ๋๋ถ๋ถ์ ์ ๋์ค ๋ฐ ์ ๋์ค ๊ณ์ด ์ด์์ฒด์ ์์ ์ด์ ๊ฐ๋ฅ
- ์ด๋ป๊ฒ ๊ฐ๋ฅํ๊ฐ? ๋ต์ ๊ฐ๋จํฉ๋๋ค. ๋ชจ๋ ์ ๋์ค ์์คํ ์ ์ ธ ๋ง์์ ๊ฐ์ ์์ฉํ๋ก๊ทธ๋จ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์คApplication Programming Interface (API)๋ฅผ ๋ ธ์ถํฉ๋๋ค. ๋ ธ์ถ๋ ํ์ค ์ธํฐํ์ด์ค๋ง์ ์ฌ์ฉํ๋ C ์์ค ์ฝ๋๋ ๋ชจ๋ ์ ๋์ค ์์คํ ์์ ๋น๋ ๋ฐ ์คํํ ์ ์์ต๋๋ค.
- ๊ทธ๋ ๋ค๋ฉด API๋ฅผ ๋ ธ์ถํ๋ค๋ ์๋ฏธ๋? API๋ ์ด์ ์ ์ค๋ช ํ ๋๋ก, ์ผ๋ จ์ ์ ์ธ์ ํฌํจํ๋ ํค๋ ํ์ผ์ ๋ฌถ์์ ๋๋ค. ์ด ํค๋์ ๊ทธ ์์ ์๋ ์ ์ธ๋ ํจ์๋ ๋ชจ๋ ์ ๋์ค ์์คํ ์์ ๊ฐ์ต๋๋ค. ํ์ง๋ง ์ด ํจ์์ ๊ตฌํ, ์ฆ ๊ฐ๊ฐ์ ์ ๋์ค ํธํ ์์คํ ์ ์ํด ์์ฑ๋ ์ ์ , ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋ก ๊ณ ์ ํ๊ณ ๋ค๋ฅผ ์ ์์ต๋๋ค.
โ ์ ๋์ค ํธํ์์คํ ์ด๋? ์ฐ๋ฆฌ๋ ์ ๋์ค๋ฅผ ์ด์์ฒด์ ๊ฐ ์๋ ํ์ค์ผ๋ก ๋ด ๋๋ค. ์ ๋์ค ํ์ค๊ณผ ์์ ํ ํธํ ๊ฐ๋ฅํ๋๋ก ๋ง๋ค์ด์ง ์์คํ ์ด ์กด์ฌํ๋ฉฐ, BSD ์ ๋์ค์ ๊ฐ์ ์ด๋ฌํ ์์คํ ์ โ ์ ๋์ค ํธํ ์์คํ
โ ์ ๋์ค ๊ณ์ด์์คํ ์ด๋?
์ ๋์ค ํ์ค์ ๋ถ๋ถ์ ์ผ๋ก ๋ฐ๋ฅด๋ ์์คํ ์ ์ ๋์ค ๊ณ์ด ์์คํ ์ด๋ผ๊ณ ํ๋๋ฐ, ๋ฆฌ๋ ์ค๊ฐ ์ด์ ํด๋น
์ ธ ๋ง์ด ๋ ธ์ถํ๋ ์ฌ๋ฌ ์ข ๋ฅ์ API๊ฐ ์์ต๋๋ค. ์ด๋ค ์ค ๋ช ๊ฐ์ง๋ ์๋ฌด ์ฌํญ์ด๊ณ ๋๋จธ์ง๋ ์ ํ ์ฌํญ์ ๋๋ค. ๋ค์์ SUS V4์ ์๋ API ๋ชฉ๋ก์ ๋๋ค.
- ์์คํ ์ธํฐํ์ด์ค: ๋ชจ๋ C ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ํจ์์ ๋ชฉ๋ก์ ๋๋ค. SUS 4์๋ ์ ๋์ค์์คํ ์์ ๊ตฌํ๋์ด์ผ ํ๋ 1.191๊ฐ์ ํจ์๊ฐ ์์ต๋๋ค. ์ด ํ ์ด๋ธ์ C์ ํน์ ๋ฒ์ ์์ ํน์ ํจ์๊ฐ ์๋ฌด ๋๋ ์ ํ์ด๋ผ ๋ช ์ํฉ๋๋ค. ์ฐธ๊ณ ๋ก ์ฐ๋ฆฌ๊ฐ ๊ด์ฌ ์๋ ๋ฒ์ ์ C99์ ๋๋ค.
- ํค๋ ์ธํฐํ์ด์ค: SUS v4์ ํธํ ๊ฐ๋ฅํ ์ ๋์ค ์์คํ ์์ ์ฌ์ฉํ ์ ์๋ ํค๋ ํ์ผ ๋ชฉ๋ก์ ๋๋ค. ์ด SUS ๋ฒ์ ์์๋ ๋ชจ๋ C ํ๋ก๊ทธ๋จ์ ์ ๊ทผํ ์ ์๋ 82๊ฐ์ ํค๋ ํ์ผ์ด ์์ต๋๋ค. ์ด ๋ฆฌ์คํธ๋ฅผ ์ดํด ๋ณด๋ฉด stdio.h, stdlib.h, math.h, string.h์ ๊ฐ์ ์ ๋ช ํ ํค๋ ํ์ผ์ด ๋ง์์ ์ ์ ์์ต๋๋ค.
- ์ ํธ๋ฆฌํฐ ์ธํฐํ์ด์ค: SUS v4์ ํธํ๋๋ ์ ๋์ค ์์คํ ์์ ์ฌ์ฉํ ์ ์๋ ์ ํธ๋ฆฌํฐ ํ๋ก๊ทธ๋จ ๋๋ ์ปค๋งจ๋ ๋ผ์ธ ํ๋ก๊ทธ๋จ์ ๋ชฉ๋ก์ ๋๋ค. ํ ์ด๋ธ์ ์ดํด๋ณด๋ฉด, ์ฌ๋ฌ๋ถ์๊ฒ ์น์ํ ๋ง์ ๋ช ๋ น์ด๊ฐ ๋ณด์ ๋๋ค. mkdir. ls, cp. df, bc ๊ทธ๋ฆฌ๊ณ ๋ ๋ง์ ๋ช ๋ น์ด๊ฐ ์ฌ๊ธฐ์ ์์ผ๋ฉฐ 160๊ฐ์ ์ ํธ๋ฆฌํฐ ํ๋ก๊ทธ๋จ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ์คํฌ๋ฆฝํ ์ธํฐํ์ด์ค: ์ ธ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ ๋ ์ฌ์ฉ๋๋ ์ธ์ด์ ๋๋ค. ์ฃผ๋ก ์ ํธ๋ฆฌํฐ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ ๋ ์๋ํ๋ ์๋ฌด๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์คํฌ๋ฆฝํ ์ธํฐํ์ด์ค๋ ์ ธ ์คํฌ๋ฆฝํ ์ธ์ด scripting language ๋๋ ์ ธ ๋ช ๋ น์ด shell command language๋ผ๊ณ ํฉ๋๋ค.
- XCURSES ์ธํฐํ์ด์ค: XCURSES๋ ๋ฏธ๋๋ฉํ ํ ์คํธ ๊ธฐ๋ฐ์ GUI์์ C ํ๋ก๊ทธ๋จ๊ณผ ์ฌ์ฉ์๊ฐ ์ํธ์์ฉํ ์ ์๋๋ก ํ๋ ์ผ๋ จ์ ์ธํฐํ์ด์ค์ ๋๋ค. ๋ค์ ์คํฌ๋ฆฐ์์ XCURSES์ ๋ํ ๊ตฌํ์ธ ncurses๋ฅผ ์ฌ์ฉํด ์์ฑ๋ GUI์ ๋ํ ์๋ฅผ ๋ณผ ์ ์์ต๋๋ค. SUS V4์๋ 3๊ฐ์ ํค๋ ์์ 379๊ฐ ์ ํจ์์ 4๊ฐ์ ์ ํธ๋ฆฌํฐ ํ๋ก๊ทธ๋จ์ด ์์ต๋๋ค. .
- SUS๋ ์์คํ ์์ ํค๋๋ฅผ ์ด๋์์ ์ฌ์ฉํ ์ ์๊ณ ์ด๋์ ์๋์ง๋ฅผ ์ค๋ช ํ ๋ฟ์ ๋๋ค
- C ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ libc ์์คํ ์ธํฐํ์ด์ค + ํค๋ ์ธํฐํ์ด์ค๋ฅผ + ๊ฐ ์ ๋์ค ๋ฒ์ Unix flavor (ํน์ ์ ๋์ค ๊ตฌํ)๋ง๋ค ๋ค๋ฅธ, ์ ๊ณต๋ฐ์ ํจ์์ ๊ตฌํ๋ค์ ํฉ
- ์ด์ ๊ฐ๋ฅํ ์ด์์ฒด์ ์ธํฐํ์ด์ค Portable Operating System Interface (POSIX). ๋ฆฌ๋ ์ค ํ์ ํ ์ฌ๋ฌ ์ ๋์ค๊ณ์ด ์ด์์ฒด์ ๊ฐ๋ฐ๋์๋๋ฐ. ์ด๋ SUS ํ์ค์ ๋ถ๋ถ์งํฉ์ ํน์ ์ด๋ฆ์ ๋ถ์ฌํ๋ ํ ๋๊ฐ ๋์์ต๋๋ค. POSIX๋ ์ ๋์ค ๊ณ์ด ์์คํ ์ด ๋ฐ๋ฅด๋ SUS ํ์ค์ ๋ถ๋ถ์งํฉPOSIX๋ ์ ๋์ค ํ์ค์ด ๋ ๊ด๋ฒ์ํ ์ด์์ฒด์ ์ ์ ์ฉ ๊ฐ๋ฅํ๋๋ก ํฉ๋๋ค.
- SUS์ POSIX ํ์ค์ ๋ชจ๋ ์ธํฐํ์ด์ค์ ๋ํ ๊ท์น์ ๋๋ค.
- ๊ฐ ์ ๋์ค ์์คํ ์ POSIX ๋๋ SUS ๊ตฌํ์ ๋ํ ์์ฒด์ ์ธ ๊ตฌํ์ด ์์ต๋๋ค.
- ์ด๋ฌํ ๊ตฌํ์ ์ ธ ๋ง์ ์ํ๋ libc ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์นํฉ๋๋ค.
- ๋ค์ ๋งํด, ์ ๋์ค ์์คํ ์์ ์ ธ ๋ง์ ํ์ค ๋ฐฉ์์ผ๋ก ์ ๊ณตํด์ผ ํ๋ libc ๊ตฌํ์ ํฌํจํฉ๋๋ค.
- ๊ทธ์ ๋ฐ๋ผ ์ ธ ๋ง์ ์์ฒญ์ ์ ๋ฌํด ์ปค๋ ๋ง์ด ์ฒ๋ฆฌํ๋๋ก ํฉ๋๋ค.
โญ 10.4 ์ ธ ๋ง์ ๋ํ ์ปค๋ ์ธํฐํ์ด์ค
์ ์๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค๊ณ ์ค๋ช ํ์ต๋๋ค. ์ ธ ๋ง์์ ํน์ ๋ก์ง์ ๋ถ๋ฌ์ค๋ ๋ฐฉ์์๋ ์ฃผ๋ก ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
- libc ๋๋ ์ ธ ์ ํธ๋ฆฌํฐ ํ๋ก๊ทธ๋จ์ ํตํ๋ ๋ฐฉ์์ ๋๋ค.
์ ธ ๋ฃจํด์ ์คํํ๊ธฐ ์ํด ์ฌ์ฉ์ ์์ฉํ๋ก๊ทธ๋จ์ libc ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐ๊ฒฐ๋๊ฑฐ๋ ๋๋ ์์คํ ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ธฐ์กด์ ์ ํธ๋ฆฌํฐ ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์์ด์ผ ํฉ๋๋ค.
์ฐธ๊ณ ๋ก ๊ธฐ์กด ์ ํธ๋ฆฌํฐ ํ๋ก๊ทธ๋จ์ ์์ฒด์ ์ผ๋ก libc ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ชจ๋ ์ ธ ๋ฃจํด์ libc ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฐพ์ ์ ์๋ค๊ณ ์ผ๋ฐํํ ์ ์์ต๋๋ค.
- FreeBSD๋ BSD ์ ๋์ค์์ ํ์๋ ์ ๋์ค๊ณ์ด ์ด์์ฒด์ ์ ๋๋ค.
๋ค์ ์์ ๋ก ์์ํด๋ด ์๋ค. [์์ 10-1]์ 1์ด๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ธฐ๋ง ํ๋ ๊ฐ๋จํ ํ๋ก๊ทธ๋จ์ ๋๋ค. ๋ง ์ฐฌ๊ฐ์ง๋ก ์ด ํ๋ก๊ทธ๋จ์ ์์ฉํ๋ก๊ทธ๋จ ๋ง์ ์์ ๊ฒ์ผ๋ก ์ฌ๊ฒจ์ง๋๋ค. ๋น๋ก ๋งค์ฐ ๋จ์ํ ํ๋ก๊ทธ ๋จ์ด์ง๋ง, ์ฌ์ฉ์ ์์ฉํ๋ก๊ทธ๋จ์ด๋ผ๋ ์๋ฏธ์ ๋๋ค.
์ ธ ๋ฐ์ค 10-1 [์์ 10-1]์ด ๋ถ๋ฌ์จ ์์คํ ํธ์ถ์ ์ถ์ ํ๊ธฐ ์ํด truss๋ฅผ ์ฌ์ฉํ๋ [์์ 10-1]์ ๋น๋ํ๊ณ ์คํํ๊ธฐ
1
2
3
4
5
6
7
8
9
10
11
// File name: ExtremeC_examples_chapter10_1.c
// Description: Simple sleep
#include <unistd.h>
int main(int argc, char** argv) {
//์์คํฌ ํธ์ถ
sleep(1);
return 0;
}
~
[๋ฐ์ค 10-1]์์ ๋ณผ ์ ์๋ฏ, truss๋ผ๋ ์ ํธ๋ฆฌํฐ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ์ต๋๋ค.
- nanosleep์ ์์คํ
ํธ์ถ์
๋๋ค.
- ์์คํ ํธ์ถ์ time.h์ ์ ์๋ ์ ธ ๋ง์์ nanosleep๊ณผ clock_nanosleep ํจ์๋ฅผ ํธ์ถํด ์ ๊ทผํ ์ ์์ต๋๋ค. ์ฐธ๊ณ ๋ก ์ฌ๊ธฐ์๋ unitsd.h์ sleep ํจ์๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
- ์ด๋ฌํ ํจ์๋ฅผ ํธ์ถํ๋ ค๋ฉด ๋ง์ปค์-lc ์ต์ ์ ์ ๋ฌํด libc์ ๋ํด ์คํ ๊ฐ๋ฅํ ํ์ผ์ ๋งํฌํด์ผ ํฉ๋๋ค. ์ด๋ FreeBSD๋ง ํด๋น๋ ์ ์์ต๋๋ค.
โญ 10.5 ์ปค๋
์ปค๋์ ๊ฐ๋ : ์ปดํจํฐ๊ฐ ์ผ์ง ํ๋ถํฐ ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผํ๋ ์ด์์ฒด์ ์ ์คํ ์ฝ๋ ๋ชจ์์ผ๋ก, ํ๋์จ์ด ๋ฐ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ ๊ด๋ฆฌ์ ์ญํ ์ ์ํ
๋ชจ๋๋ฆฌ์ ์ปค๋
- ํ๋์จ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ์ํด ์ฌ๋ฌ ์ ๋์ค ๋ง ์ฌ์ด์์ ์ด๋ฃจ์ด์ง๋ ํจ์ ํธ์ถ๊ณผ ์์คํ ํธ์ถ
- ๋ชจ๋๋ฆฌ์ ์ปค๋์๋ง ํด๋น
์ปค๋ ํ๋ก์ธ์ค
- ์ฒซ ๋ฒ์งธ๋ก ๋ก๋ ๋ฐ ์คํ๋ฉ๋๋ค. ํ์ง๋ง ์ฌ์ฉ์ ํ๋ก์ธ์ค๊ฐ ์คํฐ๋๊ธฐ ์ ์ ์ปค๋ ํ๋ก์ธ์ค๊ฐ ๋ก๋๋๊ณ ์คํ๋์ด์ผ ํฉ๋๋ค.
- ์ปค๋ ํ๋ก์ธ์ค๋ ํ๋์ฌ์ผ ํฉ๋๋ค. ํ์ง๋ง ๋์์ ์์ ์ค์ธ ์ฌ๋ฌ ๊ฐ์ ์ฌ์ฉ์ ํ๋ก์ธ์ค๊ฐ ์์ ์ ์์ต๋๋ค.
- ์ปค๋ ํ๋ก์ธ์ค๋ ๋ถํธ๋ก๋boot loader์ ์ํด ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ก ์ปค๋ ์ด๋ฏธ์ง๋ฅผ ๋ณต์ ํด ์์ฑ๋ฉ๋๋ค.
- ํ์ง๋ง ์ฌ์ฉ์ ํ๋ก์ธ์ค๋ exec์ด๋ fork ์์คํ ํธ์ถ์ ์ด์ฉํด ์์ฑ๋ฉ๋๋ค. ์ด๋ฌํ ์์คํ ํธ์ถ์ ๋๋ถ๋ถ์์ ๋์ค ์์คํ ์ ์กด์ฌํฉ๋๋ค.
- ์ปค๋ ํ๋ก์ธ์ค๋ ์์คํ ํธ์ถ์ ๋ค๋ฃจ๊ณ ์คํํฉ๋๋ค. ํ์ง๋ง ์ฌ์ฉ์ ํ๋ก์ธ์ค๋ ์์คํ ํธ์ถ์ ๋ถ๋ฌ์ ์ปค๋ ํ๋ก์ธ์ค๊ฐ ์์คํ ์ ํธ์ถํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค.
- ์ปค๋ ํ๋ก์ธ์ค๋ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ๊ถํ ์์ค์ด ๋์ ๋ชจ๋ privileged mode์ ์๋ ๋ชจ๋ ์ฐ๊ฒฐ๋ ํ๋์จ์ด๋ฅผ ๋ด ๋๋ค.
- ์ฌ์ฉ์ ํ๋ก์ธ์ค๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ด ๋๋ค. ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ์ผ๋ถ์ ์ฐ๊ฒฐ๋ ๊ฒ์ผ๋ก ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๋ ์ด์์์ ๊ดํด์๋ ์๋ฌด๊ฒ๋ ์์ง ๋ชปํฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ์ฉ์ ํ๋ก์ธ์ค๋ ๋ฆฌ์์ค์ ํ๋์จ์ด์ ๋ํ ์ ๊ทผ์ ํต์ ํ๊ณ ๊ฐ๋ ํฉ๋๋ค. ์ฌ์ฉ์ ํ๋ก์ธ์ค๋ ์ด์์ฒด์ ๊ฐ ์๋ฎฌ๋ ์ด์ ํ ์๋๋ฐ์ค ์์์ ์คํ๋๋ ๊ฒ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. ์ด๋ ์ฌ์ฉ์ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ์ฌ์ฉ์ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ณผ ์ ์์์ ๋ํ๋ ๋๋ค.
์ด์์ฒด์ ๋ฐํ์
- ์ปค๋ ํ๋ก์ธ์ค ๋ชจ๋, ์ฌ์ฉ์ ํ๋ก์ธ์ค ๋ชจ๋
- ์ ์์ ์คํ ๋ชจ๋๋ ์ปค๋ ๋๋ ๋๋ ์ปค๋ ๊ณต๊ฐ์ด๋ผ๊ณ ํฉ๋๋ค. ํ์๋ ์ ์ ๋๋ ๋๋ ์ฌ์ฉ์ ๊ณต๊ฐ์ด๋ผ๊ณ ํฉ๋๋ค.
- ์ฌ์ฉ์ ํ๋ก์ธ์ค๊ฐ ์์คํ ํธ์ถ์ ๋ถ๋ฌ์ค๋ ๊ฒ์ ๋ ๋๋๋ฅผ ํจ๊ป ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ปค๋ ๊ณต๊ฐ๊ณผ ์ฌ์ฉ์ ๊ณต๊ฐ์ ์๋ก ๋ถ๋ฆฌํด์ผ ํ์ผ๋ฏ๋ก ์์คํ ํธ์ถ์ด ๊ณ ์๋์์ต๋๋ค.
- ์ปค๋ ๊ณต๊ฐ์ ์์คํ ์์์ ์ ๊ทผํ ์ ์๋ ๊ฐ์ฅ ๊ถํ์ด ๋์ ๊ฒ์ด๊ณ , ์ฌ์ฉ์ ๊ณต๊ฐ์ ๊ฐ์ฅ ๊ถํ์ด ๋ฎ์ผ๋ฉฐ ๊ฐ๋ ๋ฐ๋ ์ ๊ทผ ๊ถํ์ ๊ฐ์ต๋๋ค.
- ์ผ๋ฐ์ ์ธ ์ ๋์ค ์ปค๋์ ๋ํ ๋ด๋ถ ๊ตฌ์กฐ๋ ์ปค๋์ด ์ํํ๋ ์๋ฌด์ ๋ฐ๋ผ ๊ตฌ๋ณํ ์ ์์ต๋๋ค.
- ์ฌ์ค ํ๋์จ์ด๋ฅผ ๊ด๋ฆฌํ๋ ์ผ์ ์ปค๋์ด ์ํํ๋ ์ฌ๋ฌ ์๋ฌด ์ค ํ๋์ ๋๋ค.
์ ๋์ค ์ปค๋์ด ๊ฐ๋ ๊ถํ ๋ชฉ๋ก
- ํ๋ก์ธ์ค๊ด๋ฆฌ: ์ฌ์ฉ์ ํ๋ก์ธ์ค๋ ์์คํ ํธ์ถ์ ํตํด ์ปค๋์ด ์์ฑํฉ๋๋ค. ์๋ก์ด ํ๋ก์ธ์ค์ ๋ํ ๋ชจ๋ฆฌ ํ ๋น๊ณผ ๊ทธ์ ๋ํ ๋ช ๋ น์ด ๋ก๋ฉ์ ๋ชจ๋ ์์ ์ค์์ ํ๋ก์ธ์ค๋ฅผ ์คํํ๊ธฐ ์ ๋ฐ๋์ ์ํํด์ผ ํ๋ ์์ ์ ๋๋ค.
- ํ๋ก์ธ์ค ๊ฐ ํต์ Inter-Process Communication (IPC) : ๋์ผํ ๋จธ์ ์ ์๋ ์ฌ์ฉ์ ํ๋ก์ธ์ค๋ ๊ทธ๋ค ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๋ ์๋ก ๋ค๋ฅธ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ด๋ฌํ ๋ฉ์๋์๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ, ํ์ดํ, ์ ๋์ค ๋๋ฉ์ธ ์์ผ์ด ์์ต๋๋ค. ์ปค๋์ด ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํด์ผ ํ๋ฉฐ, ๋ฉ์๋ ์ค ์ผ๋ถ๋ ์ปค๋์ด ๋ฐ์ดํฐ ๊ตํ์ ํต์ ํด์ผ ํฉ๋๋ค.
- ์ค์ผ์ค๋ง: ์ ๋์ค๋ ํญ์ ๋ค์ค ์์ (๋ฉํฐํ์คํน) ์ด์์ฒด์ ๋ก ์๋ ค์ก์ต๋๋ค. ์ปค๋์ CPU ์ฝ์ด์ ๋ํ ์ ๊ทผ์ ๊ด๋ฆฌํ๋ฉฐ ์ด ์ ๊ทผ์ ๋ํ ๊ท ํ์ ์ ์งํ๋ ค๊ณ ํฉ๋๋ค.
- ์ปค๋ ์๋ฌด : ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ(์ฃผ์ ์๋ฌด), ํ๋ก์ธ์ค ํ ๋น, ๋ฉ์๋ ๊ณต์ (ํ์ดํ ์ ๊ณต), ๋ค์ค ์์ , ์ค์ผ์ค๋ง, ๋ฑ
๋ฉํฐ์ค๋ ๋ฉ, ๋ฉํฐํ๋ก์ธ์ฑ
- ์์คํ ์์: ์ผ๋จ ์ปค๋ ์ด๋ฏธ์ง๊ฐ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋๊ณ ์ปค๋ ํ๋ก์ธ์ค๊ฐ ์์๋๋ฉด, ์ปค๋์ ์ฌ์ฉ์ ์คํ์ด์ค๋ฅผ ์ด๊ธฐํํด์ผ ํฉ๋๋ค. ์ด๋ ์ฃผ๋ก ํ๋ก์ธ์ค ์๋ณ์ process identifier (PID) 1๋ก ์ฒซ ๋ฒ์งธ ์ฌ์ฉ์ ํ๋ก์ธ์ค๋ฅผ ์์ฑํจ์ผ๋ก์จ ์ํ๋ฉ๋๋ค. ๋ฆฌ๋ ์ค์ ๊ฐ์ ๋ช๋ช ์ ๋์ค ์์คํ ์์๋ ์ด ํ๋ก์ธ์ค๋ฅผ init์ด๋ผ๊ณ ํฉ๋๋ค. ์ด ํ๋ก์ธ์ค๊ฐ ์์๋ ๋ค์ ๋ค๋ฅธ ์๋น์ค์ ๋ฐ๋ชฌ daemon์ด ์์๋ฉ๋๋ค.
- ์ฅ์น ๊ด๋ฆฌ : CPU์ ๋ฉ๋ชจ๋ฆฌ ์ธ์๋ ์ปค๋์ ๋ชจ๋ ์ปค๋์ ๋ํด์ ์ถ์ํ๋ฅผ ํตํด ํ๋์จ์ด๋ฅผ ๊ด๋ฆฌํ ์ ์์ด์ผ ํฉ๋๋ค. ์ฅ์น๋ ์ ๋์ค ์์คํ ์ ์ฐ๊ฒฐ๋ ์ค์ ๋๋ ๊ฐ์์ ํ๋์จ์ด์ ๋๋ค. ์ผ๋ฐ์ ์ธ ์ ๋์ค ์์คํ ์ /dev ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํด ์ฐ๊ฒฐ๋ ์ฅ์น ํ์ผ์ ์ ์ฅํฉ๋๋ค. ์ฐ๊ฒฐ๋ ๋ชจ๋ ํ๋๋์คํฌ ๋๋ผ์ด๋ธ, ๋คํธ์ํฌ ์ด๋ํฐ, USB ์ฅ์น ๋ฑ์ /dev ๊ฒฝ๋ก์ ์๋ ํ์ผ๊ณผ ์ฐ๊ฒฐ๋ฉ๋๋ค. ์ด๋ฌํ ์ฅ์น ํ์ผ์ ์ฌ์ฉ์ ํ๋ก์ธ์ค๊ฐํด๋น ์ฅ์น์ ํต์ ํ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ปค๋์๋ ์ด์ฉ ๊ฐ๋ฅํ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ ๋ Memory Management unit (MMU)๊ณผ ๊ฐ์ ๋ค์ํ ์ ๋์ด ์์ต๋๋ค.
- ํ๋ก์ธ์ค ๊ด๋ฆฌ ์ ๋์ ์ฌ์ฉ์ ๊ณต๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค๋ฉฐ ์ด์ ๋ํด ๋ฆฌ์์ค๋ฅผ ํ ๋นํฉ๋๋ค. ๋ํ ํ๋ก์ธ์ค ๊ด๋ฆฌ ์ ๋์ ํ๋ก์ธ์ค๊ฐ IPC๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค .
- ํ์ผ ์์คํ ์ ๋์ ์ปค๋์ ํ์์ ์ธ ๋ถ๋ถ์ผ๋ก, ๋ธ๋ก๊ณผ ๋ฌธ์ ์ฅ์น์ ๋ํ ์ถ์ํ์ด๋ฉฐ ํ๋ก์ธ์ค์ ์ปค๋ ์์ ์ด ๊ฐ์ ๊ณต์ ํ์ผ ๊ณ์ธต์ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
โญ 10.6 ํ๋์จ์ด
- CPU์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ ์ ๋์ค ์์คํ ์ ์ฐ๊ฒฐ๋ ํ์ ์ฅ์น์ ๋๋ค.
- ์ฃผ๋ณ ์ฅ์น
- ํ๋๋์คํฌ ๋๋ผ์ด๋ธ, ๋คํธ์ํฌ ์ด๋ํฐ, ๋ง์ฐ์ค, ๋ชจ๋ํฐ, ๊ทธ๋ํฝ ์นด๋, ์์ดํ์ด ์ด๋ํฐ์ ๊ฐ์ ๋๋จธ์ง ๋ชจ๋ ํ๋์จ์ด๋ ์ฃผ๋ณ ์ฅ์น์ ๋๋ค. -์ ๋์ค ์ปค๋์ CPU์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ฒฝํ๊ฒ ์จ๊น๋๋ค. ์ปค๋๋ง์ด ์ด๋ฅผ ์ง์ ๊ด๋ฆฌํ๋ฉฐ, ์ฌ์ฉ์ ๊ณต๊ฐ์์๋ ์ ๊ทผ์ด ํ์ฉ๋์ง ์์ต๋๋ค. ์ ๋์ค ์ปค๋์ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐ ์ค์ผ์ค๋ฌ ์ ๋์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ CPU๋ฅผ ๊ฐ๊ฐ ๊ด๋ฆฌํฉ๋๋ค.
- ์ ๋์ค ์์คํ ์ ์ฐ๊ฒฐ๋ ๋ค๋ฅธ ์ฃผ๋ณ ์ฅ์น๋ ์ด์ ํด๋นํ์ง ์์ต๋๋ค. ์ฃผ๋ณ ์ฅ์น๋ ์ฅ์น ํ์ผ์ด๋ผ๋ ๋ฉ์ปค๋์ฆ์ ํตํด ๋ ธ์ถ๋ฉ๋๋ค.