Logical vs Physical Address
1) Logical Address(virtual address)
- ํ๋ก์ธ์ค๋ง๋ค ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ง๋ ๊ฐ์์ ์ฃผ์ ๊ณต๊ฐ (CPU๊ฐ ๋ณด๋ ์ฃผ์)
- ๊ฐ ํ๋ก์ธ์ค๋ง๋ค 0๋ฒ์ง๋ถํฐ ์์
2) Physical Address
- ๋ฉ๋ชจ๋ฆฌ์ ์ค์ ์ฌ๋ผ๊ฐ๋ ์์น
* ์ฃผ์ ๋ฐ์ธ๋ฉ
- ํน์ ์์คํ ์ Logical Addr๋ฅผ Physical Addr๋ก ๋งคํํ๋ ๊ฒ
(Symbolic addr(๋ณ์/ํจ์๋ก ํธ์ถ) -> Logical addr -> Physical addr)
์ฃผ์ ๋ฐ์ธ๋ฉ(Address binding)
์ฃผ์ ๋ณํ์ด ์ด๋ฃจ์ด์ง๋ ์๊ธฐ์ ๋ฐ๋ผ ๋ถ๋ฅ
1) Compile time binding
- ์ปดํ์ผ ์ ์ฃผ์ ๋ณํ(Logical addr์ ๊ทธ๋๋ก ์ฌ์ฉ) -> ๋นํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์ ์์ฆ์ ์ฌ์ฉํ์ง ์์
- ์ ๋ ์ฝ๋ : ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ์์น๋ฅผ ๋ฐ๊พธ๊ณ ์ถ์ผ๋ฉด ์ปดํ์ผ ๋ค์ ํด์ผ ํจ
2) Load time binding
- ์คํ ์์ ์ ์ฃผ์ ๋ณํ
- ์ฌ๋ฐฐ์น ๊ฐ๋ฅ ์ฝ๋
3) Execution time binding(Runtime binding)
- ํ๋ก๊ทธ๋จ ์์ ์ค์๋ ์ฃผ์ ๋ณํ ๊ฐ๋ฅ
- ์ฌ๋ฐฐ์น ๊ฐ๋ฅ ์ฝ๋
- CPU๊ฐ ์ฃผ์๋ฅผ ์ฐธ์กฐํ ๋๋ง๋ค binding์ ์ ๊ฒํด์ผ ํจ -> HW์ ์ธ ์ง์์ด ํ์
MMU(Memory-Management Unit)
2๊ฐ์ register๋ฅผ ์ด์ฉํด logical addr -> physical addr๋ก ์ฃผ์ ๋ณํ์ ์ ๊ณตํ๋ ํ๋์จ์ด ์ ๋
1) relocation register(base register) : ์ ๊ทผํ ์ ์๋ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์ต์๊ฐ
-> (base register + ์์ ์์น)๋ฅผ ํตํด ์ค์ physical memory์ ์ฃผ์ ์ ๊ณต
2) limit register : ์ ์ฑ ํ๋ก๊ทธ๋จ์ ๊ณต๊ฒฉ์ ๋ง๊ธฐ ์ํด ๋ ผ๋ฆฌ์ ์ฃผ์์ ๋ฒ์๋ฅผ ์ฒดํฌ
Terminologies
1) Dynamic Loading
ํ๋ก์ธ์ค์ ๋ฃจํด์ด ํธ์ถ๋ ๋์ ๋ฉ๋ชจ๋ฆฌ์ loadํ๋ ๊ฒ
- ๊ฐ๋์ฉ ์ฌ์ฉ๋๋ ๋ง์ ์์ ์ฝ๋์ ๊ฒฝ์ฐ ์ ์ฉ(์ค๋ฅ ์ฒ๋ฆฌ ๋ฃจํด)
- memory utilization์ ํฅ์
- ์ด์์ฒด์ ์ ํน๋ณํ ์ง์ ์์ด ๊ฐ๋ฐ์๊ฐ ํ๋ก๊ทธ๋จ ์์ฒด์์ ๊ตฌํ ๊ฐ๋ฅ(OS๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ๊ตฌํ ๊ฐ๋ฅ)
cf) ์ด์์ฒด์ ์ paging ๊ธฐ๋ฒ
2) Dynamic Linking
Linking์ ์คํ ์๊ฐexecution time๊น์ง ๋ฏธ๋ฃจ๋ ๊ธฐ๋ฒ
- Static LInking : ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ๋ก๊ทธ๋จ์ ์คํ ํ์ผ ์ฝ๋์ ํฌํจ๋จ
- Dynamic Linking : ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ ์ stub์ ํตํด Linkํจ (shared-ilbrary/dml ํ์ผ)
3) Overlays(manual overlay)
๋ฉ๋ชจ๋ฆฌ์ ํ๋ก์ธ์ค์ ๋ถ๋ถ ์ค ์ค์ ํ์ํ ์ ๋ณด๋ง์ ์ฌ๋ฆฌ๋ ๊ฒ
- ํ๋ก์ธ์ค์ ํฌ๊ธฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ํด ๋ ์ ์ฉ
- ์ด์์ฒด์ ์ ํน๋ณํ ์ง์ ์์ด ๊ฐ๋ฐ์๊ฐ ํ๋ก๊ทธ๋๋จธ ์์ฒด์์ ๊ตฌํ(์ด์ฐฝ๊ธฐ -> ๋ณต์กํ๋ค)
4) Swapping
- Swapping : ํ๋ก์ธ์ค๋ฅผ ์ผ์์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์์ backing store๋ก ์ซ์๋ด๋ ๊ฒ
- Backing store(swap area) : ๋์คํฌ
- Swap In/Swap out : ์ค๊ธฐ ์ค์ผ์ค๋ฌ swapper์ ์ํด ์ ์
--- priority-based CPU scheduiing algorithm
--- execition time binding์ด ์ง์๋๋ฉด ๋ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
--- swap time์ ๋๋ถ๋ถ transfer time์ ๋น๋ก(swap๋๋ ์์ ๋น๋กํ๋ ์๊ฐ)
Allocation of Physical Memory
* ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ตฌ๋ถ
1) OS ์์ฃผ ์์ญ : ๋ฎ์ ์ฃผ์ ์์ญ
2) ์ฌ์ฉ์ ํ๋ก์ธ์ค ์์ญ : ๋์ ์ฃผ์ ์์ญ
* ์ฌ์ฉ์ ํ๋ก์ธ์ค ์์ญ์ ํ ๋น ๋ฐฉ๋ฒ
1) Contiguous allocation : ๊ฐ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์์ ์ธ ๊ณต๊ฐ์ ์ ์ฌ๋๋๋ก ํ๋ ๊ฒ
- Fixed partition allocation(๊ณ ์ ๋ถํ ๋ฐฉ์)
- Variable partition allocation(๊ฐ๋ณ ๋ถํ ๋ฐฉ์)
2) Noncontiguous allocation : ํ๋์ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฌ ์์ญ์ ๋ถ์ฐ๋์ด ์ฌ๋ผ๊ฐ ์ ์์
- Paging
- Segmentation
- Paged segmentation
1. Contiguous Allocation
- Fixed partition allocation(๊ณ ์ ๋ถํ ๋ฐฉ์) : internal/external fragmentation ๋ฐ์
- Variable partition allocation(๊ฐ๋ณ ๋ถํ ๋ฐฉ์) : external framentation ๋ฐ์
- external fragment (ํ๋ก๊ทธ๋จ ํฌ๊ธฐ > ๋ถํ ์ ํฌ๊ธฐ) : ํ๋ก๊ทธ๋จ์ด ์ฌ๋ผ๊ฐ ์ ์๋ ์์ ๋ถํ ํต์งธ
- internal fragment (ํ๋ก๊ทธ๋จ ํฌ๊ธฐ < ๋ถํ ์ ํฌ๊ธฐ) : ํ๋์ ๋ถํ ๋ด๋ถ์์ ๋จ๋ ๋ฉ๋ชจ๋ฆฌ ์กฐ๊ฐ
* Dynamic-Storage-Allocation-Problem
๊ฐ๋ณ ๋ถํ ๋ฐฉ์์์ size n์ธ ์์ฒญ์ ๋ง์กฑํ๋ ๊ฐ์ฅ ์ ์ ํ hole์ ์ฐพ๋ ๋ฌธ์
1) โ first-fit : size n ์ด์ ์ค ์ต์ด๋ก ์ฐพ์์ง๋ hole์ ํ ๋น (low overhead)
2) โ best-fit : size n ์ด์ ์ค ๊ฐ์ฅ ์์ hole์ ํ ๋น (good for future)
- ๋ง์ ์์ ์์ฃผ ์์ hole์ด ์์ฑ
3) worst-fit : ๊ฐ์ฅ ํฐ hole์ ํ ๋น
- ์๋์ ์ผ๋ก ์์ฃผ ํฐ hole๋ค์ด ์์ฑ
* Compaction
external fragment๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ํ ๋ฐฉ๋ฒ
์ฌ์ฉ ์ค์ธ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ ๊ตฐ๋ฐ๋ก ๋ชฐ๊ณ , hole์ ๋ค๋ฅธ ํ ๊ณณ์ผ๋ก ๋ชฐ์ ํฐ block์ ๋ง๋๋ ๋ฐฉ๋ฒ
- ๋งค์ฐ ๋น์ฉ์ด ๋ง์ด ๋๋ ๋ฐฉ๋ฒ
- execution time binding์ด ์ง์๋์ด์ผ๋ง ๊ฐ๋ฅ
2. Noncontiguous Allocation
1) Paging
: ํ๋ก๊ทธ๋จ์ virtual addr๋ฅผ ๋์ผํ ์ฌ์ด์ฆ์ page ๋จ์๋ก ์๋ผ์ ์ฌ๋ฆผ
- page table์ ํตํด logical addr(page) -> physical addr(frame)๋ก ๋ณํ
(+) hole ์์ฑ ๋ฑ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋จ
(-) ๋ณต์กํ ์ฃผ์ ๋ณํ, internal addr ๋ฐ์ ๊ฐ๋ฅ
* Implementation of Page Table
- Page-table base resigster(PTBR) : page table์ ์์ ์์น๋ฅผ ๊ฐ๋ฆฌํด
- Page-table length register(PTLR) : table ํฌ๊ธฐ๋ฅผ ๋ณด๊ด(limit)
- page table์ main memory์ ์์ฃผ
-> ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์ฐ์ฐ์๋ 2๋ฒ์ memory access ํ์ : page table 1๋ฒ, ์ค์ data/instruction ์ ๊ทผ 1๋ฒ
-> ์๋ ํฅ์์ ์ํด associative register, ์ฆ TLB๋ผ๋ ์บ์๋ฅผ ์ฌ์ฉ
* Associative Register(TLB)
- page table ์ค ์ผ๋ถ๋ง ์กด์ฌ
- ๋ชจ๋ TLB๋ฅผ ์ดํด๋ด์ผ ํ๊ธฐ ๋๋ฌธ์ parallel search๊ฐ ๊ฐ๋ฅ
- ํ๋ก์ธ์ค๋ง๋ค TLB์ ์ ๋ณด๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ context switch ๋ flushํด์ผ ํ๋ค
* Effective Access time
* Two-Level Page Table
address space๊ฐ ๋งค์ฐ ํฌ์ง๋ง ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋จ์ ์ฃผ์ ๊ณต๊ฐ ์ค ์ง๊ทนํ ์ผ๋ถ๋ง ์ฌ์ฉํ๋ฏ๋ก ๋ง์ ๊ณต๊ฐ์ด ๋ญ๋น๋จ
-> 2-level์ ๊ฒฝ์ฐ ๋ญ๋น๋๋ ๊ณต๊ฐ์ entry๊ฐ NULL๋ก ์ฒ๋ฆฌ๋์ด ์ฃผ์ ๊ณต๊ฐ ์ค์ธ๋ค(์์ชฝ page table ์ฌ์ฉ X)
* inner page table์ ํฌ๊ธฐ๋ page ํ ๊ฐ์ ๊ฐ๋ค
- page(4KB=2^12B)
- entry(4B) : 1K(2^10B)๊ฐ
* logical address(32-bit machine with 4K page size)
- page offset : 12 bit (2^12B ๊ตฌ๋ถ)
- page number : 20 bit
--- page number 10 bit (2^10B ๊ตฌ๋ถ)
--- page offset 10 bit
- P1 : outer page table index (10 bit)
- P2 : inner page table index (10 bit)
- D : page offset (12 bit)
* Memory Protection
page table์ ๊ฐ entry๋ง๋ค ์๋์ bit๋ฅผ ๋๋ค
1) protection bit : page์ ๋ํ ์ ๊ทผ ๊ถํ - ์ฃผ๋ก ์ฐ์ฐ ๊ถํ(read/write/read-only)
- code : read-only
- data/stack : read, write
2) valid/Invalid bit
- valid : ํด๋น ์ฃผ์์ frame์ ๊ทธ ํ๋ก์ธ์ค๋ฅผ ๊ตฌ์ฑํ๋ ์ ํจํ ๋ด์ฉ์ด ์๋ ๊ฒฝ์ฐ
- invalid : ํ์ด์ง๊ฐ ์ฌ์ฉ๋์ง ์๊ฑฐ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ค์ง ์๊ณ swap area์ ์๋ ๊ฒฝ์ฐ
* Inverted page table
์์คํ ๋ด๋ถ์ page table์ ํ๋ ๋๊ณ , entry๋ฅผ page frame(physical memory)์ ๊ฐ์๋งํผ ๋
- pid : process id
- p : entry #(physical frame #)
- d : offset
(+) page table ์ฉ๋์ ์ค์ผ ์ ์์
(-) large overhead -> associative register๋ฅผ ๋์ด parallelํ๊ฒ ๊ฒ์ํ๋๋ก ํ๋ค
* Shared Pages
1) Shared code (re-entrant code/pure code)
read-only๋ก ํ์ฌ ํ๋ก์ธ์ค ๊ฐ์ ํ๋์ code๋ง physical space์ ์ฌ๋ฆผ
shared code๋ ๋ชจ๋ ํ๋ก์ธ์ค์ logical addr space์์ ๋์ผํ ์์น์ ์์ด์ผ ํ๋ค
2) Private code
๊ฐ ํ๋ก์ธ์ค๋ค์ ๋ ์์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆผ
2) Segment
: ํ๋ก๊ทธ๋จ์ ์ฃผ์ ๊ณต๊ฐ์ ์๋ฏธ ์๋ ํฌ๊ธฐ(code/data/stack)๋ก ์๋ผ์ ์ฌ๋ฆผ
- ํฌ๊ธฐ๊ฐ ๊ท ์ผํ์ง๋ ์์ -> hole ๋ฌธ์ ๋ฐ์
Logical Address
segment-number, offset์ผ๋ก ๊ตฌ์ฑ
1) segment table
- base : starting physical address of the segment
- limit : length of the segment
2) segment-table base register(STBR) : ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์์์ segment table์ ์์น
3) segment-table length register(STLR) : ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ segment์ ๊ฐ์
=> limit & STLR๋ก ๋ ๋ฒ ๊ฒ์ฆ
4) Protection
5) Sharing : shared segment / same segment number
=> segment๋ ์๋ฏธ ๋จ์์ด๊ธฐ ๋๋ฌธ์ ๊ณต์ , ๋ณด์์ ์์ด paging๋ณด๋ค ํจ์ฌ ํจ๊ณผ์ ์ด๋ค
6) Allocation : first fit / best fit -> external fragmentation ๋ฐ์
=> segment์ ๊ธธ์ด๊ฐ ๋์ผํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ณ ๋ถํ ๋ฐฉ์์์์ ๋ฌธ์ ์ ์ด ๋์ผํ๊ฒ ๋ฐ์
3) Paged segmentation
segment๊ฐ ์ฌ๋ฌ ๊ฐ์ page๋ก ๊ตฌ์ฑ๋์ด ์์
- segment-table entry๊ฐ segment๋ฅผ ๊ตฌ์ฑํ๋ page table์ base address๋ฅผ ๊ฐ์ง๊ณ ์์
- segment๊ฐ ์๋ฏธ ๋จ์์ ์ผ์ ์ฒ๋ฆฌ / page๊ฐ ๋ด๋ถ ์ผ์ ์ฒ๋ฆฌ
- ํฌ๊ธฐ๊ฐ ๋์ผํ page๋ก ๊ตฌ์ฑ๋์ด ์๊ธฐ ๋๋ฌธ์ allocation ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์
'๐ป CS > ์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] 10. File Systems (0) | 2023.01.22 |
---|---|
[์ด์์ฒด์ ] 9. Virtual Memory (0) | 2023.01.22 |
[์ด์์ฒด์ ] 7. Deadlocks (0) | 2023.01.01 |
[์ด์์ฒด์ ] 6. Process Synchronization (0) | 2022.12.25 |
[์ด์์ฒด์ ] 5. CPU Scheduling (0) | 2022.11.27 |
๋๊ธ