vm_try_handle_fault
ํ์ด์ง ์ค๋ฅ๊ฐ ์คํ ์ฆ๊ฐ์ ์ ํจํ ๊ฒฝ์ฐ์ธ์ง ์ฌ๋ถ๋ฅผ ํ์ธ
ํ ๋นํด์ค ์ ์ ์คํ์ ๋งจ ๋ฐ ์ฃผ์๊ฐ๋ณด๋ค ๋ ์๋ ์ ๊ทผํ๋ฉด page fault๊ฐ ๋ฐ์ํ๋๋ฐ ์ด page fault๊ฐ stack growth์ ๊ด๋ จ๋ ๊ฒ์ธ์ง ๋จผ์ ํ์ธํ๋ ๊ณผ์ ์ด ํ์ํ๋ค. ๋ง์ฝ ๋ง๋ค๋ฉด vm_stack_growth()๋ฅผ ํธ์ถํด์ ์คํ์ ์ถ๊ฐ ํ์ด์ง๋ฅผ ํ ๋นํด์ ์คํ์ ํฌ๊ธฐ๋ฅผ ๋๋ฆฐ๋ค.
์ด๋ ์ ์ํด์ผ ํ ์
์ ์ ์คํ ํฌ์ธํฐ๋ฅผ ์ด๋ป๊ฒ ๊ฐ์ ธ์ฌ ๊ฒ์ธ๊ฐ?
-> ์ธํฐ๋ฝํธ ํ๋ ์์ rsp ๋ฉค๋ฒ๊ฐ ์ปค๋ ์คํ์ ๊ฐ๋ฆฌํค๊ณ ์๋ค๋ฉด ์ฆ, ์ปค๋ ํ๋ก์ธ์ค์์ page fault๊ฐ ๋ฌ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค. ํ์ง๋ง ์ ์ ์คํ์ ํค์ฐ๋ ๊ฒ์ด ๋ชฉํ ์ด๋ฏ๋ก ์ ์ -> ์ปค๋๋ก transition์ด ์ผ์ด๋ ๋ thread ๊ตฌ์กฐ์ฒด ๋ด rsp ๋ฉค๋จธ๋ก ์ ์ฅํ๋ ๋ฐฉ์์ ์ด์ฉํด rsp ๊ฐ์ ๊ฐ์ ธ์จ๋ค.
falut๊ฐ ๋ฐ์ํ ์ฃผ์๊ฐ ์ ์ ์คํ ๋ด์ ์๋๊ฐ?
๊น๋ถ์ ์ ์ฌ์๋ ๋ง์ด๋ค.
์ ์ ํ๋ก๊ทธ๋จ์ ์ด ํ๋ก๊ทธ๋จ์ด ์คํ ํฌ์ธํฐ ์๋ ์์ญ์ ์คํ์ write๋ฅผ ํ ๋ ๋ฒ๊ทธ๊ฐ ์๊ธด๋ค. x86-64์์ push ๋ช ๋ น์ด๋ ์คํ ํฌ์ธํฐ ์์น๋ฅผ ์กฐ์ ํ๊ธฐ ์ ์ ์ ๊ทผ ๊ถํ์ ์ฒดํฌํ๋๋ฐ, ์ด๋ ์คํ ํฌ์ธํฐ ์๋ 8 ๋ฐ์ดํธ ์์น์์ page fault๋ฅผ ์ผ์ผํจ๋ค.
๐ก (1<<20)์ด 2์ 20์น์ ๋ํ๋ด๊ณ ์ด๋ ๊ณง ์คํ์ ํฌ๊ธฐ์ธ 1MB๋ฅผ ๋ํ๋ธ๋ค.
vm_stack_growth
์ถ๊ฐ ์ฃผ์๊ฐ ๋ ์ด์ ๊ฒฐํจ์ด ์๋ ์ฃผ์๊ฐ ๋์ง ์๋๋ก ํ๋ ์ด์์ ์ต๋ช ํ์ด์ง๋ฅผ ํ ๋นํ์ฌ ์คํ ํฌ๊ธฐ๋ฅผ ๋๋ฆผ
๐ค stack growth๋ฅผ ๊ตฌํํ ๋ lock์ ์ฌ์ฉํ๋ ์ด์ ?
stack growth๋ ์ ์ ์คํ์์ ๋ฐ์ํ๋๋ฐ ์ ์ ์คํ์ ๊ฐ ์ค๋ ๋์ ์๋ค. ๋ฐ๋ผ์ ์ฌ๋ฌ ์ฐ๋ ๋๊ฐ ๋์์ ์คํ์ ์กฐ์ํ๋ฉด ์ถฉ๋์ด ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ค์์ chat gpt์์ ๋ฐ์ ๋ต๋ณ์ด๋ค.
Pintos์์ ์คํ ์ฑ์ฅ(stack growth)์ ๊ตฌํํ ๋ lock์ ์ฌ์ฉํ๋ ์ด์ ๋ ๋์์ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ์คํ์ ์กฐ์ํ ๋ ๋ฐ์ํ ์ ์๋ ๊ฒฝ์ ์ํ(race condition)๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด์์ ๋๋ค.
์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์คํ์ ์กฐ์ํ๋ฉด, ์คํ์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๊ฑฐ๋ ์คํ์ ์๋ก์ด ํ์ด์ง๋ฅผ ํ ๋นํ๋ ๊ณผ์ ์์ ์ถฉ๋์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ ๊ฐ์ ์ค๋ ๋๊ฐ ๋์์ ์คํ์ ํ์ฅํ๋ ค๊ณ ํ ๋, ํ ์ค๋ ๋๊ฐ ์คํ์ ํ์ฅํ๊ธฐ ์ ์ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ์ด๋ฏธ ์คํ์ ํ์ฅํ ๊ฒฝ์ฐ, ๋ฉ๋ชจ๋ฆฌ ์ถฉ๋์ด ๋ฐ์ํ๊ณ ์๊ธฐ์น ์์ ๋์์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์, ์คํ์ ์ฑ์ฅ ๊ณผ์ ์์ ๊ฒฝ์ ์ํ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด lock์ ์ฌ์ฉํ์ฌ ์คํ ์กฐ์์ ๋๊ธฐํํฉ๋๋ค. lock์ ์ฌ์ฉํ๋ฉด ํ ์ค๋ ๋๊ฐ ์คํ ์กฐ์์ ์๋ฃํ๊ธฐ ์ ์ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ํด๋น ์์ ์ ์์ํ ์ ์์ผ๋ฏ๋ก, ์คํ ์กฐ์์ด ์ํํ๊ฒ ์ด๋ฃจ์ด์ง๋๋ค. ์ด๋ฅผ ํตํด ์คํ ๊ด๋ จ ๋ฌธ์ ์ ์๊ธฐ์น ์์ ๋์์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
๋๋จธ์ง ์ค๋ฅ ๋ฌ๋ ์ํฉ ์ ๋ฆฌ๋ ๊นํ๋ธ ์ด์์ ์ ๋ฆฌํ์์.
blueclub-pintos2_team1