์ด์์ฒด์ ๋ฅผ ์ง์ ๊ตฌํํ๋ค. 03.02.ํ (์์ ).
C
, AWS Linux
, ๋ญ ๊ธฐํ ๋ฑ๋ฑ โฆ๐ฐ[3์ฃผ์ฐจ]
์์กด๊ฐ์ด ๋ฐ๋ฅ์ ์น๋ ๊ฒฝํ์ ํ๊ณ ์ถ์ผ๋ฉด ๋ฐ๋ก ํํ ์ค ๊ฐ๋ฐ์ ํ๋ผ๊ณ ๊ถํ๊ณ ์ถ๋ค.
CS๋ฅผ ๋ฐฐ์ฐ๋ ๊ณผ์ ์ด ๋ด ๋๋ฆ ์ ์ฑ์ ๋ง๋๋ค๊ณ ์๊ฐํ๋๋ฐ, ๊ทน์ฌํ ์ฐ์ธ๊ฐ๊ณผ ํจ๊ป ์ง๋ก์ ๋ํด ์ฌ๊ฐํ๊ฒ ๊ณ ๋ฏผํ ์ ์๋ ์๊ฐ์ ๊ฐ์ก๋ค.
gdb๋ฅผ ์ข ๋ ๊น๊ฒ ์ดํดํ์ผ๋ฉด ๋๋ฒ๊น
์ด ๋ ์ฌ์์๊น ์ถ์ง๋ง, ๋์ ๋นํ์๋(์ง์ง ์์๋ค.) printf ์์์ ๋ฌด๋์ ธ ๋ด๋ ค๊ฐ๋ fail ์์ ๋ง์กฑํ๊ณ ๊ทธ๋ฅ ์งํํ๋ค.
์ด๋ฒ ์ฃผ์ฐจ์ ํํ ์ค ๋นก์นจ ํฌ์ธํธ๋ ์ดํด๋ฅผ ์กฐ๊ธ ํ๋ค์ถ์ผ๋ฉด, ๋ชจ์๋ ์ง์์ ๊น์ด๋ฅผ ์ธ์ ํ๊ณ ์ฑ
๊ณผ gitbook์ ํด๋ณด๊ฒ ๋๋ ๋ถ๋๋ฌ์ด ๋ด ์์ ์ ๋ณด๋ ๊ฒ๊ณผ ์ฝ๋๋ฅผ ์์ฑ ํ๊ณ ๋ ๋ค์ make check
ํ์ฌ ๋ถ๋ช
ํ pass๊ฐ ๋ฌ tc์์ ๋ฌด์ธ๊ฐ ์ฐธ์ ํ ์๋ผ ๊ฐ ๋์์ ๋๋ฅผ ๊ดด๋กญํ๋ ๊ฒ์ ์ง์ผ๋ณด๋ ์ผ์ธ๋ฐ, ๋๋์ง ๊ฒ์ ๋ง๋ฅ ํญ์ ๋ค๋ฅธ ํ์ด๋ฐ์ ๋ค๋ฅธ ๊ณต๊ฐ์์ ๊ฐ๋์ฉ ์ผ๊ตด์ ๋ด๋ฏผ๋ค.
๋๊ฐ ์ด๊ธฐ๋ ๋ณด์๋ ์์ผ๋ก ๋๋๋ฆฌ๋ ์์ญ๋ฒ์ make check
์์ pass๊ฐ ๋จ๊ธธ ๊ธฐ๋ค๋ฆฌ๊ณ ์์๋ฉด ํ์นญ์ฝ ์ฅ์ ์จ ๊ธฐ๋ถ์ ๋๋ ์ ์๊ฒ ํด์ค๋ค. ์ฐํ๋ addr๋ 0x18์ธ๋ฐ ์๋ง ๋๊ณ ๋ฏธ์น ๊ฒ ๊ฐ๋ค. ์ฃผ๋ณ์ ๋ง์ ๋์์ผ๋ก ๋์ ํ๋ฅ ๋ก tc๋ฅผ ํต๊ณผํ๊ณ ์์ง๋ง coccurrency๋ฅผ ์์ ํ ์ ๋ณตํ์ง ๋ชปํ๋ฉด ๊ณ์ ์ด ์ง๊ฒฝ์ผ ๊ฑด๋ฐ deadline์ด ์ง๋ ์ด ์์ ์ ํจ๋ฐฐ๊ฐ์ด ๋ฐ๋ ค์จ๋ค. ํจํดํ๋ค.
PROJECT3๋ VIRTUAL MEMORY๋ฅผ ์ฃผ์ ๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ๊ฒ ๋๋ค. ๋ง ๊ทธ๋๋ก ์ฐ๋ฆฌ๋ ํ๋ก๊ทธ๋จ ์์์ ๊ฐ์์ ์ฃผ์๋ฅผ ๊ฐ์ง๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น ๋ฐ์ ๋ฌผ๋ฆฌ์ ์ธ ํ๊ณ๋ฅผ ๋ฐ์ด๋์ ์ ์๋๋ก ํ๋ ํธ๋ฆญ์ ์์ฑํด OS, Kernel
์ด ํ๊ฒ ํด์ค๋ค.
์ด์ ์ฃผ์ฐจ๊น์ง์ ํํ ์ค๊ฐ Kernel space์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ๋ชจ๋ ์ผ์ ์ํํ๋ ๊ฒ์ Virtual Memory์ ๊ฐ๋
์ผ๋ก์์ ๋ณธ์ฐ์ ๋ชฉ์ ์ ๊ฐ์ง๋๋ก ๊ด๋ฆฌํ ์ ์๊ฒ๋์๋ค. ์ต๋ช
ํ์ด์ง์ ํ์ผ ํ์ด์ง ๋ฑ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํน์ง๊ณผ ์ผ์ ํฌ๊ธฐ๋ก ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌํ ์ ์๊ฒ ๋์๊ณ , ํ์์ ๋ฐ๋ผ ๊ฐ์๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ข ๋ ํ์ฅํ์ฌ
๋ง์ ์ ๋ณด๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ์ง๊ณ ํ์ฉํ ์ ์๋ค. ์ด๊ฒ์ด ํ์ํ ๊ฒ์ ์ญ์๋ ์๊ฐ
์ด๋ผ๋ ๊ฒ(๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๋๊ฑด ๊ธฐ๋ณธ์ด๊ณ )์ ๋จ์ถํ๊ธฐ ์ํจ์ธ๋ฐ ๊ฐ๋จํ๊ฒ ๋งํ์๋ฉด, ๋ฌผ๋ฆฌ์ ์ธ ์ฐ๊ฒฐ์ ์ต๋ํ ์ง์ํ๋ ค๊ณ ํ๋ ๋
ธ๋ ฅ์ ์ผํ์ด๋ผ๊ณ ํด์ํ๊ณ ์๋ค. ํ์์ ๋ฐ๋ผ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๋ณด๋ฅผ ์ ์ฌํจ(Swap In/Swap Out
)์ผ๋ก์ ์ด๋ฅผ ํด๊ฒฐํ๋ค.
์์ง๋ ๋๋ฒ๊น
์ ํ๊ณ ์์ง๋ง ๋ค์ ์ฃผ์ฐจ๊น์ง ํ์๋ค๊ณผ ์ต์ง ํ์ดํ
์ ํด๋ณด๋ ค๊ณ ํ๋ค.
๐[2์ฃผ์ฐจ]
USER PROGRAMMING์ ๊ฐ๋ฐํ๋ 2์ฃผ์ฐจ๋ฅผ ๋ง์ณค๋ค. /USERPROG/ ์์ ํ
์คํธ ์ผ์ด์ค๊ฐ 92๊ฐ๊ฐ ์๋๋ฐ ํน์ ์ผ์ด์ค๋ฅผ ์ํด ์์ ํ๋ ๊ณผ์ ์ ๊ฒช์ผ๋ฉด, ๋ง์๋๊ฒ ํ๋ฆฌ๊ณ , 3๊ฐ์ fail์ด ๋จ๋ ์ค ์์ ์ ํ๋ 23๊ฐ๊ฐ ํ๋ฆฌ๋ ๊ธฐ์ด ํ์์ ์์ฃผ ๊ฒฝํํ๋ค. ์ผ๋ง๋ ์ฝ๋๊ฐ ์ ๊ธฐ์ ์ผ๋ก ๋์๊ฐ๋์ง ์ง์ ๋๋ ์ ์์ด์ ์ ๊ธฐํ๋ฉด์๋ ๊ต์ฅํ ์คํธ๋ ์ค๋ฅผ ๋ฐ๊ฒ ๋์๋ค.
์ฌ์ค, ๋์ด์ผ๋ณด๋ ๋ถ๋ถ์ ์ธ ๋ฌธ์ ํด๊ฒฐ์ ํ์ฐ๋๋ผ ์ ์ฒด์ ์ธ ํ๋ฆ๊ณผ ๊ตฌ์กฐ์ ๋ํด์ ์์ธํ๊ฒ ๊ธฐ์ ํ ์ ๋๋ก ์ต์ํ์ง๋ ๋ชปํ๋ค. ๋น์ฐํ๊ฒ ์ง๋ง, ์ถ๊ฐ์ ์ผ๋ก ์ด์ ๋ํด ๋ ๊ฐ์ธ์ ์ผ๋ก ๊ณต๋ถํ๊ฑฐ๋, ์ด ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ์ง์์ ๊พธ์คํ ํ์ตํ๋ ๊ฒ์ด ์ด์ฉ๋ฉด ๋น์ฐํด ๋ณด์ธ๋ค.
์ด์
๋ธ๋ฆฌ์ด์ C์ธ์ด์ ๋ํ ์ดํด๊ฐ ๊น์ด์ง ์ ์์๋ ํ ์ฃผ์๋ค. ISA์ ๋ชจ๋ ์ ๋ณด?๋ ๋ฐ์ดํฐ ํ์
ํน์ ์ฃผ์ ํ์
์ผ๋ก ์ ์ฅ๋๊ณ ์๋ค๋ ์ฌ์ค์ ์์ง๊น์ง๋ ๊ต์ฅํ ์ถฉ๊ฒฉ์ ์ผ๋ก ๋ค๊ฐ์จ๋ค.
์ ๊ทธ๋ค์ด C์ธ์ด๋ฅผ ์ดํดํ๋ฉด ์ข์์ง์ ๋ํด ์คํํ๋์ง ์กฐ๊ธ ๊นจ๋ซ๊ฒ ๋์๋ค. ์๋ ์ด๊ฒ์ด๋ค. ์ด์
๋ธ๋ฆฌ์ C์ธ์ด๋ ๋ชจ๋ ์ ๋ณด?๋ ๋ฐ์ดํฐ ํ์
ํน์ ์ฃผ์ ํ์
์ผ๋กโ๋งโ ์ ์ฅ๋๊ณ ์๋ค๋ ์ฌ์ค (ISA์ ๋ํ ์ถ๊ฐ์ ์ธ ํ์ต์ด ํ์ํ ๊ฒ ๊ฐ๋ค.), ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํน์ ์ด์
๋ธ๋ฆฌ์ ๋งตํ๋๋ ์ธ์ด๋ก์(๊ธฐ๊ณ์ ๊ทผ์ ํ ์ธ์ด๋ก์)์ ์์์ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ด๋ค.
๋ชจ๋ ํ์๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ์ฃผ์ ํ์
๊ณผ ๊ฐ ํ์
์ผ๋ก ํด๊ฒฐํ ์ ์๋ค๋ ์ฌ์ค์ ๊ฒฝ์ธ๊ฐ์ ๋๋๋ค.
๐[1์ฃผ์ฐจ]
๋คํํ๋ 1์ฃผ ์ฐจ๋ ์ข์ ๊ฐ์ด๋๋ผ์ธ์ด ์์ด ์๊ฐ ์์ ๋ฌธ์ ๋ฅผ ์ ํด๊ฒฐ ํ ๊ฒ ๊ฐ๋ค.
์ธํฐ๋ฝํธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๋๋, ํฌ์ธํฐ๋ค์ ์ฃผ์ ๊ฐ์ด NULL์ด ์๋์ง ์ฒดํฌ๋ฅผ ๊ผญ ํ์.
๋คํธ์ํฌ ์คํฐ๋, ์๊ณ ๋ฆฌ์ฆ ์คํฐ๋๋ฅผ ๋ณํํ๊ณ ์์ด ์๊ฐ ์กฐ์จํ๋ ๊ณผ์ ์์ ๋ง์ ์ ์ ์ , ์ฒด๋ ฅ์ ์๋ชจ๊ฐ ์์๋ค. 1์ฃผ์ฐจ์์ ์ด๋ฐ ๊ฐ์ ์ ๋๊ปด ์กฐ๊ธ ๋ถ์ํ๋ค๊ณ ์๊ฐํ๋ ์ค์ด๋ค.
ํ๋ก ํธ์๋ ์คํฐ๋๋ ์์ํด์ผํ๋๋ฐ ์คํฐ๋๋ฅผ ์กฐ๊ธ ์ค์ฌ์ผ ํ๋๊ฐ ์๊ฐ์ ํ๊ฒ ๋๋ค.
๊ตฐ๋์์ ํ๊ตฐํ๋ ๋๊ฐ ์๊ฐ๋๋ค. ๊น๊นํ ๋๋ก๋ฅผ ์ ์ฒ์์ด ๊ฑท๋ค๊ฐ๋ณด๋ฉด ๊ฒฐ๊ตญ ๋์ฐฉ์ง์ ๋๋ฌํ ๊ฒ๋ง ๊ฐ๋ค. ์ง๊ธ ๋ด ๋ชจ์ต์ด๋ค ์๋ฒฝ 3์โฆ ๋ฐฐ๊ณ ํ๊ณ ์กธ๋ฆฌ๋ค.
2๋ฌ ๋ค์ ๋๋ ์ง์ ์ณ๋ณด๋ฆฌ๋ผโฆ. ssxbxl done
์ด ํฌ์คํธ๋ PintOS๋ฅผ ๊ฐ๋ฐํ๋ฉฐ ๋ฐฐ์ด ๋ด์ฉ์ ์ ๋ฆฌํ๋ ๊ณต๊ฐ์ด ๋ ๊ฒ ๊ฐ๋ค.
์ ๊ธ์์์ ํ๋ 2๋ฌ์ฌ ๊ฐ์ ์๊ฐ ๋์ ์๋ฃ๊ตฌ์กฐ, ์๊ณ ๋ฆฌ์ฆ, Malloc Lab , Tiny Web Server ํ๋ก์ ํธ๋ฅผ ๋ง์ณค๋ค. ์ด์ด์ ์ฐ๋ฆฌ๋ 2๋ฌ์ฌ ๊ฐ Kaist์ ์ค์ ํ๋ถ ๊ณผ์ ์ ์๋ PintOS ๊ฐ๋ฐ์ ๋์
ํ๋ค. ๐ฏ
์๊ฐ์ด๋ ์ฑํฐ ๋จ์๋ก ์งํํ๊ณ ๊ทธ ๋๋ง๋ค ํฌ์คํ
์ ํ๊ฒ ๋ ๊ฒ๊ฐ๊ตฌ, ๋ด์ฉ์ด ๋ชจ๋ ๊ฒ์ ํฌํจํ๋ค๊ณ ๋ณด์ฅํ์ง๋ ๋ชปํ ๊ฒ ๊ฐ๋ค..
์ฐ๋ฆฌ๋ 3๋ช
์ด ํ ์กฐ๊ฐ ๋์ด ํ๋ก์ ํธ๋ฅผ ์งํํ๊ฒ ๋๋๋ฐ ์ผ๋ฐ์ ์ผ๋ก,
๋งค ์ฃผ ํ๋์ PROJECT๋ฅผ ์งํํ๊ฒ ๋๋ฉฐ, ์ด์ ๊ด๋ จ๋ ๋ด์ฉ์ ํฌ์คํ
ํ ๊ฒ์ด๋ค. ๋ด๊ฐ ์์ ํ ์ดํดํ๊ณ ๊ผญ ์ง๊ณ ๋์ด๊ฐ๊ณ ์ถ์ ํฌ์ธํธ๋ง ์ ์ด๋ณด๋ จ๋ค.
๐ PROJECT1 : THREADS
๐ PROJECT2 : USER PROGRAMMING
๐ PROJECT3 : VIRTUAL MEMORY
๐ PROJECT4 : FILE SYSTEM