๐คซ์ต๋ช ์ฑ ๋ณด์ฅ์ ์ํด ํ์ 1,2,3์ผ๋ก ํ๊ธฐํ์ต๋๋ค.
๐๏ธ์ ๋ ํ์3์ ๋๋ค.
cow
) ์ ์ธ passํ์ 1: ์ด๋ฐ์ ์์ ์๋ ์ค๋ฅ๋ก ์ธํ์ฌ ์๊ฐ์ ๋ง์ด ํ๋นํ๋ค. argument passing ๊ด๋ จํ ๋ถ๋ถ์ด๋ผ๊ณ ์ด๋ ดํ์ด ์๊ฐํ๊ณ ๋๋ฒ๊น ์ ์งํํ์๋ค.
ํ์ 2: ๊ตฌํ ์ค ๋ชจ๋ test case์ ๋ํ์ฌ Kernel Panic์ผ๋ก Kill ๋ฐ์. ๋ชจ๋ case์์ kill ๋ฐ์ํ์ฌ syscall์ด๋ process/thread ์์ฑ ๋ฐ ํด์ ๋ถ๋ถ์์ ๋ฌธ์ ๊ฐ ์์๊ฒ์ด๋ผ ์๊ฐ.
์์๋๋ก argument passing์ ํ์ํ argument_stack ํจ์์ ์ธ์ ์ ๋ฌ์ ๋ฌธ์ ๊ฐ ์์์. ์ฝ๋๋ฅผ ์์ ํ๋ ํต๊ณผ!
project2์์ ๋ง์ง๋ง์ oom ํด๊ฒฐ์ ์ํด
palloc_get_multiple, palloc_get_page, palloc_free_page, palloc_free_multiple ์ ํผ์ฌํด์ ์ฌ์ฉ
โ palloc_get_page - palloc_free_page ์์ผ๋ก ํต์ผ.
์์ธ ๋ถ์ : ํํ ์ค ํ๋ก์ ํธ์์ pythonํ์ผ๋ค์ 'util์ ์๋ pintos์ backtrace' ๋ฐ์ ์์. โก๏ธ"/usr/bin/env: 'python3\r': ๊ทธ๋ฐ ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๊ฐ ์์ต๋๋ค" ์๋ฌ ๋ฉ์ธ์ง โก๏ธ ๊ตฌ๊ธ๋ง ๊ฒฐ๊ณผ
์์ธ : ์๋์ฐ ํ๊ฒฝ์ line ending(CR(\r)+LF(\n)
)์คํ์ผ๋ก ์์ฑ ์ ์ฅํ๋ ๊ฒ๊ณผ ๋ฆฌ๋
์ค์ธ ์ฐ๋ถํฌ ํ๊ฒฝ์์ line ending(LF(\n)
)ํด์ฃผ๋ ์คํ์ผ์ด ๋ค๋ฆ โก๏ธ ์๋์ฐ์์ ํ์ผ ์ฌ๋ ค์ CR(\r)
์ด ์๊ฒจ๋ฒ๋ฆผ
๐ ๏ธํด๊ฒฐ ๋ฐฉ์ : dos2unix tool
์ ์ฌ์ฉํด์ ์๋์ฐ/DOS ์คํ์ผ์ ์ค ๋ฐ๊ฟ์ ๋ฆฌ๋
์ค ์คํ์ผ๋ก ๋ณํํ์ฌ ์ ์ฅ
$ sudo apt install dos2unix
$ dos2unix pintos # pintos.py ํ์ผ์ ๋ฆฌ๋
์ค ์คํ์ผ๋ก ๋ณํ
$ dos2unix backtrace # backtrace.py ํ์ผ์ ๋ฆฌ๋
์ค ์คํ์ผ๋ก ๋ณํ
ํ์ 1๋ : Lazy loading์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ค์ ๋ก ํ์ํ ์์ ์ ๊น์ง ๋ฉ๋ชจ๋ฆฌ ๋ก๋๋ฅผ ๋ฏธ๋ฃจ๋ ๊ฒ์ด๋ค. page fault๊ฐ ๋ฐ์ํ๋๋ฐ, ํด๋น ๊ฐ์์ฃผ์๊ฐ ํ ๋น๋์ด์๋ ๊ฒฝ์ฐ ๊ทธ์ ์์ผ load๋ฅผ ํ๊ฒ ๋๋ค. ํ์ ์ค๋ ๋๋ค์ด ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ค์ ์ฌ์ฉ์๊ฐ ํ์๋ก ํ๋ ์๊ฐ์๋ง ๋ฐ์ดํฐ๊ฐ ๋ฌผ๋ฆฌ ๊ณต๊ฐ์ ์กด์ฌํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ Lazy loading์ ํตํ์ฌ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ์ ์ฆ๊ฐ์ํค๊ณ ์ด๊ธฐ ๋ถํ ์๊ฐ์ ๋จ์ถ์์ผ ์ฑ๋ฅ ํฅ์์ ๊ธฐ๋ํ ์ ์๋ค.
ํ์ 1๋ : ์๊ฐ์ด ์ ๋ง ๋ถ์กฑํ๋ค๋ ๊ฒ์ ์ค๊ฐํ๋ค. ์ด๋ฒ ํํธ์ 2์ฃผ๊ฐ ์ฃผ์ด์ง ์ด์ ๋ฅผ ๋ผ์ ๋ฆฌ๊ฒ ๋๊ผ๋ค.
ํ์ 2๋ : ๋จธ๋ฆฌ์์ ์ด๊ฒ์ ๊ฒ ์ง์ด๋ฃ๊ณ , ์ฝ๋๋ ์ ์ ์์ด ์์ฑ์ ํ๋๋ฐโฆ ์ ๋ฆฌ๊ฐ ์ ์๋ ๋๋์ด๋ค. ๊น๋จน๊ธฐ ์ ์ ๋ค์ ์ ๋ฆฌ๋ฅผ ํด์ผ๊ฒ ๋ค. (+a ์ถํ ๋ณต์ต์ ์ํด์๋ผ๋)
ํ์ 3๋ : ๋ง์ง๋ง๊น์ง ๋ฌ๋ฆฌ๊ฒ ์ต๋๋ค. ์๋ฃ๊ฐ ์ด ์ ๋ ๋ฐ์ ์์ด? ์ถ์ด๋ ๊ณ์ ๋ญ๊ฐ ์ฐพ๊ณ ์๋ ๋๋ฅผ ๋ฐ๊ฒฌ