๐คซ์ต๋ช ์ฑ ๋ณด์ฅ์ ์ํด ํ์ 1,2,3์ผ๋ก ํ๊ธฐํ์ต๋๋ค.
๐๏ธ์ ๋ ํ์3์ ๋๋ค.
๋ ์ง | ํ์ 1 | ํ์ 2 | ํ์ 3 |
---|---|---|---|
2023.06.12 | ํ ๋ฆฌํฌ์งํ ๋ฆฌ ์์ฑ ๋ฐ Git book ๋ฒ์ญ ๋ฐ ๊ณต๋ถ | PJT2 ootm ํด๊ฒฐ | project2 ๋๋ฒ๊น (syn-read) |
2023.06.13 | 1์ฃผ์ฐจ ๊ฐ๋ ์ฌ์ ๋ฆฌ | PJT2 ๊ฐ๋ ๋ฐ ์ฝ๋ ์ฌ์ ๋ฆฌ | Git book ์ฝ๊ธฐ ๋ฐ ํฉ์น ์ฝ๋ ๋ถ์ |
2023.06.14 | 1์ฃผ์ฐจ ์ฝ๋ ๋ค๋ฌ๊ธฐ ๋ฐ 2์ฃผ์ฐจ ๊ฐ๋ ์ ๋ฆฌ | ๊ถ์์ง ๊ต์๋ OS๊ฐ์ ๋ณต์ต (with CSAPP) | Git book ์ฝ๊ธฐ |
2023.06.15 | 2์ฃผ์ฐจ ๊ฐ๋ ์ ๋ฆฌ ๋ฐ 2์ฃผ์ฐจ ์ฝ๋ ๋ค๋ฌ๊ธฐ | Git book ํ์ต | Git book ์ฝ์ผ๋ฉด์ |
2023.06.16 | 2์ฃผ์ฐจ ์ฝ๋ ๋ค๋ฌ๊ธฐ | Git book ํ์ต | Memory Management ๊ตฌํ ์์ |
2023.06.17 | Git book ๋ฒ์ญ ๋ฐ ๊ณต๋ถ | ๊ตฌํ | Memory Management ๊ตฌํ & ๋๋ฒ๊น |
2023.06.18 | Git book ๋ฒ์ญ ๋ฐ ๊ณต๋ถ | ๊ตฌํ | Anonymous Page ๊ตฌํ ์ค & ๋๋ฒ๊น |
OS๋ Application์ด HW๋ฅผ ๊ฐํธํ๊ฒ ์ธ ์ ์๋๋ก โ์ถ์ํโ ํด์ค
โ ์ถ์ํ๋ฅผ ์ํด ๊ทธ๋ฆฌ๊ณ ํ์ ๋ HW ๋ฆฌ์์ค๋ฅผ ํจ์จ์ ์ผ๋ก ์ฐ๊ธฐ์ํด OS๋ 2๊ฐ์ง ๊ฐ์
ํ
โ 1. CPU์ ๊ฐ์ํ 2. ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ํ
(1์ฃผ์ฐจ์์ ์ค์ผ์ค๋ง ํตํด CPU ๊ฐ์ํ ๊ตฌํํ์๊ณ , ์ด๋ฒ์ฃผ์ฐจ์์ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ํ ๊ตฌ
ํ)
๊ธฐ์กด PintOS๋ก๋ โ1. CPU ๊ฐ์ํโ๋ฅผ ๊ตฌํํ์๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ๊ฐ์ ํ๋ก๊ทธ๋จ์ ๋์์
๊ตฌํ ํ ์ ์์ง๋ง ํ๋ก๊ทธ๋จ์ ํฌ๊ธฐ์ ๊ฐฏ์๊ฐ ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋งํผ ํ์ ๋์ด ์์
โ ์ด๋ฅผ โ2. ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ํโ๋ฅผ ํตํด ๋ ๋ง๊ณ ํฌ๊ธฐ๊ฐ ํฐ ํ๋ก๊ทธ๋จ์ ๋๋ฆด ์ ์๋๋ก ํจ
Mapping ๊ธฐ๋ฒ์๋ Paging, Segmentation, Segmented paging : Mechanism
โ MMU (CPU๋ด์ H/W)๊ฐ ์์ ๊ธฐ๋ฒ๋ค์ ์ฌ์ฉํด์ ๊ฐ์๋ฉ๋ชจ๋ฆฌ โ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ๋งค
ํ
โ MMU๊ฐ ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๊ฐ๊ฐ ํ๋ก์ธ์ค์ ํ์ด์งํ ์ด๋ธ์ ์ฐธ์กฐํ์ฌ ๋งคํ
Mapping ์ ๋ณด(ํ์ด์ง ํ ์ด๋ธ)๋ OS๊ฐ ๋ง๋ค์ด์ค : Policy
โ CPU์์ Virtual Address๋ฅผ ๋ณด๋ด๋ฉด MMU์์ ๋งคํ.
โ Physical Address๊ฐ ์์ผ๋ฉด page fault (exception) ๋ฐ์
โ OS๊ฐ page fault handler๋ก ์ฒ๋ฆฌํจ (ํ์ด์ง ๊ต์ฒด/ํ ๋น/๋ณดํธ)
๐To-Do
- supplemental Page Table ๊ตฌํํ๊ธฐ
- physical frame management ๊ตฌํํ๊ธฐ
- page fault handler ์์ ํ๊ธฐ (lazy loading)
- stack growth, file-mapped(mmap,munmap), annonymous
- mmap, munmap
- swap in/out
[๐ชฒ๋๋ฒ๊น ๊ด๋ จ]ํค๋ ํ์ผ ์ถ๊ฐ๋ฅผ ์ํด์ค์ผํจ.
- ๋ฒ๊ทธ์ ์์ธ์ด ๋ ์ ์์.
- ex. ๊ฐ์๊ธฐ
tid_t
undefined๊ฐ ๋ธ..include๋ฅผ ์๋ชปํด์ ๊ทธ๋ผ๊ฐ๋จํ ์ฉ์ด ์ ๋ฆฌ
1. Page
- ๊ฐ์ํ์ด์ง(aka page)๋ 4096๋ฐ์ดํธ ๊ฐ์๋ฉ๋ชจ๋ฆฌ์ ์ฐ์๋ ๊ณต๊ฐ์ด๋ค.
- ํ์ด์ง๋ ๋ฐ๋์
page-aligned
๋๋๋ก ํด์ผํจ.- ํ์ด์ง ์ฌ์ด์ฆ(4096๋ฐ์ดํธ)๋ก ๋๋์ด์ง๋ ๊ฐ์ ์ฃผ์๋ก ์์ํด์ผํจ (๐คwhy?physical address์ ๋งคํํ๊ธฐ ์ํด! page-alignํ์ง ์์ผ๋ฉด ํด๋น va์ memory accessํ๋๋ฐ ์ง์ฅ์์ ์ ์์. ๋ฐ๋๋ก page-aligned๋์ง ์๋ ๊ฒฝ์ฐ, data๊ฐ cache์ ์ ํํ load๋๋๋ก ์ถ๊ฐ ์ฐ์ฐ์ ํด์ผํ ์๋ ์์ด์ memory access ์๊ฐ์ ์ฆ๊ฐ์ํค๊ณ performance ์ ํ ๊ฐ๋ฅ)
- 64bit ๊ฐ์ ์ฃผ์์ ๋ง์ง๋ง 12๋นํธ๋ page offset์.
- ์์ ๋นํธ(?)๋ค์ ํ์ด์ง ํ ์ด๋ธ์ ์ธ๋ฑ์ค๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ์ฌ์ฉ
- 64bit ์์คํ ์์๋ 4๋จ๊ณ ํ์ด์ง ํ ์ด๋ธ ๋ฐฉ์ ์ฌ์ฉ
- ๊ฐ์ ์ฃผ์ ๊ตฌ์กฐ
- ๊ฐ ํ๋ก์ธ์ค๋ ๋ ๋ฆฝ์ ์ธ user ๊ฐ์ ํ์ด์ง๋ค์ ์งํฉ์ ๊ฐ์ง
- ํด๋น ํ์ด์ง๋ค์ KERN_BASE
(0x8004000000)
๋ฏธ๋ง์ ๊ฐ์ ์ฃผ์๋ฅผ ๊ฐ์ง- Kernel ๊ฐ์ํ์ด์ง๋ ์ ์ญ์ ์ด๊ธฐ ๋๋ฌธ์ ์ด๋ ์ค๋ ๋๋ ํ๋ก์ธ์ค๊ฐ ์คํ์ค์ด๋ ๋์ผํ ์์น์ ์์
- ์ปค๋์ userpage & kernel page์ ๋ชจ๋ ์ ๊ทผ ๊ฐ๋ฅ but user process๋ ์์ ์ userpage์๋ง ์ ๊ทผ๊ฐ๋ฅ
2. Frames
- Frame (aka. physical frame, page frame)์ 4096๋ฐ์ดํธ ํฌ๊ธฐ์ page-aligned๋ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฐ์์ ์ธ ๊ณต๊ฐ
- 64bit ๋ฌผ๋ฆฌ ์ฃผ์๋
frame number + frame offset
์ผ๋ก ๊ตฌ์ฑ๋จ
- ๐ โโ๏ธx86-64 ์์คํ ์ ๋ฌผ๋ฆฌ์ฃผ์์ ์ง์ ์ ๊ทผ ๋ถ๊ฐ
- ๐โโ๏ธPintos๋ kernel vm์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ก ์ง์ ๋งคํํ๋ ๋ฐฉ๋ฒ์ ํตํด ํด๊ฒฐ
- kernel vm์ ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ์ 1:1 ๋งคํ ๋์ด ์์
- kernel vm์ ํตํด frame ์ ๊ทผ ๊ฐ๋ฅ
- ์์
- virtual address > KERN_BASE == physical address 0
- virtual address KERN_BASE + 0x1234 == physical address 0x1234
- ํํ ์ค์๋ ์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ ํจ์๋ค๋
์น์ ํ๊ฒ์ ๊ณตํด์ค๋ค.// 0 ~ ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์ ๋ฐ์ดํธ ์ค kernel va ์ ๋์ํ๋ pa ๋ฐํ #define ptov(paddr) { /* Omit details */ } //va์ ๋์ํ๋ ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ(์ด๋ฉด์ kernel va) ๋ฐํ #define vtop(vaddr) { /* Omit details */ }
3. Page Tables
- CPU๊ฐ va๋ฅผ ๋ฌผ๋ฆฌ์ฃผ์๋ก ๋ณํํ๋๋ฐ ์ฌ์ฉํ๋
์๋ฃ๊ตฌ์กฐ
- page โก๏ธ frame
4. Swap Slots
- swap partition ๋ด์ ๋์คํฌ ๊ณต๊ฐ์ ์๋ ํ์ด์ง ํฌ๊ธฐ์ ์์ญ
- ํ์ฌ running ์ค์ธ process๊ฐ ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ ํ์ด์ง๋ค์ ์ ์ฅํ ๋ฐ๋ก ์ง์ ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ.
- process๊ฐ ํ์ฌ memory์ ์๋ ํ์ด์ง์ ์ ๊ทผํ๋ ค๊ณ ํ ๋ OS๊ฐ swap file์์ main memory๋ก file์ ์ด๋ ์ํจ ํ, process์ va๋ก ํ์ด์ง๋ฅผ ๋งคํํด์ค
- OS๊ฐ ๋ ํจ์จ์ ์ผ๋ก ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํจ.
- ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ swapfile ๊ฐ์ page๋ค์ ์ด๋์์ผ์ฃผ๋ฉด์ running ์ค์ธ process์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ ์ฅํ ๋ถ๋ด์ ์ค์ (๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉโฌ๏ธ)