Anonymous Page - sihyun10/pintos-lab-vm GitHub Wiki

νŽ˜μ΄μ§€λŠ” 크게 두 λΆ„λ₯˜λ‘œ λ‚˜λ‰œλ‹€.

  1. 읡λͺ… νŽ˜μ΄μ§€(Anonymous Page) : νŒŒμΌλ‘œλΆ€ν„° λ§€ν•‘λ˜μ§€ μ•Šμ€, μ»€λ„λ‘œλΆ€ν„° ν• λ‹Ήλœ (일반적인 λ©”λͺ¨λ¦¬) νŽ˜μ΄μ§€
  2. 파일-기반 νŽ˜μ΄μ§€(File-backed Page) : νŒŒμΌλ‘œλΆ€ν„° λ§€ν•‘λœ νŽ˜μ΄μ§€

Anonymous Page

읡λͺ… νŽ˜μ΄μ§€λŠ” νž™μ„ κ±°μΉ˜μ§€ μ•Šκ³  할당받은 λ©”λͺ¨λ¦¬ 곡간이닀.
νŒŒμΌμ— κΈ°λ°˜ν•˜κ³  μžˆμ§€ μ•Šμ€ νŽ˜μ΄μ§€μ—¬μ„œ 0으둜 μ΄ˆκΈ°ν™” λ˜μ–΄μžˆλ‹€.

νž™λ„ anonymous page이닀.
malloc, new같은 λ©”λͺ¨λ¦¬ ν• λ‹ΉμžλŠ” anonymous pageμ—μ„œ 일뢀 λ©”λͺ¨λ¦¬λ₯Ό μž˜λΌμ„œ ν• λ‹Ή λ°›λŠ”λ‹€.

ν”„λ‘œμ„ΈμŠ€κ°€ mmap()으둜 μ»€λ„μ—κ²Œ 읡λͺ… νŽ˜μ΄μ§€λ₯Ό ν• λ‹Ή μš”μ²­ν•˜κ²Œ 되면, 컀널은 ν”„λ‘œμ„ΈμŠ€μ—κ²Œ 가상 λ©”λͺ¨λ¦¬ μ£Όμ†Œ 곡간을 λΆ€μ—¬ν–κ²Œ λœλ‹€.
λΆ€μ—¬λœ 가상 λ©”λͺ¨λ¦¬ 곡간은 μ•„μ§κΉŒμ§€λŠ” μ‹€μ œ 물리 λ©”λͺ¨λ¦¬ νŽ˜μ΄μ§€λ‘œ ν• λ‹Ήλ˜μ§€ μ•Šμ€ 곡간이닀.
μ‹€μ œ loading은 μ‚¬μš©μž ν”„λ‘œμ„ΈμŠ€μ—μ„œ ν•΄λ‹Ή λ©”λͺ¨λ¦¬μ— 접근을 μ‹œλ„ν•  λ•Œκ°€ λ˜μ–΄μ„œμ•Ό 이뀄진닀.
이λ₯Ό lazy loading이라고 ν•œλ‹€.


Lazy Loading을 μ΄μš©ν•œ νŽ˜μ΄μ§€ μ΄ˆκΈ°ν™”

  • λ©”λͺ¨λ¦¬ λ‘œλ”©μ„ ν•„μš”ν•œ μ‹œμ κΉŒμ§€ λ―Έλ£Έ
  • νŽ˜μ΄μ§€λ₯Ό ν• λ‹Ήν•  λ•Œ ν•΄λ‹Ή νŽ˜μ΄μ§€μ— λŒ€μ‘ν•˜λŠ” page ꡬ쑰체만 λ§Œλ“€κ³ , 물리 frame ν• λ‹Ήν•˜μ§€ μ•Šκ³ , μ‹€μ œ λ‚΄μš©λ„ μ—†κ²Œλ” κ΅¬ν˜„
  • μ‹€μ œλ‘œ λ‚΄μš©μ΄ load λ˜λŠ” μ‹œμ μ€ page faultκ°€ λ°œμƒν–ˆμ„ λ•Œ!

Lazy Loading을 μ‚¬μš©ν•˜λ©΄ ν”„λ‘œμ„ΈμŠ€κ°€ ν•„μš”ν•œ νŽ˜μ΄μ§€λ₯Ό ν•„μš”ν•œ μ‹œμ μ— λ‘œλ“œν•  수 있고,
λΆˆν•„μš”ν•œ λ©”λͺ¨λ¦¬ μ‚¬μš©μ„ 쀄일 수 μžˆλ‹€.