Memory Management - hochan222/Everything-in-JavaScript GitHub Wiki
๋ฐ๋ก๊ฐ๊ธฐ
๋ฐ๋ก๊ฐ๊ธฐ
๋ฐ๋ก๊ฐ๊ธฐ
๋ฐ๋ก๊ฐ๊ธฐ
Logical vs Physical Address
- Logical address (=virtual address)
- ํ๋ก์ธ์ค๋ง๋ค ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ง๋ ์ฃผ์ ๊ณต๊ฐ
- ๊ฐ ํ๋ก์ธ์ค๋ง๋ค 0๋ฒ์ง๋ถํฐ ์์
- CPU๊ฐ ๋ณด๋ ์ฃผ์๋ logical address์
- Physical address
- ๋ฉ๋ชจ๋ฆฌ์ ์ค์ ์ฌ๋ผ๊ฐ๋ ์์น
์ฃผ์ ๋ฐ์ธ๋ฉ: ์ฃผ์๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ
Symbolic Address -> Logical Address -> Physical Address
์ฃผ์ ๋ฐ์ธ๋ฉ
- Complie time binding
- ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ์ปดํ์ผ ์ ์๋ ค์ง
- ์์ ์์น ๋ณ๊ฒฝ์ ์ฌ์ปดํ์ผ
- ์ปดํ์ผ๋ฌ๋ ์ ๋์ฝ๋ ์์ฑ
- Load time binding
- Loader์ ์ฑ ์ํ์ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๋ถ์ฌ
- ์ปดํ์ผ๋ฌ๊ฐ ์ฌ๋ฐฐ์น๊ฐ๋ฅ ์ฝ๋๋ฅผ ์์ฑํ ๊ฒฝ์ฐ ๊ฐ๋ฅ
- Execution time binding (=Run time binding)
- ์ํ์ด ์์๋ ์ดํ์๋ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ ์์น๋ฅผ ์ฎ๊ธธ ์ ์์
- CPU๊ฐ ์ฃผ์๋ฅผ ์ฐธ์กฐํ ๋๋ง๋ค binding์ ์ ๊ฒ
Memory-Management Unit (MMU)
- MMU (Memory-Management Unit)
- logical address๋ฅผ physical address๋ก ๋งคํํด ์ฃผ๋ Hardware device
- MMU scheme
- ์ฌ์ฉ์ ํ๋ก์ธ์ค๊ฐ CPU์์ ์ํ๋๋ฉฐ ์์ฑํด๋ด๋ ๋ชจ๋ ์ฃผ์๊ฐ์ ๋ํด base register์ ๊ฐ์ ๋ํ๋ค.
- user program
- logical address๋ง์ ๋ค๋ฃฌ๋ค
- ์ค์ physical address๋ฅผ ๋ณผ ์ ์์ผ๋ฉฐ ์ ํ์๊ฐ ์๋ค.
Dynamic Loading
- ํ๋ก์ธ์ค ์ ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ฏธ๋ฆฌ ๋ค ์ฌ๋ฆฌ๋ ๊ฒ์ด ์๋๋ผ ํด๋น ๋ฃจํด์ด ๋ถ๋ ค์ง ๋ ๋ฉ๋ชจ๋ฆฌ์ loadํ๋ ๊ฒ
- memory utilization์ ํฅ์
- ๊ฐ๋์ฉ ์ฌ์ฉ๋๋ ๋ง์ ์์ ์ฝ๋์ ๊ฒฝ์ฐ ์ ์ฉ
- ์ด์์ฒด์ ์ ํน๋ณํ ์ง์์์ด ํ๋ก๊ทธ๋จ ์์ฒด์์ ๊ตฌํ ๊ฐ๋ฅ (OS๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ์ง์ ๊ฐ๋ฅ)
Loading: ๋ฉ๋ชจ๋ฆฌ๋ก ์ฌ๋ฆฌ๋ ๊ฒ
Overlays
- ๋ฉ๋ชจ๋ฆฌ์ ํ๋ก์ธ์ค์ ๋ถ๋ถ ์ค ์ค์ ํ์ํ ์ ๋ณด๋ง์ ์ฌ๋ฆผ
- ํ๋ก์ธ์ค์ ํฌ๊ธฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ํด ๋ ์ ์ฉ
- ์ด์์ฒด์ ์ ์ง์์์ด ์ฌ์ฉ์์ ์ํด ๊ตฌํ
- ์์ ๊ณต๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ์ด์ฐฝ๊ธฐ ์์คํ
์์ ์์์
์ผ๋ก ํ๋ก๊ทธ๋๋จธ๊ฐ ๊ตฌํ
- "Manual Overlay"
- ์ด์์ฒด์ ์ง์์์
- ํ๋ก๊ทธ๋๋ฐ์ด ๋งค์ฐ ๋ณต์ก
Swapping
- Swapping
- ํ๋ก์ธ์ค๋ฅผ ์ผ์์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์์ backing store๋ก ์ซ์๋ด๋ ๊ฒ
- Backing store (=swap area)
- ๋์คํฌ
- ๋ง์ ์ฌ์ฉ์์ ํ๋ก์ธ์ค ์ด๋ฏธ์ง๋ฅผ ๋ด์ ๋งํผ ์ถฉ๋ถํ ๋น ๋ฅด๊ณ ํฐ ์ ์ฅ ๊ณต๊ฐ
- ๋์คํฌ
- Swap in / Swap out
- ์ผ๋ฐ์ ์ผ๋ก ์ค๊ธฐ ์ค์ผ์ค๋ฌ(swapper)์ ์ํด swap out์ํฌ ํ๋ก์ธ์ค ์ ์
- priority-based CPU scheduling algorithm
- priority๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ฅผ swapped out ์ํด
- priority๊ฐ ๋์ ํ๋ก์ธ์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค ๋์
- Compile time ํน์ load time binding์์๋ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์น๋ก swap in ํด์ผํจ
- Execution time binding์์๋ ์ถํ ๋น ๋ฉ๋ชจ๋ฆฌ ์์ญ ์๋ฌด ๊ณณ์๋ ์ฌ๋ฆด ์ ์์
- swap time์ ๋๋ถ๋ถ transfer time(swap๋๋ ์์ ๋น๋กํ๋ ์๊ฐ)์
Dynamic Linking
- Linking์ ์คํ ์๊ฐ (execution time)๊น์ง ๋ฏธ๋ฃจ๋ ๊ธฐ๋ฒ
- Static linking
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ๋ก๊ทธ๋จ์ ์คํ ํ์ผ ์ฝ๋์ ํฌํจ๋จ
- ์คํ ํ์ผ์ ํฌ๊ธฐ๊ฐ ์ปค์ง
- ๋์ผํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น (eg. printfํจ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋)
- Dynamic linking
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์คํ์ ์ฐ๊ฒฐ๋จ
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ ๋ถ๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฃจํด์ ์์น๋ฅผ ์ฐพ๊ธฐ์ํ stub์ด๋ผ๋ ์์ ์ฝ๋๋ฅผ ๋
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ด๋ฏธ ๋ฉ๋ชจ๋ฆฌ์ ์์ผ๋ฉด ๊ทธ ๋ฃจํด์ ์ฃผ์๋ก ๊ฐ๊ณ ์์ผ๋ฉด ๋์คํฌ์์ ์ฝ์ด์ด
- ์ด์์ฒด์ ์ ๋์์ด ํ์
Allocation of Physical Memory
- ๋ฉ๋ชจ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ ์์ญ์ผ๋ก ๋๋์ด ์ฌ์ฉ
- OS ์์ฃผ ์์ญ
- interrupt vector์ ํจ๊ป ๋ฎ์ ์ฃผ์ ์์ญ ์ฌ์ฉ
- ์ฌ์ฉ์ ํ๋ก์ธ์ค ์์ญ
- ๋์ ์ฃผ์ ์์ญ ์ฌ์ฉ
- OS ์์ฃผ ์์ญ
- ์ฌ์ฉ์ ํ๋ก์ธ์ค ์์ญ์ ํ ๋น ๋ฐฉ๋ฒ
- Contiguous allocation
- ๊ฐ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์์ ์ธ ๊ณต๊ฐ์ ์ ์ฌ๋๋๋ก ํ๋๊ฒ
- ๊ณ ์ ๋ถํ ๋ฐฉ์, ๊ฐ๋ณ ๋ถํ ๋ฐฉ์
- Noncontiguous allocation
- ํ๋์ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฌ ์์ญ์ ๋ถ์ฐ๋์ด ์ฌ๋ผ๊ฐ ์ ์์
- Paging
- Segmentation
- Paged Segmentation
- Contiguous allocation
Contiguous Allocation
-
Dynamic Storage-Allocation Problem
- ๊ฐ๋ณ ๋ถํ ๋ฐฉ์์์ size n ์ธ ์์ฒญ์ ๋ง์กฑํ๋ ๊ฐ์ฅ ์ ์ ํ hole์ ์ฐพ๋ ๋ฌธ์
-
First-fit
- Size๊ฐ n ์ด์์ธ ๊ฒ ์ค ์ต์ด๋ก ์ฐพ์์ง๋ hole์ ํ ๋น
-
Best-fit
- Size๊ฐ n ์ด์์ธ ๊ฐ์ฅ ์์ hole์ ์ฐพ์์ ํ ๋น
- Hole๋ค์ ๋ฆฌ์คํธ๊ฐ ํฌ๊ธฐ์์ผ๋ก ์ ๋ ฌ๋์ง ์์ ๊ฒฝ์ฐ ๋ชจ๋ hole์ ๋ฆฌ์คํธ๋ฅผ ํ์ ํด์ผํจ
- ๋ง์ ์์ ์์ฃผ ์์ hole๋ค์ด ์์ฑ๋จ
-
Worst-fit
- ๊ฐ์ฅ ํฐ hole์ ํ ๋น
- ์ญ์ ๋ชจ๋ ๋ฆฌ์คํธ๋ฅผ ํ์ํด์ผ ํจ
- ์๋์ ์ผ๋ก ์์ฃผ ํฐ hole๋ค์ด ์์ฑ๋จ
First-fit๊ณผ best-fit์ด worst-fit๋ณด๋ค ์๋์ ๊ณต๊ฐ ์ด์ฉ๋ฅ ์ธก๋ฉด์์ ํจ๊ณผ์ ์ธ ๊ฒ์ผ๋ก ์๋ ค์ง. (์คํ์ ์ธ ๊ฒฐ๊ณผ)
-
Compaction
- external fragmentation ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ํ๊ฐ์ง ๋ฐฉ๋ฒ
- ์ฌ์ฉ ์ค์ธ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ๊ตฐ๋ฐ๋ก ๋ชฐ๊ณ hole๋ค์ ๋ค๋ฅธ ํ ๊ณณ์ผ๋ก ๋ชฐ์ ํฐ block์ ๋ง๋๋ ๊ฒ
- ๋งค์ฐ ๋น์ฉ์ด ๋ง์ด ๋๋ ๋ฐฉ๋ฒ์
- ์ต์ํ์ ๋ฉ๋ชจ๋ฆฌ ์ด๋์ผ๋ก compactionํ๋ ๋ฐฉ๋ฒ(๋งค์ฐ ๋ณต์กํ ๋ฌธ์ )
- Compaction์ ํ๋ก์ธ์ค์ ์ฃผ์๊ฐ ์คํ ์๊ฐ์ ๋์ ์ผ๋ก ์ฌ๋ฐฐ์น ๊ฐ๋ฅํ ๊ฒฝ์ฐ์๋ง ์คํ๋ ์ ์๋ค.
-
Paging
- Process์ virtual memory๋ฅผ ๋์ผํ ์ฌ์ด์ฆ์ page ๋จ์๋ก ๋๋
- Virtual memory์ ๋ด์ฉ์ด page ๋จ์๋ก noncontiguousํ๊ฒ ์ ์ฅ๋จ
- ์ผ๋ถ๋ backing storage์, ์ผ๋ถ๋ physical memory์ ์ ์ฅ
- ํ๋ก์ธ์ค๋ง๋ค TLB๋ ํ๋์ฉ ์์ ๋ฐ๋ผ์ ๋ค๋ฅธ ํ๋ก์ธ์ค ์ฌ์ฉํ ๋ flush ์์ผ์ผ๋
Two-Level Page Table
- ํ๋์ ์ปดํจํฐ๋ address space๊ฐ ๋งค์ฐ ํฐ ํ๋ก๊ทธ๋จ ์ง์
- 32 bit address ์ฌ์ฉ์ 2^32B(4G)์ ์ฃผ์ ๊ณต๊ฐ
- page size๊ฐ 4k์ 1m๊ฐ์ page table entry ํ์
- 32 bit address ์ฌ์ฉ์ 2^32B(4G)์ ์ฃผ์ ๊ณต๊ฐ
Multilevel Paging and Perfomance
- Address space๊ฐ ๋ ์ปค์ง๋ฉด ๋ค๋จ๊ณ ํ์ด์ง ํ ์ด๋ธ ํ์.
- ๊ฐ ๋จ๊ณ์ ํ์ด์ง ํ ์ด๋ธ์ด ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ฏ๋ก logical address์ physical address ๋ณํ์ ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ํ์
- TLB๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๊ฐ์ ์ค์ผ ์ ์์
- 4๋จ๊ณ ํ์ด์ง ํ
์ด๋ธ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
- ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๊ฐ์ด 100ns, TLB ์ ๊ทผ ์๊ฐ์ด 20ns์ด๊ณ
- TLB hit ratio๊ฐ 98%์ธ ๊ฒฝ์ฐ
- effective memory access time = 128 nanoseconds
- ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฃผ์ ๋ณํ์ ์ํด 28ns๋ง ์์
Valid(v) / Invalid(i) Bit in a Page Table
Segmentation
- ํ๋ก๊ทธ๋จ์ ์๋ฏธ ๋จ์์ธ ์ฌ๋ฌ๊ฐ์ segment๋ก ๊ตฌ์ฑ
- Protection
- valid bit
- Read / Write / Execution ๊ถํ bit
- Sharing
์ค์ ์จ๋ณด๋ฉด segment ๊ฐ์๋ page ๊ฐ์์๋นํด ๋ช๊ฐ ์๋๋ค. ๋ฐ๋ผ์ ๋ญ๋น๊ฐ ์ ๋ค.