2023. 7. 21. 00:32ใComputerScience/OperatingSystem
9. main memory
- memory management ๋ชฉํ – provide a convenient abstraction for programming (์ธํฐํ์ด์ค)
- Batch programming
– program์ด ์ง์ physical address๋ฅผ ์ฌ์ฉํ๋ค.
- process ํ๋๋ง ์๋ ์์ ์๋ ์๊ด ์์์ -> multiple process – ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ํ์์ฑ ๋ฐ์
- ๋ฌธ์ ์ 1) multiple process 2) ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ํฐ ํ๋ก์ธ์ค (ex) ๊ฒ์)
-> Virtual memory ๋ฑ์ฅ
: process ๋ด๋ถ์์๋ virtual, logical address ์ฌ์ฉ, ์ค์ RAM์ ์ฃผ์๋ physical address
- secondary storage, memory๋ฅผ main memory์ฒ๋ผ ๊ฐ์ ธ์์ ์ฌ์ฉํจ
- ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฌดํํ๋ค๊ณ ๊ฐ์ ํ๊ณ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ, OS๊ฐ ์ด๋ฌํ ๊ธฐ๋ฅ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ฒ
* ์ธ์ logical address์ physical address๋ฅผ binding ํด์ผ ํ ๊น? (address binding time)
- compile time / load time / execution time – ์คํ ์๊ฐ์ binding
1) compile time – logical address๋ฅผ ์ค์ RAM ์ฃผ์์ compile time์ ์ฐ๊ฒฐ -> ๊ณ ์ ์ ์ผ๋ก ํด๋น ์์ญ(๋ฌผ๋ฆฌ์ ) ์์๋ง ํน์ process๊ฐ ์ํ๋จ – ๋๋จธ์ง ์์ญ์ ๋ญ๋น๋ ์ ์๋ค – ํน์ ๋ฉ๋ชจ๋ฆฌ์์๋ง ํ๋ก์ธ์ค๊ฐ ๋์๊ฐ
- batch system (์๋์ด๋ ธ) – ํ๋์ ํ๋ก๊ทธ๋จ๋ง ์ํ๋๋ ํ๊ฒฝ์ okay
2) Load time – ๋ก๋ฉ ์, ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆผ – ์ค๋ฒํค๋๊ฐ ๋ง์ ์ฌ์ฉ X
3) Execution time – ํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
- logical address๊ฐ ๊ทธ๋๋ก ์ฌ๋ผ๊ฐ ๋ค, ํด๋น ํ๋ก์ธ์ค์ ๋ช ๋ น์ด๊ฐ ์คํ๋ ๋, ๊ทธ์ ์์ผ base address + a๋ก physical address๊ฐ ๊ณ์ฐ๋จ (binding)
Address mapping – MMU (memory management unit)
– CPU ๋ด์์ virtual(ํ๋ก๊ทธ๋จ ๋ด๋ถ์์ ์ฌ์ฉ), physical address(์ค์ RAM ์ฃผ์) ๋ณํ์ํค๋ ํ๋์จ์ด ์ฅ์น
- ๋ ์ฌ์ด์ ๋ณํ์ ํ ๋, CPU๋ด์ MMU๋ผ๋ ๋ก์ง์์ translation์ ํด์ค๋ค.
+ Swap – RAM์ ์กด์ฌํ๋ ์ผ๋ถ๋ถ์ secondary storage์ ์ ์ฅ, ๋ฌดํ ๋ฉ๋ชจ๋ฆฌ์ฒ๋ผ ๋ณด์ผ ์ ์๋ค. (10์ฅ)
- logical address space = ์๋ก ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ๋์์ application์ ์คํ -> ๋์ผํ ์ฃผ์ ๊ฐ
: ๋ค๋ฅธ Physical address์ ๋งคํ ๋๋๋ผ๋, ํ๋ก๊ทธ๋จ ๋ด๋ถ์ logical address๋ ๋์ผํ๋ค
1. Contiguous allocation – logically contiguous => physically contiguous (๊ฐ์ฅ ๋จ์ํ๊ณ ์ฌ์ด ๋ฐฉ๋ฒ, ์ฌ์ฉX)
- physical address = logical address + base address (relocation register)
+ ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ: ๋ด๊ฐ ์ฐธ์กฐํ ์ ์๋ ์์ญ์ด ์๋๋ผ๋ฉด exception, fault -> OS (limit register๋ณด๋ค ์์ ๊ฐ๋ง)
* access time ์ธก๋ฉด์์ ์ฑ๋ฅ์ ๊ฐ์ฅ ์ข๋ค.
-> ์ฌ๋ฌ process๋ฅผ ๋๋ฆฌ๋ฉฐ, hole์ด ๋ฐ์ -> first fit(๊ฐ๋ฅํ ์ฒซ๋ฒ์งธ), best fit(๊ฐ์ฅ ์งํฌ๋ฆฌ ์์ ๊ฒ์ ๋ฐฐ์น) //
Worst fit(๊ฐ์ฅ ํฐ hole์ด ๋จ๋ ๊ฒ์ ๋ฐฐ์น)์ ๋ค๋ฅธ ๋ ๋ฐฉ๋ฒ์ ๋นํด ์ฑ๋ฅ์ด ๋จ์ด์ง // ํ์ง๋ง ์ด๋ ๊ฒ ํด๋
* External Fragmentation – ๋จํธํ (hole์ ์ํฌ๋ฆฌ ์กฐ๊ฐ), ํ์ด ์์์ ธ์ ๋์ด์ ์ฌ์ฉ๋์ง ์์
- compaction์ผ๋ก ํด๊ฒฐํ ์ ์์ง๋ง, HDD๋ก ์ฎ๊ธฐ๊ณ ๋ค์ copyํ๋ ๊ณผ์ ์์ I/O overhead๊ฐ ๋งค์ฐ ํผ
2. Paging – logically contiguous, but physically not contiguous
- logical memory๋ฅผ page ๋จ์๋ก, physical memory๋ฅผ frame ๋จ์๋ก ์๋ฆ (๋ณดํต 4KB)
- ๋์ด์ external fragmentation์ ๋ฐ์X, internal fragmentation์ O -> ๊ทธ๋ฌ๋ ๋น๊ต์ ๋งค์ฐ ์์
* ์ฃผ์ ๋ณํ - <page number + offset> (p, d) -> <frame number + offset> (f, d)
- page table์ OS๊ฐ ๊ด๋ฆฌํ๋ค, (p, d) -> (f, d) // ์ด๋ offset์ ์ ์ง๋๋๋ฐ, ์ด๊ฒ page ํฌ๊ธฐ๋งํผ ํ ๋น
(ํ ํ์ด์ง ๋ด๋ถ์์ ์ด๋ ์์น์ธ์ง ๊ฒฐ์ ํ๋ ๊ฐ์ด๋๊น)
- page table์ page number -> frame number ๋ก mapping ์ํค๋ ์ญํ (offset์ ๋์ผ)
- page table์ Process ๋ณ๋ก ์กด์ฌํ๋ค!
* page example – logical address – 32bit, physical address – 20bit, page size 4KB(12bit)
-> offset 12 bit, page number 20bit (32 – 12) // frame number = 8 bit
Page table entries = 2^20๊ฐ (page number ์ ๋งํผ) // ์ ํ ์ด๋ธ ๊ฐ์ด Int -> 4MB(CPU ๋ด์ MMU์ ๋ ์ X, ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๋๋ค. ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ 2๋ฒ ์ ๊ทผ -> ์ฑ๋ฅ์ด 2๋ฐฐ ๋๋น ์ง ๊ฒ)
- Free frame – ํ์ฌ ํ ๋น๋์ง ์์ frame ๊ด๋ฆฌ
* Associative memory – parallel search == CAM(content addressable memory)
- TLB (translation look-aside buffer) -> ์๋ process ๋ณ ์กด์ฌ, MMU(์ฆ CPU)๊ฐ ๊ด๋ฆฌ
- two memory accesses ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, TLB(์บ์ฌ ๋ฉ๋ชจ๋ฆฌ)๋ฅผ ์ฌ์ฉํ๋ค.
- page number๋ฅผ ์ฃผ๋ฉด, parallelํ๊ฒ ์ซ ์์น, ๋ฐ๋ก frame number๊ฐ ํ๊ฒจ์ ธ ๋์ค๋, ํน๋ณํ ์บ์ฌ ๋ฉ๋ชจ๋ฆฌ
* TLB = locality (temporal locality – ์คํ ์๊ฐ ๊ด์ , code ์์ญ, loop ๊ตฌ๋ฌธ 80% vs Spatial locality – ๋ด๊ฐ ์ฐธ์กฐํ ์ฃผ๋ณ ์์ญ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฐธ์กฐ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค, data array)
- TLB miss – 99%๋ TLB hit, but ๋๋๋ก miss -> CPU(ํ๋์จ์ด)๊ฐ ์์์ TLB miss ์ฒ๋ฆฌ
: 0.99 * 1 + 0.01 * 2 -> 1.01
- Effective access time (EAT) = (1 + e) * a + (2 + e)(1 – a) = 2 + e – a == 1
// TLB hit ํ๋ฅ = 0.99 = a, TLB miss = 1 – a, e๋ ๊ทธ๋ฅ ๋งค์ฐ ์์ ๊ฐ ์๋ฏธ
* paging์ memory protection (์ง๊ธ๊น์ง๋ memory address ๊ด๋ฆฌ) -> ์ฐธ์กฐํ์ง ๋ชปํ ์์ญ์ ์ด๋ป๊ฒ ๋ณดํธ?
- process ๋ณ๋ก ์กด์ฌํ๋ page table -> frame number์ ํจ๊ป, valid – invalid ํ ๋นํธ ํ์
- ๋ด๊ฐ ์ํ๋ page์ frame number + invalid๋ผ๋ฉด, accessํ ์ ์๋ค.
-> Fault, exception: CPU๊ฐ ์ค์ค๋ก์๊ฒ ์ธํฐ๋ฝํธ๋ฅผ ๊ฑด๋ค – OS๊ฐ ์ํ๋์ด ํด๋น ํ๋ก์ธ์ค ์ข
๋ฃ์ํด
* Page table entries (PTEs)
- valid bit (V) – ๋ฉ๋ชจ๋ฆฌ ํ๋กํ ์ / reference bit (R) – ์ฐธ์กฐ๋ ์ ๋ฌด ํ์ธ / modified bit (M) – ๋ณ๊ฒฝ ์ ๋ฌด
Protection bit (prot) – ํด๋น ํ์ด์ง์ ํ์ฉ๋ ์ฐ์ฐ์ ์ ์ด, 2bit ex) read, write, exec, ect
-> page table์ frame number๋ง ์๋ ๊ฒ์ ์๋๋ค. ์ด๋ ๊ฒ, ๋ค๋ฅธ ๋นํธ๋ค๋ ๋ ์์
- managing page tables – 32bit address space, offset 12bit, 2^20๊ฐ์ entries * 4KB pages -> 4MB, 100๊ฐ์ ํ๋ก์ธ์ค -> 400MB
- ์์ process์ ๊ฒฝ์ฐ, 1๊ฐ page๋ง valid, ๋๋จธ์ง ์น ๋ค invalid -> ๋นํจ์จ
-> ๋ฐ๋ผ์ page table ๊ตฌ์กฐ๋ฅผ dynamically extensibleํ๊ฒ! -> 1. Hierarchical paging (ํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ์)
1. * Hierarchical paging – multiple page tables๋ฅผ ์ฌ์ฉ – ์๋ frame number๋ฅผ ์ ์ฅํ ์์น์, ๋ค๋ฅธ page table์ ์ฃผ์๊ฐ ์๋ค.
- outer page table – 2^10 entries, 4B(32bit int์๋ฏธ) * 2^10 = 4KB
- page table – 2^10 entries * 2 ^ 10 = 4B(int) * 2^10 * 2^10 = 4MB (์ ์ฒด = 4KB + 4MB)
(If single level paging – 2^20 entries * 4B = 4MB) ์ค์ธ๋ค๋ฉด์ ์ ๋์ด๋จ? ์ต์ ์ ๊ฒฝ์ฐ์ธ ๊ฒ!
- ํ์ํ ๋ ๋ง๋ค ๋์ ์ผ๋ก ํ๋์ฉ ๋ง๋๋ ๊ฒ
- only one page is used -> outer page table์ 4KB๋ค ์กด์ฌ, but outer์์ ์ฐ๊ฒฐ๋๋ inner๊ฐ 2^10 entries 1๊ฐ
-> 2^10 * 4B = 4KB (๋ฐ๋ผ์ ์ด 4KB + 4KB = 8KB๋ง ์์ผ๋ฉด ๋จ!)
-> process ํฌ๊ธฐ์ ๋น๋กํ page table์ ํฌ๊ธฐ
2. Hashed page table – ์ค๋ฒํค๋๊ฐ ๋๋ฌด ์ปค์ ์ฌ์ฉX 3. Inverted page table – frame๊ณผ page๋ฅผ ๊ฑฐ๊พธ๋ก ๋ง๋ค์ X
* paging์ ์ฅ์ – shared memory๋ฅผ ๊ตฌํํ๊ธฐ ์ข๋ค.
- ์๋ก ๋ค๋ฅธ process๊ฐ code์์ญ์ ๋์ผํ๊ณ , data ์์ญ๋ง ๋ค๋ฅด๋ค -> page table์ ๋ง์ง๋ง page ์์๋ง ๋ค๋ฆ
-> ๋์ผํ physical memory๋ฅผ ๋งคํ
-> ์ ๋์ค-๋ฆฌ๋ ์ค์ shared library ๊ตฌํ ์ ํ์ฉ, (์๋์ฐ๋ dll – dynamically linked library)
- paging์ ์ฅ์ – external fragmentation X, memory protection ์ฉ์ด
- ๋จ์ – 2 reference per address lookup (page table -> memory) -> TLB (cache memory)๋ก ํด๊ฒฐ!
+ ๊ณผํ page table ํฌ๊ธฐ -> hierarchical page tables๋ก ํด๊ฒฐ!
3. Segmentation (contiguous allocation, paging ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง ๋ฐฉ๋ฒ – ์๋ ํ์ฌ ์ฐ์ด๋ ๋ฐฉ๋ฒ)
- ์๋ฏธ ์๋ ๋จ์๋ก ์๋ฅด์. ๋ด์ฉ์ ๊ณ ๋ คํ์ฌ ๋ถ๋ฆฌํ์. Ex) ์ฝ๋, ๋ฐ์ดํฐ, ํ(extra), ์คํ
+ segment ๋ด์์ contiguous allocation -> ๋ค์ external fragmentation ๋ฌธ์ ๋ฐ์! -> paging ์ฌ์ฉ
- segmentation์ ์ฅ์ – memory protection ์ฉ์ด (read, write, exec ๋ฑ protection ๋นํธ ํ์ฉ)
- Share segment๊ฐ ์ฉ์ดํ๋ค (Code/data sharing์ด segment level์์ ๊ฐ๋ฅ, ex shared libraries)
-> paging์ ์ฅ์ ๊ณผ ํผํฉํ์ฌ hybrid ๋ฐฉ์์ผ๋ก ์ฌ์ฉ, segment๋ก ๋๋๊ณ , ๊ทธ ๋ด๋ถ์์ paging์ผ๋ก ์๋ฆ
=> Hybrid approach: Paged segments // Segmentation with paging ์ด๋ผ๊ณ ๋ถ๋ฆ
+ multiple page size = 4KB๋ณด๋ค ๋ ํฐ ํ์ด์ง ์ฌ์ด์ฆ๋ ์ง์ (ํน์ ๊ฒฝ์ฐ, ํฐ 4MB page ์ง์)
- ARM – mobile – segmentation X, multiple page size ํ์ฉ
10. Virtual memory
: virtual memory that is larger than physical memory (RAM) – ์ ์ ์ฐ๋ ๊ฒ์ secondary๋ก
* Demand Paging – ํ์ํ ์์ ์ ์ด๋ฃจ์ด์ง๋ paging
- paging system with page level swapping
: page ๋จ์์ swapping -> secondary storage <-> main memory (RAM)
- page๊ฐ ํ์ํ ์์ ์ main memory๋ก ๋ถ๋ฌ์จ๋ค.
-> Locality (cache memory, TLB, demand paging, Buffer cache ๋ฑ๋ฑ)
- temporal locality – ์ต๊ทผ์ ์ฐธ์กฐ๋ ๋ถ๋ถ์ด ๋ค์ ์ฐธ์กฐ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค – x ์ถ์ผ๋ก ๊ธธ๊ฒ ํ์๋จ
- spatial locality – ์ต๊ทผ ์ฐธ์กฐ๋ ๋ถ๋ถ์ ๊ทผ์ฒ๊ฐ ๊ณง ์ฐธ์กฐ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค – y ์ถ์ผ๋ก ๊ธธ๊ฒ ํ์๋จ
- ์ Demand Paging์ธ๊ฐ? // ์ด์ ๊น์ง๋ ํด๋น ํ๋ก์ธ์ค๊ฐ ์ฐธ์กฐ ๊ฐ๋ฅ or ์๋์ง ํํํ๋ Invalid bit
-> ์ผ๋จ ๋ค ์ ์ฌ๋ฆผ, ์์ ์ ๋ชจ๋ invalid bit
- ๊ทธ ํ์ด์ง๊ฐ ์ฐธ์กฐ๋๋ ์์ ์ valid๋ก ์ฌ๋ฆผ -> demand paging
* ์๋กญ๊ฒ ์ ์๋ ์๋ฏธ
1. valid bit (v) – ์ฐธ์กฐํ ์ ์๋ ์์ญ, ์ง๊ธ ํ์ฌ physical memory์ ์๋ค (in memory ์๋ฏธ)
2. invalid bit (i) – ๋ด๊ฐ ์ฐธ์กฐํ ์ ์๋ ์์ญ (protection fault) or
์๊ธด ์๋๋ฐ, ์ง๊ธ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ์๋ค! (secondary storage์, ๋ฐ๋ผ์ Page fault)
+ ์ฒ์์๋ ๋ชจ๋ invalid๋ก ์ค์ ๋์ด ์๋ค.
- CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ ์์ ์ (exec time)
- virtual (logical) address <-> physical address mapping by MMU
1. TLB hit (99%) TLB miss -> 2. Page table -> ๋์ด์ CPU(MMU)๊ฐ ์งํํ ์ ์์ -> fault
-> falut ๊ฑธ๋ ธ์ผ๋, OS๊ฐ ์ฒ๋ฆฌ -> secondary storage (backing store) – I/O
-> free frame์ ๊ฐ์ ธ์ด -> ํด๋น frame number๋ฅผ ๊ธฐ์ ํ๊ณ , invalid๋ฅผ valid๋ก ๋ณ๊ฒฝ
-> ๋ช ๋ น์ด๋ฅผ restart ์ํค๋ฉด main memory access ๊ฐ๋ฅ!
+ protection fault – ์ฐธ์กฐํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ฐธ์กฐ – program bug
- page fault – main memory๋ฅผ ์ถฉ๋ถํ ๋ฌ์์ด์ผ ํจ
- Copy on write: fork ์ memory management // Unix
- ํ๋ก์ธ์ค fork ์ ๋ฐ๋ก copy ๋๋ ๊ฒ์ด ์๋๋ผ, writeํ๋ ์์ ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ถ๋ฆฌ๋๋ ๊ฒ
* free frame์ด ์๋ค๋ฉด? -> main memory์ ๋ชจ๋ frame์ด ๋ค ์ฌ์ฉ ์ค์ด๋ค. (์ฌ๋ฌ process ์คํ ์ค์ด๋ผ)
- ์ด๋ค page๊ฐ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ค๋ฉด์, ๋ค๋ฅธ Page๋ backing store๋ก ๋ด๋ ค๊ฐ (i ์ค ํ๋๋ฅผ ๋ด๋ ค์ ์ฒ๋ฆฌ)
-> page replacement (ํ์ด์ง ๊ต์ฒด)
: ์ด๋ค page๋ฅผ ๋ด๋ ค ๋ณด๋ผ ๊ฒ? (page replacement algorithm) – ์ค๋ ์ฌ์ฉ๋์ง ์์ ๊ฒ์ ๋ด๋ฆฌ์.
-> ์์ผ๋ก๋ ์ฌ์ฉ๋์ง ์์ ํ๋ฅ ์ด ๋๊ธฐ ๋๋ฌธ์ (locality) -> victim(ํฌ์์)์ ์ ํด swapํ๋ค.
* page replacement algorithm – ์๊ณ ๋ฆฌ์ฆ์ ๋ชฉํ – Lowest page fault rate
- page faults vs Number of frames (main memory free frame ์์ page fault๋ ๋ฐ๋น๋ก ๊ด๊ณ)
-> free frame ์๊ฐ ๋ง์์๋ก, page faults๊ฐ ๋ ๋ฐ์ํ๋ค.
1. FIFO – ๊ฐ์ฅ fair, but locality์ ๋ํ ์ดํด๊ฐ ์์. ์ฑ๋ฅ์ด ๋ฎ๋ค – Bradly’s anomaly
Process๊ฐ 3๊ฐ์ frame ํ ๋น – 9 fault, 4๊ฐ frame ํ ๋น ๋ฐ์ผ๋ฉด 10 fault๊ฐ ๋ฐ์
-> locality๋ฅผ ์ ํ ๊ณ ๋ คํ์ง ์์๊ธฐ ๋๋ฌธ์
+ memory 4GB / frame 4KB -> frame์ด 1M๊ฐ (2^20, ๋ฐฑ๋ง) / process 100๊ฐ -> 1๊ฐ ๋น 10,000 frame
2. Optimal algorithm – ๋๋ณด๋ค ๋ ์ข์ ์ฑ๋ฅ์ ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ์ ์๋ค
- replace page that will not be used for longest period of time (๊ฐ์ฅ ์ค๋ซ๋์ ์ ์ฐ์ผ ๊ฒ์ ๊ต์ฒด)
- ์ฒ์ ์ ๋ค์ ๋ฌด์กฐ๊ฑด Fault๊ฐ ๋จ -> demand paging ๋๋ฌธ
- ๊ณง reference ๋ ์ ๋ค์ ๋ด๋ฆฌ์ง ์์
- ํ์ง๋ง ์์๋ฅผ ๋ฏธ๋ฆฌ ์ ์ ์๋ค -> ๊ณผ๊ฑฐ๋ฅผ ํตํด ๋ฏธ๋๋ฅผ ์์ธกํด์ผ ํจ – ์ญ์๋ locality
3. LRU – Least Recently Used ์๊ณ ๋ฆฌ์ฆ – optimal์ ๊ทผ์ ํ ์ฑ๋ฅ
- ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ page๋ฅผ ๊ต์ฒดํ๋ค. (๊ณผ๊ฑฐ๋ก๋ถํฐ ๋ฏธ๋๋ฅผ ์ถ์ธกํ๋ค)
-> page๊ฐ ์ธ์ ์ฐธ์กฐ๋์๋์ง, ๊ทธ ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์์ด์ผ ํจ. 2๊ฐ์ง ๋ฐฉ๋ฒ ์ ์
1) timestamp implementation – page ๋ณ time stamp๋ฅผ ๊ธฐ๋กํ๊ฒ ๋ค.
2) Stack implementation – ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ๋ ๋ ๋ง๋ค ์คํ ๊ตฌ์กฐ ๋ณ๊ฒฝ – ์ค๋ฒํค๋ ๋๋ฌด ์ปค์ ๋ถ๊ฐ๋ฅ
+ ํ์ ์คํฌํ๋ ์ค๋ฒํค๋ ๋ถ๋ด์ค๋ฌ์ -> ์์ ๋นํธ๋ก ์ถ์ (approximation)ํ์ -> 1 bit๋ก ํ ์ค์
* Reference bit -> 1 or 0 – ์ด๋ค page๊ฐ ์ฐธ์กฐ๋ ๋, reference bit๋ฅผ 1๋ก ์ธํ ํ๋ค.
- ์ฃผ๊ธฐ์ ์ผ๋ก reference๋ฅผ 0์ผ๋ก ๋ง๋ฆ -> replace๊ฐ ์ด๋ฃจ์ด์ง ๋, 1๊ณผ 0 ์ค 0์ ๋ด๋ฆฌ๊ฒ ๋ค.
- 0์ด ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด? ๋๋ค์ผ๋ก ๋ด๋ฆผ
+ ์ค์ CPU๊ฐ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ – Second Chance (LRU lock) – ํ ๋ฒ ๋ ๊ธฐํ๋ฅผ ์ค๋ค!
- circular queue of pages๋ก ํ ๋ฒ ๋ด์ค๋ค
4. NRU - Not Recently Used – ํ์ฌ CPU๊ฐ ์ฌ์ฉํ๋ ๋ฐฉ์
- R(reference), M(modified) bit๋ฅผ ํ์ฉํ๋ค.
1. Class 0 – R = 0, M = 0, ์ต๊ทผ์ ์ฐธ์กฐ๋, ๋ณ๊ฒฝ๋ X -> ๊ฐ์ฅ ์ฐ์ ์ ์ผ๋ก ์ซ์๋
2. Class 1 – R = 0, M = 1, ์ต๊ทผ์ ์ฐธ์กฐX, ๋ณ๊ฒฝO -> ๊ทธ ๋ค์์ผ๋ก ์ซ์๋
3. Class 2 – R = 1, M = 0, ์๊ฐ ๊ทธ๋๋ง ๋ ์์ฃผ ์ฐธ์กฐ๋ ๊ฐ๋ฅ์ฑ ์๋ค.
4. Class 3 – R = 1, M = 1, ๊ฐ์ฅ ๋ฎ์ ์ซ๊น ์์
+ PTEs (page table entries) -> ์ฌ๊ธฐ์ ๋์จ R, M bit!
- Page table์์ ์ง์ํ๋ค == CPU์์ ์ง์ํ๋ค (ํ๋์จ์ด์ ์ผ๋ก)
5. LFU – Least Frequently Used – ์๊น๋ ์๊ฐ, ์ด๊ฑด ํ์ count ๊ธฐ์ค
- Counting based page replacement – ์ด๊ฒ๋ ์ค๋ฒํค๋ ๋๋ฌธ์ ํ ๋นํธ๋ก ์ค์ด๋ฉด (approximation), ๊ฒฐ๊ตญ LRU๋ LFU๋ ๋๊ฐ์ด ๋จ – ์ฑ๋ฅ์ด ๋ ๋ค optimal
* Allocation of frames – process์๊ฒ free ํ๋ ์์ ์ผ๋ง๋ ํ ๋นํ ๊ฒ์ธ๊ฐ?
- Proportional allocation – process์ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ํ ๋น
- Priority-based allocation
+ Page replacement
- global replacement
- local replacement – ํ์ฌ OS๊ฐ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ: ํด๋น process ๋ด์์ ๊ต์ฒด
- Page fault frequency scheme (free frame ์ ๋๋น, page fault ๋น์จ)
- Page fault๊ฐ ์์ฃผ ๋ฐ์ํ๋ process -> ์๋ frame์ด ๋ถ์กฑํ๊ตฌ๋ – ๋ ํ ๋นํด ์ค
- Page fault ๋น์จ์ด ๋งค์ฐ ๋ฎ์ process -> ์๋ ์ฌ์ ๊ฐ ์๊ตฌ๋ – ๋ค๋ฅธ ์ ์๊ฒ ์ค ์ ์์
* Thrashing – process is busy swapping pages in and out
- process์ ์๊ฐ ๋์ด๋๋ค ๋ณด๋ฉด, CPU utilization์ด ํ ์ค์ด๋๋ ์ง์ -> thrashing
- CPU๊ฐ Disk IO๋ง ํ๋ ๊ฒ // locality (์์ฃผ ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ)์ ํฉ์ด ์ ์ฒด ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์ฆ๋ณด๋ค ํด ๋
ํด๊ฒฐ ๋ฐฉ๋ฒ 1. Main memory๋ฅผ ๋ ๋๋ฆฐ๋ค. 2. ์คํ ์ค์ธ Process์ ์๋ฅผ ์ค์ธ๋ค.
- ๋ฉ๋ชจ๋ฆฌ์ ๋นํด, ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ ๋ง์ ๊ฒ
- Working-Set model
- working set size == locality์ ํฌ๊ธฐ
- ํด๋น process๊ฐ ์ต๊ทผ ์ฐธ์กฐํ page๋ค์ ์งํฉ // WSS๊ฐ ์์์๋ก locality๊ฐ ์ฐ์ํ process
- ๋ชจ๋ process๋ค์ working set size์ ํฉ D > M – ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ -> thrashing ๋ฐ์
- Prepaging – ์ธ๊ทผ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ Disk์์ ์ฝ์ด์ค๋ ๊ฒ
-> Spatial locality
- Page size์ ๋ํ ํน์ฑ๋ค
- internal fragmentation -> ์์์๋ก ์ข๋ค
- Page table size – ํฐ ๊ฒ ์ข๋ค.
- I/O Overhead – ํฐ ๊ฒ ์ข๋ค.
- Locality – ํฐ ๊ฒ ์ข๋ค.
* TLB reach – TLB๊ฐ ์ปค๋ฒํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ
–> ์ด ์ ์ฅ์์๋ page size๊ฐ ํฐ ๊ฒ์ด ์ข๋ค.
- TLB Reach = (TLB size) * (Page size)
+ index ์ฐ์ฐ, j -> i : A[i][j] -> 1024*1024 page faults
- i -> j : A[i][j] -> 1024 page faults
+ 32bit integer 1024๊ฐ -> 4KB -> page size
+ DMA (direct memory access) – I/O๊ฐ ์ง์ disk์ ์
- main memory์ ์ง์ ์ ๊ทผ (CPU register์ ๋ด์ ์ ์๊ธฐ ๋๋ฌธ์)
- ์ด๋ virtual memory management ๊ณ ๋ คX, lock์ ๊ฑธ๊ณ I/O ์ฅ์น๋ง ์ฌ์ฉํ๋ค.
- virtual memory์ free frame ์์ญ์ ๋ค์ด๊ฐ์๋ ์๋จ
11. Mass-Storage Structure
- I/O ์ฅ์น ๊ด๋ฆฌ, secondary storage, mass storage
- HDD – hard disk drive – ๊ธฐ๊ณ์
- SDD – Solid State disk – ์ ๊ธฐ์
- RAM disk – ์ ์ ๊ป๋ค๊ฐ ์ผ๋ฉด, ๋ค ๋ ๋ผ๊ฐ๋ ๋ฉ๋ชจ๋ฆฌ – iptime
- Magnetic tape – data ๋ฐฑ์ ์ฉ๋๋ก ์ฌ์ฉ
- Disk attachment
1) Host attached – ๊ฐ์ธ PC
2) Network attached – ์ฐ๊ตฌ์ค NAS
* Network Attached Storage – NAS
- IP ๋คํธ์ํฌ๋ฅผ ํตํด ์ ๊ทผ / file level access / ์ฌ๋ฌ ์ฌ์ฉ์๋ค์ด ๊ณต์ ํ๋ storage
* Storage Area Network – SAN
- block level access / Use storage protocols SCSI or Fibre channel -> Non-IP networks
- ๋์คํฌ๋ค์ด ๋คํธ์ํฌ๋ก ์ฐ๊ฒฐ๋จ ex) ๋ฐ์ดํฐ ์ผํฐ ์๋ฒ
- SAN์ ํ์ผ ๋จ์์ ๋ฌ๋ฆฌ, ํ๋์ ํฐ ๋์คํฌ, ๋ธ๋ก์ผ๋ก ๋ณด๋ ๊ฒ
- HDD structure
- ํน์ rpm์ผ๋ก ๊ณ์ ๋๋ ์ถ spindle / ๊ธฐ๋ฅ cylinder / platter ํ / platter์ ํ ๋ฉด surface / surface ์์ ๋์ฌ์ track / track์ ์ผ๋ถ๋ถ sector / arm / head
- ํ๋์จ์ด์ ์ผ๋ก cylinder, surface, track, sector ๋๋ฒ ๋์ , logical block ๋จ์๋ก ์ฝ์
* 3๋จ๊ณ๋ก ์ด๋ฃจ์ด์ง๋ disk performance
1) Seek – ๋งค์ฐ ๋๋ฆผ, ๋์คํฌ arm์ ์ํ๋ ์ค๋ฆฐ๋๋ก ์ฎ๊ธฐ๋ ๊ฒ, ๊ธฐ๊ณ์
2) Rotation – ์ํ๋ sector๊ฐ head ๋ฐ์ผ๋ก ์ค๋๋ก ํ์ ํ๋ ๊ฒ, ๊ธฐ๊ณ์
3) Transfer – surface์์ disk controller๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๊ฒ, ์ ๊ธฐ์ ์ ํธ๋ก ์ฝ์ด ๋น ๋ฅด๋ค.
-> Disk scheduling -> minimize seek time // seek time == seek distance
1. FCFS – ๊ฐ์ฅ fair – ํ์ ๋ค์ด์จ ์์๋๋ก ์ฝ๋๋ค. Seek time์ ๊ณ ๋ คํ์ง ์์
+ ํ์ ์ซ์ – Cylinder, track number๋ฅผ ์๋ฏธํ๋ค.
2. SSTF – Shortest Seek Time First
- ํ์ฌ head ์์น์์ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฒ์ ์ ํ – seek time ์ต์ํ
- ์ผ์ข ์ SJF(shortest job first) – ์ด๊ฑด ๋ฏธ๋ฆฌ ์ ์ ์์์ง๋ง, ๋์คํฌ๋ ์์๋ฅผ ๋ฏธ๋ฆฌ ์ ์ ์์
- starvation์ ์ ๋ฐํ ์ ์๋ค.
3. SCAN – ํค๋๋ฅผ ํ์ชฝ์ผ๋ก ์ญ ์ค์บํ์ฌ ์ฒ๋ฆฌ
- ์ผ์ชฝ์ผ๋ก ์ญ -> ์ผ์ชฝ ๋์ ๋๋ฌํ๋ฉด ๋ฐฉํฅ ์ ํ -> ์ค๋ฅธ์ชฝ์ผ๋ก ์ญ
* ๊ฒฐ๋ก
- ์ผ๋ฐ์ ์ผ๋ก๋ – SSTF ์ฌ์ฉ
- disk ์์ฒญ์ด ๋ง๋ค๋ฉด –> SCAN – ๋น๋์ค ์์ฒญ ๊ฐ์ ๊ฒฝ์ฐ // heavy load
+ C-SCAN: ํ๋ฒ์ ์ญ ์ค๋ฅธ์ชฝ ๋๊น์ง ๊ฐ ๋ค์, ์ผ์ชฝ ๋์ผ๋ก ํค๋๋ฅผ ์ฎ๊น – ์ธ๋ชจ์๋ ์ค๋ฒํค๋
+ C-LOOK: ๋ค์ ๋ ์์ฒญ์ด ์๋ค๋ฉด, ๋ฐ๋์ชฝ ๋์ผ๋ก ๊ฐ๋ผ -> C-SCAN + a
- Disk controller (I/O controller)
- BUS์ ์ฐ๊ฒฐ๋์ด, ์ค์ IO ์ฅ์น๋ค์ ์ ์ดํ๋ ์์ ์ปดํจํฐ
- ์์ ์๋ OS๊ฐ ํ๋ ์ผ๋ค์ ๋๋ํด์ง Disk controller๊ฐ ํ๋ ๊ฒ
* Swap Space management
- Swap space – backing store – virtual memory๊ฐ ๋์คํฌ์ ๊ณต๊ฐ์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์ฅ์ ์์ ์ฌ์ฉํจ
- ์๋์ฐ์ ๋ฌ๋ฆฌ ๋ฆฌ๋ ์ค๋ ๋ณ๋์ partition์ ์ก์ / main memory์ 2๋ฐฐ๋ฅผ swap space๋ก ์ก์
* RAID – Redundant Array of Inexpensive Disks = ์ ๋ ดํ ๋์คํฌ๋ฅผ ์ค๋ณตํ์ฌ ๋งค์ฐ ๋ง์ด ๋ฐฐ์น
1. reliability ์ค๋ณตํ์ฌ ์ ์ฅ -> ์ ๋ขฐ๋๊ฐ ์ฌ๋ผ๊ฐ๋ค. (mirroring, shadowing – ๋๊ฐ์ด ์ ์ฅ, or Parity, error correcting codes – ์์๋์ด๋ ๋ณต๊ตฌํ ์ ์๋๋ก)
2. parallelism์ ํตํด ์ฑ๋ฅ ํฅ์ (data striping = bit level vs block level)
1) bit level striping – parallelism – ํ๋์ ์์ฒญ์ ๋ชจ๋ ๋์คํฌ๊ฐ ์ํ / ๋์คํฌ๋ค์ ๊ดํตํ๋ ๊ฐ๋ก๋ก ๊ธธ๊ฒ
2) block level striping – concurrency – 4๊ฐ ์์ญ์ ๋์์ ์ฝ๊ธฐ ๊ฐ๋ฅํ๋ค๋ ์ฅ์ / ๊ฐ ๋์คํฌ ๋ณ๋ก ๋ค๋ฅธ ๋ธ๋ก
-> HDD๋ ํ ๋ฒ์ ๋ง์ด ์ฝ์ด์ผ ์ฑ๋ฅ์ด ์ฌ๋ผ๊ฐ -> ๋ฐ๋ผ์ block level์ด ๋ ์ฐ์
1. RAID 0
- ์ค์ง concurrency๋ง / data๊ฐ ๋ ๋ผ๊ฐ๋ ์๊ดX, ์ฑ๋ฅ์ด ์ค์ํ๋ค / OS๊ฐ ๋์์ 4๊ฐ์ request๋ฅผ concurrentํ๊ฒ ์ฝ๋ ๊ฒ
- non-redundant striping – no reliability (์ ๋ขฐ๋๋ ๋ฌด๊ด)
2. RAID 1
- ์ฑ๋ฅ์ ์ค์X, ์ ๋ขฐ๋๋ง ์ค์ํ๋ค. Mirrored disks – ๋๊ฐ์ด ๋ณต์ฌ๋ณธ๋ง ํ๋ ๋ ๋ง๋ ๊ฒ
3. RAID 2
- bit level (์ฌ์ค ์ ์ฐ์) / error-correcting codes (ECC) – 3๊ฐ๋ก 4๊ฐ ๋ณต๊ตฌ ๊ฐ๋ฅ
/ 4๊ฐ ์ค 3๊ฐ ๊ณ ์ฅ๊น์ง ๋ณต๊ตฌ ๊ฐ๋ฅ
4. RAID 3
- bit level / Parity – 4๊ฐ ์ค ํ๋๊ฐ ๊ณ ์ฅ๋๋ฉด P๋ฅผ ํตํด ๋ณต๊ตฌ ๊ฐ๋ฅ, 4๊ฐ์ค 2๊ฐ ์ด์ ๊ณ ์ฅ ์ ๋ณต๊ตฌ X
5. RAID 4
- block level striping / Parity๊ฐ ๋์ผํ ์ค์ ์๋ค
- write ๋ฐ update ์ P๋ ํจ๊ป ๋ฐ๋์ด์ผ ํ๋ค -> read ์์๋ ๋ฌธ์ X
-> P๊ฐ ์๋ ์ค๋ง ๋๋ฌด ๋ฐ์จ
6. RAID 5 * ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ configuration
- block level / Parity๋ striping (distributed parity)
- ์๋ก ๋ค๋ฅธ ๋์คํฌ๋ค๋ก ๋ฟ๋ฆผ / ๊ณ ์ฅ ์ ์ ๋๋ค๋ฉด RAID 5๋ก ์ถฉ๋ถํ๋ค.
7. RAID 6
- 2๊ฐ๊ฐ ๊ณ ์ฅ๋๋๋ผ๋ ๋ณต๊ตฌํ๊ณ ์ถ๋ค -> RAID 5์์ P๋ฅผ 2๋ก ๋๋ฆฐ ๊ฒ
* ๋์ด ๋ ๋ง๋ค๋ฉด mirroring
8. RAID 0 + 1
-RAID 0 – ๋ธ๋ญ ๋ ๋ฒจ๋ก -> RAID 1 – ๊ทธ ๋ค, ํต์ผ๋ก ๋ณต์ฌ
- ์ด๋, RAID ๋ฉ์ด๋ฆฌ ์ค ํ๋๋ง ๊ณ ์ฅ๋๋ ๋ฉ์ด๋ฆฌ ์ฑ๋ก ๋ ๋ผ๊ฐ
9. RAID 10 (RAID 1 + 0)
- RAID 1 -> ๋จผ์ ๋ณต์ฌํ๊ณ -> ์ดํ RAID 0 – ๋ธ๋ญ์ผ๋ก ์ฒ๋ฆฌ
- ์ฆ ์ค ๋ณ๋ก ๋ณต์ฌ๋ ํํ -> ๊ณ ์ฅ๋ ์ค๋ง ๋ณต์ฌ๋ณธ์ผ๋ก ๋์ฒด๋๊ณ , ๋๋จธ์ง๋ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅํจ
- RAID 0+1๋ณด๋ค ์ฑ๋ฅ์ด ๋ ์ฐ์ํ๋ค.
12. I/O systems
I/O operation
– Direct I/O vs Memory Mapped I/O
- Communicate with registers in I/O controller – MCU (์์ ์ปดํจํฐ)
- IR (instruction register) & DR (data register)
I/O method
- Programmed I/O – ์์ ๋จ์๋ผ๋ฉด CPU์๊ฒ ์ ๋ฌ
- DMA (Direct Memory Access) – ํฐ ๋จ์, ๋์คํฌ์ ์ง์ ์
- Interrupt – ํ๋์จ์ด๊ฐ ์ผ์ ๋๋ด๊ฑฐ๋, I/O event ๋ฐ์ ์ CPU์๊ฒ ์๋ฆผ
- Direct I/O – memory์ I/O ๋ฒ์ค๊ฐ ๋ณ๋๋ก ์กด์ฌ separate address – intel CPU
- Memory Mapped I/O – integrated address – ๋ ๊ฐ๋จํ ๊ตฌ์กฐ – ARM CPU
* I/O Device controller – ์์ ์ปดํจํฐ๋ฅผ ์๋ฏธํ๋ค.
- Device controller (== Host adapter) ex) Disk controller, keyboard controller -> ๋ ๋๋ํด ์ง
+ I/O Performance
- CPU Cache๊ฐ ๊ฐ์ฅ ์ฑ๋ฅ์ด ์ข๋ค / DRAM / SSD / HDD (๋ค๋ก ๊ฐ์๋ก latency ์ฆ๊ฐ)
- Kernel I/O ๊ตฌ์กฐ
- Device์ 1:1 mapping ๋๋ device controller (I/O๋ฅผ ์ง์ ์ปจํธ๋กค) // hardware
- Device Driver –> device๋ฅผ ๊ตฌ๋์ํค๋ software, ๊ทธ ์์ kernel // software
- Device – functionality Progression
- ๊ฐ์ฅ software (flexibility ๋์) application code / kernel code / device-driver code // device controller code (hardware, firm ware) / device code (์ฐ hardware)
- hardware์ ๊ฐ๊น์ธ์๋ก, ๊ฐ๋ฐ ๋น์ฉ ์ฆ๊ฐ, ํจ์จ์ฑ๋ ์ฆ๊ฐ, ์ถ์ํ ๋จ๊ณ๋ ์ฆ๊ฐ, ์์ฑํ๋๋ฐ ์๊ฐ๋ ์ฆ๊ฐ
-> (time, efficiency, development cost, abstraction vs flexibility)
- interrupt handler – interrupt๋ฅผ ์ฒ๋ฆฌ
: ์งง์, ์ค์ํ interrupt๋ฅผ ์ฒ๋ฆฌํ๋ critical actions / non-critical action์ผ๋ก ๋๋๊ณ / ์ดํ OS๊ฐ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ผ๋ก ๋๋จ
- device drivers – device specific code to control each I/O device interacting with device independent I/O software and interrupt handler – ์ฌํํผ ์ด๊ฑด software๋ค!
+ Unix / linux์์ I/O software ๊ฐ๋ฐ ์, special files ํํ๋ก ๊ฐ๋ฐํ๋ค.
* Buffering – CPU๋ ๋น ๋ฅด์ง๋ง, I/O๋ ๋งค์ฐ ๋๋ฆผ -> I/O data๊ฐ buffer์ ์ ์ฅ๋๊ณ , ์ด๋ฅผ CPU๊ฐ ๊บผ๋ด์ ์ฌ์ฉ
- ์ฑ๋ฅ ์ธก๋ฉด์์๋ application์ด ์ง์ ํ๋ ๊ฒ์ด ์ข์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก ์ปค๋์ด I/O ๋๋ฐ์ด์ค๋ฅผ ๊ด๋ฆฌํ๋ค.
(์ปค๋์ ๊ฑฐ์ณ์ user mode, application์๊ฒ ์ ๋ฌ๋๋ ๊ฒ)
* Spooling – ํ๋ฆฐํฐ ์์
- ์ผ๋ฐ์ ์ผ๋ก ๋ฒํผ๋ง์ ์ฌ์ฉํ๋, ํ๋ฆฐํฐ๋ ๋งค์ฐ ๋๋ฆผ, ๋ฐ์ดํฐ ๋ด์ฉ๋ ๋ง๋ค. ๋ฐ๋ผ์ application์์ ํ๋ฆฐํฐ๋ก ๋ณด๋ผ ํ์ผ์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด, ์ปค๋์ ์ ๋ฌํ๊ณ , ์ด๋ฅผ ํ๋ฆฐํฐ๋ก ๋ด๋ณด๋ด๋ ๋ฐฉ์ -> Spooling์ด๋ผ๊ณ ํ๋ค.
13. File System Interface
- ์ฌ์ฉ์ ์ ์ฅ์์์ ํ์ผ ์์คํ
- long term information storage – ์ ์์ด ๊บผ์ง๋๋ผ๋ ์ค๋ ์ ์ง๋์ด์ผ ํ๋ค.
- ํ์ผ๋ค์ logically ์กฐ์งํ๋ค – directory / Sharing๊ณผ protection ๊ธฐ๋ฅ๋ ์์ด์ผ ํจ
* Text file vs binary file
- Text file – ์์คํค ์ฝ๋, .txt, .cpp -> ํ ์คํธ๋ ์์ค ์ฝ๋ ํ์ผ๋ค์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ํ ํ ๊ฒ
- binary file – ๋ฐ์ดํฐ ๊ทธ ์์ฒด๋ก ์๋ฏธ๊ฐ ์๋ ํ์ผ ex) ์คํ ํ์ผ, .hwp ํ๊ธ ํ์ผ (๊ทธ๋ฆผ์ด ์ฝ์ ๋ ๊ฒฝ์ฐ). PPT, word ํ์ผ ๋ฑ๋ฑ ๋๋ถ๋ถ binary ํ์ผ
- file operation system call
Ex) int open, int close, size_t read, size_t write -> ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ file operation system call // OS์๊ฒ ์์ฒญ
- file type
- ์๋์ฐ๋ ํ์ผ๋ช ๋ค์ ๋ถ๋ ํ์ฅ์๋ก file type ์ง์ (.exe, .mp3 ๋ฑ)
- ์ ๋์ค๋ ํ์ฅ์๋ช ์ด ๋ณ ์๋ฏธ X, OS๊ฐ ๊ด๋ฆฌํ๋ค.
* file access
1) sequential access – ์์๋๋ก ๋ฐ์ดํธ๋ค์ ์ฝ๋ ๊ฒ 2) direct access – ๋ด๊ฐ ์ํ๋ ๋ฐ์ดํฐ ์์น๋ก ๋ฐ๋ก ์ด๋, random access 3) record access 4) index access
- ์์ index and relative files
- ํฐ ํ์ผ์์ ์ฐพ์ ์ X -> ์์ index file์์ ๋ด๊ฐ ์ป๊ณ ์ถ์ ์ ๋ณด๋ฅผ ์ฐพ์ ๋ค, ํด๋น ์ ๋ณด์ ์์น๋ก ์ ๊ทผ
- ์์ Index file / ์๋ ์ ๋ณด๊ฐ ์ ์ฅ๋ ํฐ ํ์ผ == relative file (data file)
- ๋ด๊ฐ ์ํ๋ ์์น๋ก ๋จ๋ฒ์ ์ด๋ -> direct access, ๋ ์ฝ๋ ๋จ์๋ก ์ ๊ทผ – record access, ํจ์จ์ ์ผ๋ก ์ ๊ทผํ๊ธฐ ์ํ index access (3๊ฐ์ง ๋ค ์ฐพ์ ์ ์๋ ๊ฒ)
- directory์ ๊ด๋ จ๋ Unix operations – opendir, readdir, seekdir, closedir => ๋ชจ๋ system call
* file system mounting
- window = drive letter ์ํ๋ฒณ ์ฌ์ฉ (C:\, D:\ ๋ฑ๋ฑ)
- ์ ๋์ค/๋ฆฌ๋ ์ค = ์ ๋ถ root directory -> ๋น directory ๋ฐ์ ์๋ก์ด directory๋ฅผ ๋ถ์ธ๋ค. -> ์ฐ ๊ฐ์์ ๋ง์ดํ
- file sharing – Remote File Sharing
- NFS – network file system – ์ ๋์ค์ ํด๋ผ์ด์ธํธ-์๋ฒ ํ์ผ ๊ณต์ ํ์ค ํ๋กํ ์ฝ
- CIFS – windows์์ ์ฌ์ฉํ๋ ํ์ค ํ๋กํ ์ฝ
* Protection
1. Access control list (ACLs) – file ๋ณ๋ก, ์ฌ์ฉ์๋ง๋ค ๊ฐ๋ฅํ ์ฌ๋ถ๋ฅผ ํ์ํ ๋ฆฌ์คํธ (์ธ๋ก ๋ฐฉํฅ)
- ์ง๊ธ ์ฌ์ฉํ๋ ๋ฐฉ์, ๋ชจ๋ ์ฌ์ฉ์๋ฅผ ๋ค ํ์ํ์ง ์๊ณ , ์ฌ์ฉ์๋ค์ grouping
2. Capabilities – ์ฌ์ฉ์ ๋ณ๋ก, ๋ชจ๋ ํ์ผ์ ๋ํ read, write ๋ฑ๋ฑ ๊ฐ๋ฅ์ฑ ์ฌ๋ถ๋ฅผ ๋ฆฌ์คํธ์ ์ ์ฅ
- ํ์ผ์ด ํ๋ ์๋ก ์๊ธธ ๋ ๋ง๋ค, ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์์ -> ๋ณต์ก๋๊ฐ ๋์ ์ฌ์ฉํ์ง ์๋ ๋ฐฉ์
* Access list in Unix/Linux
- ์ ๊ทผ ๋ชจ๋ 3๊ฐ์ง – read, write, execute
- ์ ์ class 3๊ฐ์ง – owner access -> file์ ๋ง๋ ์๊ธฐ ์์ / group access -> ์์ ์ด ์ํ ๊ทธ๋ฃน์ ์ฌ๋๋ค / public access – ๋ชจ๋ ์ฌ๋๋ค
owner access (RWX 111) / group access (RWX 110) / public access (RWX 001) -> ํ์ผ ํ๋ ๋น 9bit ํ์
ex1) chmod 761 game // 7 – owner, 6 – group, 1 – public (8์ง์, 0~7๊น์ง ์ต๋ 7 ํํ)
== game์ด๋ ํ์ผ์ permission์ 761๋ก ๋ฐ๊พผ๋ค๋ ์๋ฏธ
ex2) -rw-rw-r-- (owner, group, public)
drwx------ (๋๋ง read, write, execute ๊ฐ๋ฅํ๊ณ , ์๋ฌด๋ X)
14. File System Implementation
15. File System Internals
- ๊ฐ๋ฐ์ ์ ์ฅ์์์ file system
1) in-memory structure
- OS๊ฐ ์ํ๋๋ ๋์, ์ด๋ป๊ฒ file์ application์๊ฒ ์ ๊ณตํ๋๊ฐ?
2) On-disk structure
- ์ด๊ฒ ๋ ์ค์! ์ปดํจํฐ ์ข ๋ฃ ํ์๋ ์ ์ง๋๋ ํ์ผ ์์คํ
2-1) Boot control block – ๋ถํ ์ ํ์ํ ๊ฒ – Boot block (UFS) or Boot Sector (NTFS – ์๋์ฐ)
2-2) Volume control block – file system์ ๋ํ ์ ๋ณด ์ ์ฅ – super block (UFS) / master file table (NTFS)
2-3) Directory structure
2-4) File control block (FCB) – attribute ๊ด๋ฆฌ – i-nodes (UFS), in master file table (NTFS)
* in-memory structure
- ์ ์์ด ์ผ์ ธ, application process๊ฐ OS์๊ฒ system call๋ก ์์ฒญ
- process ๋ณ open file table ๊ฐ๋๋ค. (0 – standard input / 1 – standard output / 2 - standard error) 3๋ฒ๋ถํฐ file descripter -> process๊ฐ file open ํ ๋ ๋ง๋ค, table์ entry๊ฐ ์ฆ๊ฐํ๋ค.
- file table – ์ปค๋์ด ๊ด๋ฆฌํ๋, system wide open file table s
- memory์ ์กด์ฌํ๋ data structure
–> Buffer cache (directory cache – ๋๋ ํ ๋ฆฌ ์ ์ฅ + buffer cache – file data ์ ์ฅ)
-> HDD ํ์ผ ์ค ์์ฃผ ์ฌ์ฉํ๋ ํ์ผ์ main memory์ ์ฌ๋ ค ์ฌ์ฉ
Virtual File System (VFS) – ๊ณตํต์ธ ๋ถ๋ถ์ VFS๋ก ๊ด๋ฆฌ
1) CD-ROM – read์ ์ต์ ํ ๋ CD ROM์ ํ์ผ ์์คํ – ISO 9660 ํ์ค – OS์ ๋ฌด๊ดํ๊ฒ ์ ์๋จ
2) UNIX – UFS (์ ๋์ค ํ์ผ ์์คํ ), FFS (fast file system)
3) Windows – FAT – file allocation table, FAT32(USB), NTFS (ํ์ฌ ๋ชจ๋ ์๋์ฐ OS์ ํ์ผ ์์คํ )
4) Linux – ext2, 3, 4 – extended file system // ๊ธฐ์กด ์ด์์ฒด์ ์ ํธํ์ ์ํด 130๊ฐ์ ํ์ผ ์์คํ ์กด์ฌ
+) ZFS – embedded system – flash memory file system / ๋ถ์ฐ ํ๊ฒฝ์์์ ํ์ผ ์์คํ
* On-Disk Structure – HDD or SSD ๊ฑฐ์ ๋ณํ์ง X
- BIOS – MBR // UEFI (์๋ก์ด ํ์ค) – GPT // OS๊ฐ ๋ถํ ๋ ์ ์๋ partition – active partition
1) boot block – ๋ถํ ๊ณผ ๊ด๋ จ๋ ์ ๋ณด ์ ์ฅ – ์ปค๋์ด ์ ์ฅ๋จ
2) super block – ํ์ผ ์์คํ ๊ณผ ๊ด๋ จ๋ ๋ฉํ ๋ฐ์ดํฐ ์ ์ฅ (์ด ํ์ผ ์ – ํ์ผ ์์คํ ์ ํฌ๊ธฐ, ํ์ ๋ฑ๋ฑ)
3) bitmaps – free space management
4) i-nodes – file ํ๋ํ๋์ ๋ํ metadata (FCB – file control block) / index ์๋ฏธ
5) ์ด ๋ค๋ ๋ชจ๋ data – ์ ์ผ ์ฒซ๋ฒ์งธ ๋ฐ์ดํฐ๊ฐ root directory data // ์ดํ ํ์ผ๊ณผ ๋๋ ํ ๋ฆฌ ๋ฐ์ดํฐ๋ค ์ ์ฅ
* ์๋์ฐ์ format / UNIX – mkfs (make file system) -> ์์ ๊ฐ์ ํ์ผ ์์คํ ์ ํ๋ ๋ง๋ฆ
- Disk block – HDD์ cylinder, surface, track, sector ์์ญ์ ๋๋ฒ ํํ -> disk block ๋๋ฒ๋ก mapping
-> OS์์๋ ๋ค์๊ณผ ๊ฐ์ด disk block ๋จ์๋ก ๊ด๋ฆฌํ๋ค. (ํฌ๊ธฐ๋ 4KB)
- ์ด๋ฌํ ๋งคํ ๊ด๋ฆฌ๋ disk controller๊ฐ ํ๋ค. ์ด์์ฒด์ ๋ 0๋ฒ๋ถํฐ 1M – 1 ๊ฐ์ ๋์คํฌ block์ ๊ด๋ฆฌํ๋ค.
- 4GB HDD๊ฐ ์์ ๋, 4KB์ ๋์คํฌ block์ด 1M๊ฐ (2^20๊ฐ) ์๊ธด๋ค.
* Free Space Management – bitmap block // ์ฌ์ฉ ์ค 1 or not 0 -> block ๋น 1 bit๋ก ํํ ๊ฐ๋ฅ
- block size – 4KB (2^12 byte), disk size – 1GB (2^30 byte) -> 2^18 bit ๊ฐ (byte๋ก ๋ณํ ์, 2^15 byte, 32KB)
-> ์ด๋ฌํ ์์ disk block๋ค์ ์ด๋ป๊ฒ ๊ด๋ฆฌํ ๊ฒ?
- Linked list (free list) – HDD๋ flash memory ๊ธฐ๋ฐ์ SSD๋ณด๋ค ๋ ๊นจ์ง๊ธฐ ์ฝ๋ค (์ถฉ๊ฒฉ์ ์ฝํจ)
-> ์ด ๋ฐฉ๋ฒ์ ์ ์ฌ์ฉํ์ง X / bit map ๋ฐฉ์ ํ์ฉ // ์ค๊ฐ์ ๊ณ ์ฅ ๋๋ฉด, ๊ทธ ๋ค๋ ์น ๋ ๋ผ๊ฐ
- ZFS – ๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ถ์ฐ ํ์ผ ์์คํ / space map๊ณผ ๊ฐ์ ๋ค๋ฅธ ์๋ฃ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ค.
* File control block (FCB) – i-nodes – ํ์ผ์ด ํ๋ ์์ฑ๋ ๋ ๋ง๋ค ์๋์ ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ -> FCB
- ์๋์ฐ OS์ ๊ฒฝ์ฐ master file table // UNIX – i-nodes (UFS – Unix file system)
- directory implementation – ๋๋ ํ ๋ฆฌ๋ ์ด๋ค ๋ฐ์ดํฐ ์ ์ฅ? 1) file ์ด๋ฆ 2) file์ metadata (FCB)
1) in the directory table – ํ์ผ ์ด๋ฆ๊ณผ ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ์น ๋ค ์ ์ฅํ๋ ๋ฐฉ์
2) in the separate data structure (i-nodes) // UNIX / LINUX์์ ์ฌ์ฉํ๋ ๋ฐฉ์
- ํ์ผ ์ด๋ฆ๊ณผ, FCB(i-nodes)์ ์์น๋ฅผ ์ ์ฅํ๋ค. -> ๋ฐ๋ผ๊ฐ๋ฉด ๋ฉํ ๋ฐ์ดํฐ๊ฐ ๋์ค๋ ๊ฒ
3) a hybrid approach – ์๋์ฐ – ํ์ผ ์ด๋ฆ๊ณผ + FCB ์์น์ + ๋๋ถ์ด ์ค์ ์ ๋ณด๊น์ง ์ค๋ณต์ผ๋ก ์ ์ฅ
Ex) ์๋์ฐ ํ์๊ธฐ์์ ํ์ผ์ ๋ํ ๊ฐ๋ตํ ์ ๋ณด๋ฅผ ๋์ธ ๋ – FCB์ ๊ฒน์น๋ ๋ด์ฉ์ ์๊ฒ ์ ์ฅํ๊ณ ์์
* Allocation methods – file data๊ฐ ์ด๋ป๊ฒ ๊ด๋ฆฌ๋๋๊ฐ?
- ๊ฐ์ฅ ์ค์ํ ๊ฒ์, ์ด file data๊ฐ ์ด๋์ ์ ์ฅ๋์๋ ์ง ์๋ ๊ฒ
Ex) file size 40KB -> 4KB ํฌ๊ธฐ์ disk block 10๊ฐ๊ฐ ํ์ํ ๊ฒ -> ์ด๊ฒ ์ด๋์ ์ด๋ป๊ฒ ์ ์ฅ๋๋๊ฐ?
-> 4MB, MP3์ ๊ฒฝ์ฐ 1K ๊ฐ๊ฐ ํ์ํ๋ค.
-> contiguous / linked / indexed allocation ๋ฐฉ์์ด ์กด์ฌํ๋ค.
1) Contiguous allocation / ์์ ์์น์ ๊ธธ์ด๋ง ์์ผ๋ฉด ์ฐพ์ ์ ์๋ค – ์ฝ๊ณ , simple ํ๋ค๋ ์ฅ์
- file ์ด๋ฆ + FCB (file control block์ ์์ ์์น์ ๊ธธ์ด ์ ์ฅ)
- file์ data๊ฐ ์ถ๊ฐ๋ ๊ฒฝ์ฐ, ํ์ผ์ด ๋ ์ปค์ง๋ฉด ์์ ์ด ์ด๋ ค์ -> ์ฐ์์ผ๋ก block๋ค์ ์ ์ฅํ๋ค ๋ณด๋, ๋ ํฐ ๋น๊ณต๊ฐ์ผ๋ก ์ฎ๊ฒจ์ผ ํจ – ํ์ผ์ด ์์ฑ๋๊ณ , ์ฌ๋ผ์ง๋ ํ๊ฒฝ์์๋ ์ฌ์ฉํ๊ธฐ ์ด๋ ต๋ค. // dynamic allocation ๋จ์
Ex) ์ฝ๊ธฐ ์ ์ฉ CD-ROM์ ์ฌ์ฉ
2) Linked Allocation / ์ฐ์์ ๋ฐฐ์น๋ฅผ ๋ถ์ฐ์์ ์ผ๋ก ๋ฐฐ์น
- block์ ์์ ์ ๋ฐ์ดํฐ์ ํจ๊ป ๋ค์ block์ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ฅผ ์ ์ฅํ๋ค.
- ์ด ๋ํ ํ์ผ ์ด๋ฆ๊ณผ ์์ block ์์น๋ง ์ ์ฅํ๋ฉด ๋์ด, ํ๊ธฐํ๊ธฐ ์ฝ๋ค๋ ์ฅ์ ์ด ์๋ค.
+ contiguous์ ๋ฌ๋ฆฌ, dynamicํ ํ์ผ์๋ ์ ์ฉ ๊ฐ๋ฅํ ์ฅ์
- ๋จ์ – sequentialํ๊ฒ ์ ์ฅ๋ ์คํ ํ์ผ์ OK -> data file, random access -> ์๋ถํฐ ๋ค ์ฝ์ด์ผ ํ๋ ๋ฌธ์ ์
+ ์ค๊ฐ์ ๊ณต๊ฐ์ด ํ๋ ๋ ๋ผ๊ฐ๋ฉด ๋ชป์ด๋ค. ์ ๋ขฐ๋ ์ธก๋ฉด์์ ํฌ์ธํฐ๊ฐ ์์๋ ๊ฒฝ์ฐ, ์ ๋ขฐ๋ ์ธก๋ฉด์์ ๋ฌธ์
+ File Allocation Table (FAT)
- ์ด์ ๋ฐฉ์์์ block์ pointer ๋ค์ ๋ชจ๋ ๋ชจ์์, ๋ณ๋์ ํ ์ด๋ธ๋ก ๋ง๋ค์ด ๊ด๋ฆฌ // 2~3 ์ค์ผ๋ก ๊ด๋ฆฌ
- ์์์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ํ ์ด๋ธ์ ์ฌ๋ฆฌ๊ณ cache // linked allocation์ random access ๋ฌธ์ ๋ ํด๊ฒฐ ๊ฐ๋ฅ
- ํ์ง๋ง ์ฌ์ ํ ์ ๋ขฐ๋ ๋ฌธ์ ์กด์ฌ
+ FAT16 (DOS ์์ , disk block์ ํํํ๋ ํฌ๊ธฐ๊ฐ 16 bit)
vs FAT32 (32 bit๋ก ๋๋ฆฐ ๊ฒ, USB์์ ์ฌ์ฉ, ์๋์ฐ๋ ์ฌ๊ธฐ์์ NTFS๋ก ๋์ด๊ฐ ๊ฒ)
3) Indexed Allocation – i-nodes -> index node
- ๋ณ๋์ disk block์ ์ญ ์ ์ฅ / ์ด ํ์ผ์ด ์ด๋ ์๋์ง / ๋ ๋ผ๊ฐ๋๋ผ๋ ์ด ํ์ผ ํ๋๋ง ๋ ์๊ฐ
- random access ์ฉ์ด // reliability ์ฅ์
-> ์ํ์ฒ๋ผ ํฐ ์ ๋ค์ ์ด๋ป๊ฒ ์ ์ฅ?
* Indexed allocation – combined scheme – UFS (block์ 4KB, ์ฃผ์๋ 32 bit – 4Byte)
1) direct blocks – data ์์น๊ฐ ์ด๋์ ์๋์ง ์ง์ ์ฐ๋ ๊ฒ / 12๊ฐ, ์ฆ 48KB๊น์ง ์ปค๋ฒ ๊ฐ๋ฅ)
2) single indirect – 32bit integer – 4byte -> 4KB disk block ํ๋์, 1K๊ฐ์ block address ํํ ๊ฐ๋ฅ (1024๊ฐ)
-> ๋ฐ๋ผ์ 1K๊ฐ * 4KB (4MB) ์ปค๋ฒ ๊ฐ๋ฅ
3) double indirect – single indirect ๊ตฌ์กฐ๊ฐ 1K ๊ฐ -> 4B * 1K * 1K = 4GB
4) triple indirect – 4B * 1K * 1K * 1K = 4TB
* Unix file system (UFS) ๊ตฌ์กฐ – ์์ฃผ ๋ง์ disk block์ ์ฝ์ด์ผ ์คํ ๊ฐ๋ฅ
i-node(0): root directory -> root data์ ๋ฒ์ง ์๋ฅผ ์ฐพ์ ๊ฐ๋ค. -> directory ์์ /bin ์ ์ฐพ์ ์ฝ๋๋ค -> /bin์ i-node -> ํด๋น ๋๋ ํ ๋ฆฌ์ data๋ฅผ ์ ์ฅํ๋ directory์์ ๋ด๊ฐ ์ฝ์ด์ผ ํ ํ์ผ a.out์ ์์น๋ฅผ ์ฐพ๋๋ค -> a.out์ i-node -> ์ฌ๊ธฐ์ single direct block 12๊ฐ + double indirect block ๋ฑ๋ฑ
- ls ๋ช ๋ น์ด -> ์ฒ์์๋ HDD์์ ์ฝ์ -> ์ดํ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ cache -> ์ฑ๋ฅ ํฅ์
* Block size performance vs efficiency
- block size ํฌ๊ธฐ๊ฐ ํด์๋ก, HDD๋ ํ๋ฒ ์์ง์ฌ ๋ง์ด ์ฝ์ด์ผ ํ๋๊น ์ฑ๋ฅ์ด ์ฆ๊ฐํ๋ค.
- ํ์ง๋ง ์ฑ๋ฅ ์ธก๋ฉด์์, block size๊ฐ ์ฆ๊ฐํ๋ฉด internal fragmentation ์ฆ๊ฐ -> utilization ๊ฐ์
- ์ฑ๋ฅ๊ณผ utilization์ด trade off๊ฐ ์๋ค -> ํ์ฌ ์ ์ ํ 4KB๋ก disk block size๊ฐ ์ ํด์ง
+ SSD = ์ ๊ธฐ์ ๋์์ผ๋ก, ๋ง์ด ์ฝ๋ ๊ฒ๊ณผ ๋ฌด๊ดํ๋ค. ๋ฐ๋ผ์ utilization๋ง ๊ณ ๋ คํ๋ฉด ๋๋ค.
* Read ahead – sequentialํ๊ฒ ์ฝ์ ๊ฒฝ์ฐ, ํ์ผ ์์คํ ์ด ํ๋ก์ธ์ค๊ฐ ํ์ํ disk block๋ค์ ๋ฏธ๋ฆฌ ์ฝ์ด, cache
* Buffer Cache – HDD์์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฒ๋ค์ main memory์ cache (SSD๋ ์บ์ ํจ๊ณผ์ )
- 4MB๋ง ์บ์ ํ๋๋ผ๋, ๋งค์ฐ ํจ๊ณผ์ ์ด๋ค.
- Synchronous write – ๋ณ๊ฒฝ ์ฌํญ์ ์บ์์ ์ฐ๊ณ , HDD์๋ ๋์์ ์ฐ๋ฉด – ์ฑ๋ฅ ํฅ์ X (write through)
- Asynchronous write – ๋ชจ๋ ๋ชจ์ ํ๋ฒ์ HDD์ ์ฐ๋ฉด ์ฑ๋ฅ ํฅ์ O (Write behind, write back)
-> ํ์ง๋ง unreliable – main memory๋ง ๋ฐ๋๊ณ , HDD๋ ๋ฐ์๋์ง ์์๋๋ฐ, ์ ์ or ๋น์ ์์ ์ธ ์ข ๋ฃ ๋ฐ์ ๋ฑ
* Reliability – ๋ณต๊ตฌํ๋ ๊ฒ – utility ํ๋ก๊ทธ๋จ์ด ํ์ผ ์์คํ ์ ์ผ๊ด์ฑ์ ์ฒดํฌํ๋ ๊ฒ
UNIX – fsck (file system check) // Window – scandisk -> ๋น์ ์์ ์ธ ์ข ๋ฃ๋ฅผ ๋ณต๊ตฌ
* Journaling file system (Log Structured File Systems)
- Linux ext3 ์ดํ // ์๋์ฐ NTFS ๋ฑ – ํ์ฌ OS๋ค์ด ์ฌ์ฉํ๋ ๋ฐฉ์
- ํ์ผ ๋ณ๊ฒฝ์ ๋ํ ์์ฝ ์ ๋ณด๋ง journal์ด๋ผ๋ ๊ณณ์ ์ ์ฅ -> ์ดํ HDD์ ์ฐ๊ณ , ์ ๋์ ์ญ์
- ๋ถํ ์ ์ ๋์ด ๋น์ด์ผ ์ ์ / ์ ๋์ด ์ฐจ ์๋ค๋ฉด -> HDD์๋ ์ฐ์ง ์์ ์ํ์ธ ๊ฒ -> ๋น์ ์์ ์ธ ์ํฉ์ ๊ฐ์งํ ์ ์๋ค.
* remote file system
-> ๋คํธ์ํฌ๋ก ์ฐ๊ฒฐ๋ ์ปดํจํฐ์ ํ์ผ ์์คํ ์ ๋ง์น ๋ด ํ์ผ ์์คํ ์ฒ๋ผ ์ฌ์ฉํ๋ ๊ฒ
- VFS (virtual file system) – ๊ณตํต์ธ ๊ฒ์ ๋ํ interface
- NFS (network file system) – ๋ง์ดํธํ์ฌ ๋ด ์ปดํจํฐ์์ ๋ก์ปฌ ํ์ผ ์์คํ ์ฒ๋ผ ์ฌ์ฉ ๊ฐ๋ฅ
+ RPC – ๋ค๋ฅธ ์ปดํจํฐ์ ์ฝ๋๋ฅผ ์คํ์ํค๊ธฐ ์ํ C/Cpp ๊ธฐ์ ์๋ฏธ (remote procedure call)
16. Security
- Security requirement triad (CIA triad)
1. Confidentiality – ๊ธฐ๋ฐ์ฑ, ์ํธํ / 2. Integrity – ๋ฌด๊ฒฐ์ฑ, ๋ณ์กฐ๋์ง ์์ / 3. Availability – ๊ฐ์ฉ์ฑ (์๋น์ค ์ฃฝ์X)
* ์ฉ์ด ์ ๋ฆฌ
- Vulnerability – ์ทจ์ฝ์ / Threat – ์ํ / Attack – ๊ณต๊ฒฉ / Adversary – ์ , attacker / Countermeasure – ๋์์ฑ
- CIA + Authentication – ์ธ์ฆ / Access control – ์ ๊ทผ ๊ถํ / Nonrepudiation – ๋ถ์ธ ๋ฐฉ์ง
* Cracker’s basic step
1. gather information 2. Use port scanner 3. Get a login account – authentication์ ํตํด ์ ๋ฒํ ์ฌ์ฉ์๊ฐ ๋จ
4. Get root privilege – ๋ฃจํธ ๊ถํ์ ์ป๋ ๊ฒ์ ์ด๋ ต์ง ์๋ค 5. Backdoor – ์ธ์ ๋ ์ง ์ ๊ทผํ ์ ์๋๋ก ๋ฐฑ๋์ด
* Physical security
1) Hardware security – ์์คํ , ํ๋์จ์ด ์ฌ์ฉ์ ๋ํ ๋ณด์ – smart card / bio-metric access control
2) BIOS security – ๋ถํ ์ firmware ๋จ๊ณ์์ ๋น๋ฐ๋ฒํธ – ์๋ฌด๋ ์ด๋ ๊ฒ ์ฌ์ฉ X
3) Session security – ํ์ฌ์์ ์๋ฆฌ ๋น์ธ ๋, screen saver
* Account security
1) Authentication – ์ธ์ฆ – password – CHAP (Challenge Handshake Authentication protocol)
- ๋ณต์กํ ๋น๋ฐ๋ฒํธ๋ก ์ค์ ํ์ฌ, brute force๋ก ๊นฐ ์ ์๋๋ก ์ต๊ทผ์ ์ฌ์ฉ
2) Authorization – ๊ถํ – access control – Access Control List (ACLs) vs Capabilities (์ฌ์ฉ์ ๋ณ)
* File System Security – Unix, Linux
– setuid, setgid – ๋ณด์์ ์ทจ์ฝํ ํ๋ก๊ทธ๋จ์ผ๋ก ํน๋ณํ ์ ๊ด๋ฆฌํด์ผ ํจ
- search path๋ฅผ ์ด์ฉํ ๊ณต๊ฒฉ ๋ฑ ๋ค์ํ ๊ณต๊ฒฉ์ด ์์๋ค -> ์ด์ ๋ํ ๋ค์ํ countermeasures (๋์์ฑ ) ์กด์ฌ
* Network Security - File System Security๋ณด๋ค ๋ ์ค์
1) application layer – https๋ฅผ ์ฌ์ฉํด๋ผ
2) transport layer – SSL (Secure socket layer)
3) Network layer – IPSec Protocol – IPv6์ ํ์, 4๋ optional – IPv4 ์ธ์ -> ์ ๋๋ก ์ฌ์ฉ๋๊ณ ์์ง X
- TCP Wrapper – ํน์ IP/Port ์์๋ง ๋ค์ด์ฌ ์ ์๋ค. ๋ค๋ฅธ ๊ฒฝ๋ก๋ฅผ deny ๊ฐ๋ฅ
- Firewall (๋ฐฉํ๋ฒฝ) – ๋ณ๋์ ์ฅ๋น๋ฅผ ํ์ฉํ์ฌ network security – public internet์์ ๊ฒฝํฌ๋๋ก ์ค๋ Packet ์ค ์ด์ํ packet์ drop ๊ฑฐ๋ฅด๊ณ , ์ ํฉํ packet๋ง ๋ค์ฌ๋ค ๋ณด๋ธ๋ค.
+ DMZ – ์ธ๋ถ ์ฌ์ฉ์์๊ฒ ์๋น์ค ์ ๊ณต ์, ๋ด๋ถ ์ธํธ๋ผ๋ท์ ์ ๊ทผ ๋ถ๊ฐ๋ฅ, DMZ๋ฅผ ํตํด ์๋น์ค ์ ๊ณต
- detection – ์นจ์ ๊ฐ์ง vs prevention ์์ฒ ๋ด์
- IDS – Intrusion Detection System – ์๋ฒ ๋ฐ ๋ฐฉํ๋ฒฝ์ ์ํ / ์ธ๊ณต์ง๋ฅ, ๋ฅ๋ฌ๋
- IPS – Intrusion Prevention System – WIPS – ํน์ ์ง์ญ LTE ๋๊น
* Security Treats
- Physical threats – ์์ฐ ์ฌํด / Logical threats – ์ปดํจํฐ ์ํํธ์จ์ด ๋ฒ๊ทธ, ์ทจ์ฝ์ // ์ฌ๋ผ์ง ์ X
- Operational threats – ๊ด๋ฆฌ์ ์ค์ / Denial of service – ์ปดํจํฐ์ ์๋น์ค ์ ๊ณต์ ๋ง๋ ๊ฒ (DOS)
* Attacks
- Virus – ํผ์์ ์คํ X, ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ๊ธฐ์ / Worm – ๋ ๋ฆฝ์ ์ธ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ฒ์ ๊ฐ๋ฅ -> ๋ ๋ค ์ ์ฑ์ฝ๋
- Trojan horses ํธ๋ก์ด ๋ชฉ๋ง – ์ฌ๋ฏธ์๋ ๋ค์ด๋ก๋ – ๋ฉ์จ์ด ์ค์น / Logic bomb – ๊ฐ๋ฐ์ ํด๊ณ ์ ์์คํ ๋ ๋ผ๊ฐ
- Trap door – backdoor ๋ชฐ๋ ๋ค์ด๊ฐ ๊ฒฝ๋ก ๋ซ๊ธฐ / Dictionary attack – brute force๋ก password ๊นจ๊ธฐ
- Logic spoofing – ํผ์ฑ
- Malware – ์ ์ฑ์ฝ๋ / Spyware – ์ค์ ์ ๋ณด ๋นผ๊ฐ๊ธฐ / Ransomware – ์ค์ ๋ฌธ์ ์ํธํ, ๋ ์๊ตฌ
- Keystroke logger – ์ฌ์ฉ์์ ๋ชจ๋ ์ ๋ ฅ ์ ๋ฌ / Code injection – ๋ฉ์จ์ด๋ฅผ ์์คํ ์ ์ฃผ์
- Dos / DDos – distributed denial of system – ๋ถ์ฐ์ ์ผ๋ก dos ๊ณต๊ฒฉ
* the Morris Internet Worm – ์ธ๊ณ ์ต์ด๋ก UNIX ๋ฉ์จ์ด ๊ฐ๋ฐ – ์ค์ค๋ก ๋ณต์ ํ๋ worm ํ๋ก๊ทธ๋จ
- finger์ bug๋ฅผ ํตํด worm ์ฃผ์ (code injection)
-> ํ์ฌ ์ด system์ ๋ก๊ทธ์ธํ ์ฌ์ฉ์๋ค์ ๋ํ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ๋ ์๋น์ค
* Buffer overflow – finger ์๋น์ค๊ฐ ๋ฒํผ ์ค๋ฒํ๋ก์ฐ ์ทจ์ฝ์ ์ด ์์๋ค.
- ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ์ปค๋งจ๋๊ฐ argv[1]์ ๋ค์ด๊ฐ -> B๋ผ๋ array์ ์ ๋ ฅ์ copyํ๊ณ , ํ๋ฉด์ ์ถ๋ ฅ
-> 1024๋ณด๋ค ๋ ๋ง์ ๋ฐ์ดํธ๊ฐ ๋ค์ด๊ฐ๋ฉด?
* Code injection ๊ณผ์
- main ํจ์๋ถํฐ stack์ ์์ -> A๋ผ๋ ํจ์ ํธ์ถ ์, A์ local ๋ณ์๋ค์ ์ํ ๊ณต๊ฐ๋ ์คํ์ ์์
- Buffer B ๊ณต๊ฐ๋ (1024 byte) ์คํ์ ์กํ // Code segment์ ์ด๋๊ฐ๋ก return ๋ return address ๊ณต๊ฐ
- ์ฌ์ฉ์๊ฐ 1024 ์ด์์ ์ ๋ ฅ์ ๋ฃ์ผ๋ฉด buffer๊ฐ ๋ ์๋ก write ๋จ -> return address ์์ญ ์นจ๋ฒ
-> ์ ๊ณ์ฐํด์, ๋ด๊ฐ ์ ๋ ฅํ ๊ณณ์ผ๋ก jump -> code ์์ญ์ผ๋ก return์ด ์๋๋ผ ์๊ธฐ ์์ ์ผ๋ก ๋์๊ฐ๋๋ก
-> hello world ์๋ฆฌ์ ์ ์ฑ ์ฝ๋ ์คํ ํ๋ก๊ทธ๋จ์, ์ฆ ์ฝ๋๋ฅผ ์ญ ์ด ๊ฒ
* ๊ทธ๋ฅ ๋์๊ฐ๋ ์ฝ๋๊ฐ ์๋, ์ทจ์ฝ์ ์ด ์๋๋ก Secure coding์ ํด์ผ ํ๋ค!
* IP Spoofing – IP address๋ฅผ ์์ด๋ ๊ฒ
- cracker๋ HOST B์ ์ ์ํ๊ณ ์ถ์ผ๋, ๋ฐ๋ก ์ ์ํ ์ ์์
- HOST A๋, cracker๊ฐ ์๊ณ ์์ผ๋ฉฐ, HOST B์ ์ ์ ๊ฐ๋ฅ
- Denial of Service attack์ผ๋ก A๋ฅผ ๋ฌด๋ ฅํ -> A์ธ ๊ฒ ์ฒ๋ผ cracker๊ฐ B๋ก ํจํท์ ๋ณด๋
- A๋ ๋ฌด๋ ฅํ๋์ด ack๋ฅผ ๋ชป ๋ ๋ฆผ -> cracker์ IP address๋ B์ ์ ์ ๊ฐ๋ฅํ๋๋ก ์กฐ์
* Denial of service attack – ์๋น์ค๊ฐ ๋ถ๊ฐ๋ฅํ๋๋ก ๋ง์
1) internal attack – ๋ฌดํํ Process ์์ฑ – system ๋ค์ด, ๋ง๋น์ํค๊ธฐ / fork, malloc์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ฒญ ๋ง์ด ์
2) external attack – packet์ ๋ณด๋ด๋ ๊ฒ – ๋ฐฉํ๋ฒฝ์ผ๋ก discard (IDS) ๊ฐ๋ฅ
-> DDos์ธ ๊ฒฝ์ฐ, ๋ฐฉํ๋ฒฝ์์ ๊ฐ์งํ ์ ์์. //
* Basic concept of Cryptography
1. Shared Key cryptography – AES ์๊ณ ๋ฆฌ์ฆ
- ๋์ผํ shared key๋ฅผ ์๋ก ๋๋ ๊ฐ๊ณ , ์ํธํ ๋ฐ ๋ณตํธํ๋ฅผ ํ๋ค. (ํค๋ฅผ ๊ฐ์ง ์ฌ๋๋ง ์๋ฌธ์ ๋ณผ ์ ์๋ค.)
- ์ด๋ป๊ฒ shared key๋ฅผ ๊ณต์ ํ ๊ฒ์ธ๊ฐ? ๊ฐ ์ด์
- ์๋์ ์ผ๋ก ์ค๋ฒํค๋๊ฐ ์์, ๊ธด ์ฅ๋ฌธ์ text๋ฅผ ์ํธํํ ๋ ์ฌ์ฉํ๋ค.
2. Public Key cryptography – RSA ์๊ณ ๋ฆฌ์ฆ
- ๋๊ตฌ๋ ๋ค ์ ์ ์๋ public key์ ์๊ธฐ ์์ ๋ง ์๋ private key
2-1) Confidentiality – A๊ฐ B์ ๊ณต๊ฐํค๋ก ์ํธํ – B๋ง ๋ณตํธํ ๊ฐ๋ฅ (๊ธฐ๋ฐ์ฑ)
2-2) Authentication – A๊ฐ ์์ ์ private key๋ก ์ํธํ – ๋๊ตฌ๋ ๋ณตํธํ ๊ฐ๋ฅ – A๊ฐ ๋ง๋ ๋ฌธ์์์ ์ฆ๋ช
- AES๋ณด๋ค RSA๊ฐ ์์ฒญ๋๊ฒ ๋ง์ ๊ณ์ฐ๋ – ์ค๋ฒํค๋ ํฌ๊ณ , ์๊ฐ๋ ์ค๋ ๊ฑธ๋ฆผ / ๋น๊ต์ ์์ data ์ํธํ์ ์ฌ์ฉ
* Network ์ํธํ (TLS/SSL) – ์น ๋ธ๋ผ์ฐ์ (ํด๋ผ์ด์ธํธ)์ ์น ์๋ฒ ์ฌ์ด์ ์ํธํ
1. ํค ๊ตํ
- ์น ๋ธ๋ผ์ฐ์ ๊ฐ AES ํค ์์ฑ – ์น ์๋ฒ์ ๊ณต๊ฐ ํค๋ก ์ํธํ – ์ธํฐ๋ท์ผ๋ก ํจํท ์ ๋ฌ – ์น ์๋ฒ์ private key๋ก ๋ณตํธํํ์ฌ, ์๋ก์ ํค๋ฅผ ๊ณต์ ํ๋ค. (์ค๋ฒํค๋๊ฐ ํฐ RSA ๋ฐฉ์์ด์ง๋ง, ์์ key ๊ฐ์ ์ฃผ๊ณ ๋ฐ์ ๋ ์ฌ์ฉ O)
2. ๋ฐ์ดํฐ ๊ตํ – ๋์ฉ๋, AES ๋ฐฉ์
- ์์ ๊ณต๊ฐํค ๋ฐฉ์์ผ๋ก shared ๋ Key๋ฅผ ๊ณต์ ํ์ฌ, ์ํธํ, ๋ณตํธํ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
* Digital signature – ๋์งํธ ์๋ช
- for authentication & integrity (๋ณ์กฐ๋์ง ์์!) // not confidentiality (๊ธฐ๋ฐ์ฑ๊ณผ ๋ฌด๊ด)
- ex) ๊ณต์ธ ์ธ์ฆ์์ private key๊ฐ ์ ์ฅ๋จ
- ์น ๋ธ๋ผ์ฐ์ ๊ฐ hash๋ฅผ ํตํด data ์์ ์ค์ด๊ณ , ์ด๋ฅผ ์์ ์ private key๋ก ์ํธํ ํ ๋ค, ์๋ฌธ๊ณผ ํจ๊ป ๋ณด๋
- ์น ์๋ฒ๋ ๋์ผํ hash ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๊ณ์ฐํ ๊ฐ์, ๋ธ๋ผ์ฐ์ ๊ณต๊ฐํค๋ก ๋ณตํธํ ํ ๊ฐ๊ณผ ๋น๊ต
-> ์๋ก ๊ฐ์ผ๋ฉด ๋ณ์กฐ๋์ง ์์ ํ์ธ, ์๋ก ๋ค๋ฅด๋ฉด ์๋ฌธ์ด ๋ณ์กฐ๋จ์ ์ ์ ์์
*VPN - Virtual Private Network
- ์ค์บ ๊ตญ์บ ์ฌ์ด์ ์ ์ฉ์ – ๋น์ฉ์ด ๋น์ธ๋ค – ์ค๊ฐ์ public internet์ ํ์ผ ํจ
–> ์ด๋ฅผ software๋ก virtualํ๊ฒ private ์ํธํ
- ์ํธํ ํ ํธ๋ํฝ์ ์ค๊ฐ์ ๋ณผ ์ ์๋ค – ๋ณตํธํ ํ์ฌ ์๋ฌธ์ ์ ๋ฌ๋ฐ์ ์ ์์
'ComputerScience > OperatingSystem' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Paper review] Xen and the Art of Virtualization (0) | 2024.03.15 |
---|---|
1. Virtualization (0) | 2023.09.08 |
[์ด์์ฒด์ ] Security & Cryptography (0) | 2023.06.12 |
[์ด์์ฒด์ ] Paging and Segmentation (0) | 2023.05.15 |
[์ด์์ฒด์ ] Deadlock in DBMS (0) | 2023.04.22 |