OS - Memory Management (2) [Paging]
๐ฉโ๐ป OS - Memory Management (2) [Paging]
3๏ธโฃ NonContiguous Memory Allocation - Paging, Segment
์์ ๋ดค๋ Contiguous Allocation์ ์ธ๋ถ ๋จํธํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก NonContiguous Memory Allocation ๋ฐฉ๋ฒ๋ค์ด ์์ต๋๋ค.
๊ทธ ์ค Paging๊ณผ Segment๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค.
Paging
- Paging ์ NonContiguous Allocation ๋ฐฉ์์ด๋ค.
- ๊ณ ์ ๋ ํฌ๊ธฐ๋ก ๋ฉ๋ชจ๋ฆฌ๋ Frame, ํ๋ก์ธ์ค๋ Page๋ก ๋ถํ ํ์ฌ ๊ด๋ฆฌํ๋ค.
- ํ ํ๋ก์์ค๋ ์ฌ๋ฌ Page๋ก ๋๋๊ณ main memory์์ ํ์ํ page๋ฅผ ์์ ๊ด๊ณ์์ด Frame์ mappingํด์ค๋ค.
๊ทธ๋ฆผ์ผ๋ก ํ์ธํด๋ณด์
Paging ์ฅ์ & ๋จ์
์ฅ์
- Physical memory๋ฅผ frame ๋จ์๋ก ๋ถํ ํด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ External Fragment ๋ฐ์ํ ์ผ์ด ์๋ค.
- ํ ๋น/ํด์ ๊ฐ ๋น ๋ฅด๋ค
- Shared Page๋ฅผ ํตํด ์์์ ์ฝ๊ฒ ๊ณต์ ํ ์ ์๋ค ( pure code ๋ผ๋ฉด ์ฝ๊ฒ ๊ฐ๋ฅ, swap out ์ ๋ณ๊ฒฝ๋๋ฉด ์ด๋ฅผ ๊ณ ๋ คํ๊ณ swap outํด์ผํจ )
๋จ์
- ๊ฒฐ๊ตญ process์ page ์์ฒด๊ฐ internal fragment ๋ฐ์ํ๋ค๋ฉด ์ฌ์ ํ ๋ฉ๋ชจ๋ฆฌ์ frame๋ internal fragment๋ฐ์ํ๋ค.
- Page Table ์ ์ ์ฅํ๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ถ๊ฐ๋ก ํ์ํ๋ค
- Page Table ์ ๊ทผ + ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ = ์ด ๋ ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ผ๋ก Overhead ๋ฐ์ํ๋ค.
โก์ฃผ์
- Internal Fragment ์์ ๋ ค๋ฉด ์ด๋ป๊ฒ ํ๋ฉด ๋ ๊น??
- Page ํฌ๊ธฐ๋ฅผ ์๊ฒ ํ๋ค๋ฉด Internal Fragment๋ฅผ ์ค์ผ ์ ์์ ๊ฒ์ด๋ค.
- ๐ฅ ํ์ง๋ง, ์คํ๋ ค Page Table์ด ์ปค์ ธ์ OverHead๊ฐ ๋ ์ปค์ง๋ค
- ์ผ๋ฐ์ ์ผ๋ก Page ํฌ๊ธฐ๋ 4KB ~ 8KB ๊ฐ ์ ๋นํ๋ค๊ณ ์๋ ค์ ธ ์๋ค.
Page Address Translation
- page number : frame number์ mapping
- page offset : frame ๋ด์์ ๋ช ๋ฒ์งธ ์ฃผ์
page number, page offset ์ค์ ๋ฐฉ๋ฒ
- Logical Address Space ๊ฐ byte ๋ผ๊ณ ํ๋ค๋ฉด?
- Frame, Page์ ํฌ๊ธฐ๋ byte๋ผ๊ณ ํ๋ค๋ฉด??
๐ก offset = = n
๐ก page no = m - n
Address Translation
- Page Number๋ Page Table์์ Frame Number์ mapping ๋๋ ์ญํ ์ด๋ค.
- Page Offset์ ์ค์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ Frame์์ ๋ช ๋ฒ์งธ์ ์๋์ง๋ฅผ ๋ํ๋ธ๋ค.
page table์??
- page table์ ํญ์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผํ๊ณ ์์ด์ผ ํฉ๋๋ค.
- ๋ชจ๋ ํ๋ก์ธ์ค๋ page table ์กด์ฌํ๋ค.
- ๊ทธ๋ ๋ค๋ฉด ์ด๋ป๊ฒ page table์ ๊ฐ์ ธ์ฌ ์ ์์๊น?? โ Hardware์ support๊ฐ ์๋ค!!
- PTBR(Page-Table-Base-Register) : PT ์์์์น
- PTLR(Page-Table-Limit-Register) : PT์ ๊ธธ์ด
Quiz
- cpu์์ logical address = 9 ์ด๋ค. ์ด๋ฅผ ์๋ฏธํ๋ ๋ฐ๋?
์ ๋ต
์๋์ ์ผ๋ก page no bit์ ํฌ๊ธฐ๋ 2bit
๋ฐ๋ผ์, page no = 2 offset = 1
page table ์์ page no(2) ์ mapping๋๋ frame no = 1
Physical memory์ 1๋ฒ frame์ 4byte๋ถํฐ ์์ํ๋ frame์ด๋ค.
4 byte๋ก๋ถํฐ 1๋งํผ ๊ฐ 5byte ์์น์ j ๊ฐ ์์นํ๊ฒ ๋๋ค!!
๐ก๏ธ Page Protection
- ์์ Memory Protection์ผ๋ก Limit Register๋ฅผ ์ด์ฉํ๋ค๊ณ ํ์ต๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด Contiguous ํ๋ค๋ฉด Limit Register๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง๋ง,
- Paging์ Protection์ ์ํด ์ถ๊ฐ์ ์ธ ์์ ๋ค์ด ํ์ํฉ๋๋ค.
Protection Bit
- main memory๋ฅผ NonContiguous ํ๊ฒ ๊ด๋ฆฌ๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ๊ฑด๋ค์ฌ์๋ ์๋ OS์ ๊ฐ์ ์์ญ์ ์ฐ๊ธฐ ๊ถํ์ผ๋ก ์ ๊ทผํด์๋ ์๋ฉ๋๋ค.
- ๋ฐ๋ผ์ page table์ ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ถํ์ ํด๋นํ๋ Permission bit๋ฅผ ์ถ๊ฐํด ํ๋ ์์ ๋ณดํธํ ์ ์์ต๋๋ค.
Valid-Invalid Bit
-
์ ํจํ์ง ์๋ ํ์ด์ง๋ฅผ ์ฌ์ฉํ์ง ์๋๋ก valid-invalid bit ๋ฅผ ํตํด ๊ฒ์ฌํด์ค๋๋ค.
-
invalid : ํด๋น ํ์ด์ง๋ ํ๋ก์ธ์ค์ ๋ ผ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ ํด๋น๋์ง ์์์ ์๋ฏธํฉ๋๋ค.
-
14 bit ์ฃผ์ ๊ณต๊ฐ์ ๊ฐ๋ ์์คํ & Page size = 2KB ๋ผ๋ฉด?
- logical address space๋ฅผ ๋ณด๋ฉด page5 ๊น์ง ์กด์ฌํฉ๋๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ page table์ page no 6, 7 ๋ ๋ ผ๋ฆฌ ๊ณต๊ฐ์ ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์
- invalid๋ก ์ฒดํฌ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
โก ์ถ๊ฐ๋ก, Page 5๋ Page Size = 2KB = 2000 byte
๋ฐ๋ผ์, Page 5 ๋ ์์ ์ฃผ์๊ฐ 10469 ์ด๊ณ , Limit ๋ฅผ ์ด์ฉํด 12287 ๊น์ง๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค
TLB(Translation Look-aside Buffer)
์์ Page Table์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผํ๊ธฐ ๋๋ฌธ์ 2๋ฒ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ํ์๋ก ํ๋ Overhead๊ฐ ๋ฐ์ํ๋ค๊ณ ํ์ต๋๋ค.
๐ฅ ์ด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด TLB๊ฐ ์์ต๋๋ค.
TLB๋?
- special fast-lookup hardware cache
- ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๋ณํ์ ์ํ ๋ณ๋์ ์บ์ ๋ฉ๋ชจ๋ฆฌ
- Page Table์์ ์์ฃผ ์ฐธ์กฐ๋๋ ์ผ๋ถ ์ํธ๋ฆฌ๋ฅผ caching ํ๋ค
- ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ page table๊ณผ ๋๊ฐ๋ค โ page no, frame no ๊ตฌ์กฐ์ด๋ค.
- TLB๋ Parallel Search ๋ฅผ ์ํํด ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์์ต๋๋ค.
TLB ํฌํจ๋ Address Translation ํ๋ฆ
1๏ธโฃ TLB ์์ ๋น ๋ฅด๊ฒ mapping ๋๋ frame์ด ์๋์ง ํ์
2๏ธโฃ - 1๏ธโฃ TLB Hit ( TLB ๋ด์์ ํ์ ์ฑ๊ณต ๊ฒฝ์ฐ ) ๋ฐ๋ก frame์ ์ ๊ทผ ๊ฐ๋ฅ
2๏ธโฃ - 2๏ธโฃ TLB Miss ( TLB ๋ด์ ์์ ๊ฒฝ์ฐ ) page table์์ frame ํ์
โก TLB ์ ์ฉํ Memory ์ ๊ทผ ํ์์ ๊ธฐ๋๊ฐ
- TLB Hit Ratio : a TLB search time : e(์ ์ค๋ก : ๋งค์ฐ ์์ ๊ฐ)
์ผ๋ฐ์ ์ผ๋ก e๋ ๋งค์ฐ ์งง์ ์๊ฐ์ด๊ธฐ ๋๋ฌธ์ EAT๋ฅผ ์ค์ด๊ธฐ ์ํด์ Hit Ratio ๋ฅผ ๋๋ฆฌ๋ ๊ฒ์ด ์ค์ํ๋ค
โกASID
๋ฐ๋ผ์ ์ ์ญ์ ์๋ TLB๋ ํ๋ก์ธ์ค๋ฅผ ๊ตฌ๋ถํ ์บ์ ๋ฐ์ดํฐ๋ ๊ฐ์ง๊ณ ์์ด์ผํ๋ค.
์ด๋ฌํ ์ด์ ๋ก TLB์๋ ๋จ์ํ page no๋ง์ด ์๋ asid๋ฅผ ๊ฐ์ด ์ ์ฅํ๊ฒ ๋๋ค.
- asid ๋ pid์ ์ ์ฌํ๋ฐ 8bit๋ก ์ค์ด๋ id์ด๊ณ , ๋์ผํ asid๋ ๊ฐ์ TLB๋ฅผ ๊ณต์ ํด overhead๋ฅผ ์ค์ธ๋ค.
Page Structure
32 bit ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฐ์ ํ์ ์ฃผ์ ๊ณต๊ฐ์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
์ด ๋ page์ ํฌ๊ธฐ๊ฐ 4KB ๋ผ๋ฉด ์ฝ 100๋ง ๊ฐ์ page table entry๊ฐ ํ์ํฉ๋๋ค.
๊ฐ entry๋ 4Byte์ ๊ณต๊ฐ์ด ํ์ํ๊ธฐ ๋๋ฌธ์
์ด 4MB ๋งํผ์ page table๊ณต๊ฐ์ด ํ์ํฉ๋๋ค.
๐ฃ page table์ ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ ธ์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ํ๋ก์ธ์ค ๋ง๋ค 4MB ๋งํผ ๊ณต๊ฐ์ ๋ญ๋นํ๋ ๊ฒ์ ๋นํจ์จ์ ์ ๋๋ค.
page table์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํด์ผํ ์ด์ ์ ๋๋ค.
- Hierarchical Paging
- Hashed page table
- Inverted page table
Hierarchical Paging - ๊ณ์ธต์ ๊ตฌ์กฐ [ Multi-level paging ]
- ๋ ผ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ ์ฌ๋ฌ ๋จ๊ณ์ page table๋ก ๋ถํ ํ์ฌ page์ page table์ ์ฌ์ฉํ๋ ๊ธฐ๋ฒ์ ๋๋ค.
- ๊ฐ๋จํ ์๋ก Two-Level Paging์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
- 32 bit logical address space
- page size = 4KB =
- offset = 12 bit
- page no = 20 bit
page no์ ํด๋นํ๋ 20 bit ๋ฅผ ์ด์ฉํด์ inner page table์ ๋ค์ ๋ง๋ค๊ฒ ๋๋ค.
- inner page no = 10 bit
- inner page offset = 10 bit ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค.
64bit์์๋?? 3-Level Paging์์๋??
๐ก Multi-Level์ ๊น๊ฒ ํ ์๋ก page table์ด ์์์ ธ์ TLB์ ๋ชจ๋ ๋ด์ ์ ์๊ฒ ๋๋ค.
ํ์ง๋ง ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ๋ฌ๋ฒ access๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ overhead๋ฅผ ๊ณ ๋ คํด์ผํ๋ค.
Hashed Page Table
- Hashed Page Table์ Hash ํ page table์ ๊ฐ๋๋ค
- logical address์ page no๊ฐ์ ์ด์ฉํด ๋์จ hash function ๊ฐ์ผ๋ก mapping๊ฐ์ ์ฐพ์๊ฐ๋๋ค
- hash page table์ ๊ฐ entry๋ linked list๋ฅผ ๊ฐ์ ธ collision์ ์ถฉ๋์ ํด๊ฒฐํฉ๋๋ค
๊ทธ๋ฆผ
โกHashed Page Table์ ๋ง๋ค๊ณ hash function์ผ๋ก access ํ์๋ฅผ ๋ง์ด ์ค์ผ ์ ์๋ค.
64bit์์๋ ํด์ ์๊ณ ๋ฆฌ์ฆ์ ์ฝ๊ฐ ๋ณ๊ฒฝํ์ฌ ํด๋ฌ์คํฐํ ํ์ด์ง ํ ์ด๋ธ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค
Inverted Page Table
- ์ญ ํ์ด์ง ํ ์ด๋ธ
- ๊ฐ ํ๋ก์ธ์ค๋ ๋ชจ๋ page table์ ๊ฐ์ง๊ณ ์์ด์ผํ๋ค
- ์ด๋ก ์ธํด ์ค์ ๋ก๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผ์ค์ด๋ผ๋ ๋ชจ๋ page table์ ๊ฐ๊ณ ์์ด์ผํ๋ ๋ฌธ์ ๋ฐ์ โ page table ํฌ๊ธฐ ์ฆ๊ฐ โ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น
์๋ฏธ ๊ทธ๋๋ก ์ญ์ผ๋ก ํ๋ก์ธ์ค ๋น ํ์ด์ง ํ
์ด๋ธ์ด ์๋ main memory ์
์ฅ์์ ๋ง๋๋ page table!!
- Frame์ ๊ธฐ์ค์ผ๋ก ํ ์ด๋ธ์ ๊ฐ ํ๋ ์์ ์ด๋ค ํ๋ก์ธ์ค์ ๋์๋๋์ง ์ ๋ณด๋ฅผ ๋ด๋๋ค
- ํ๋ ์์ ๊ธฐ์ค์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ ์ด๋ค ํ๋ก์ธ์ค์ ๋์๋๋์ง ์ ์ ์์ผ๋ ค๋ฉด pid๋ฅผ ํ์๋ก ํฉ๋๋ค
physical memory๋ฅผ ๊ธฐ์ค์ผ๋ก page table์ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค ๋น ํ๋์ฉ ๊ฐ๋ ๊ฒ์ด ์๋ ์ ์ฒด์ ์ผ๋ก page table์ ํ๋๋ง ๊ฐ๊ณ ์์ด๋ ๋๋ ์ฅ์ ์ด ์์ต๋๋ค.
๋จ์
- ์ญ ํ์ด์ง ํ
์ด๋ธ์ ์ฃผ์ ๋ณํ ์๊ฐ์ด ๋ ์ค๋ ๊ฑธ๋ฆด ์ ์์ผ๋ฉฐ ํ๋ ์์ ๋ฐ๋ผ ์ ์ฅ๋์ด์์ด ํ์์ ๋นํจ์จ์ ์ด๋ค.
- TLB๋ก ๋น ๋ฅด๊ฒ ์ํํ๋๋ก ๊ฐ์ ๊ฐ๋ฅ
- ์ญ ํ์ด์ง ํ
์ด๋ธ์ ์ฌ์ฉํ๋ ์์คํ
์์ ๋ฉ๋ชจ๋ฆฌ์ ๊ณต์ ๋ ์ด๋ ต๋ค
- ์ญ ํ์ด์ง ํ ์ด๋ธ์์๋ frame์ ํ ๋น๋ ๊ฐ์ ์ฃผ์๊ฐ ํ๋์ด๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ๊ฐ์ ์ฃผ์์์ ๊ณต์ ํ๊ธฐ ์ด๋ ค์ ์กด์ฌ
๐ฅ ๋ค์๋ฒ์ ๊ณ์
โจ ์๋ชป๋ ๋ถ๋ถ์ ๋ง์ ์กฐ์ธ ๋ฐ ์ง์ ๋ถํ๋๋ฆฝ๋๋ค. - JunHyxxn