reference: kocw์ ๋ฐํจ๊ฒฝ ๊ต์๋ ๊ฐ์์ ๊ถ์ง์ฑ ๊ต์๋ ๊ฐ์(๋ํ ์ ๊ท ์์
)
์์
์ ๋ฃ๊ณ ๋์ ๊ฐ์ ๊ต์ฌ๋ฅผ ํ์ดํํ๊ณ ํ๊ธฐํ ๋ถ๋ถ์ ์ถ๊ฐ์ ์ผ๋ก ์ ๋ฆฌํ์์ต๋๋ค.
์น๋ทฐ์์ toc๋ฅผ ์ ๊ณตํฉ๋๋ค.
github์ md ํ์ผ๋ก ๋ณด๋ ๊ฒ ํธํ์๋ค๋ฉด, ์ฌ๊ธฐ๋ก ์ด๋ํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
-> ์ค์ ์ด๋ป๊ฒ ๊ตฌํ๋์ด ์๋๊ฐ?
*๊ต์๋์ ํ๋ง๋: computer science์์ ๊ณตํต์ ํ๋๋ ์ต์ ํ! Optimization์ด๋ค. (๋น์ฉ์ ์ ๊ฒ, ํจ์จ์ ์ข๊ฒ-์๋๋ ๋น ๋ฅด๊ฒ, ๊ณต๊ฐ ํ์ฉ์ ์ ๊ฒ ๋ฑ)
01 Allocation of File Data in Disk
- Contiguous Allocation
- Linked Allocation
- Indexed Allocation
01-1 Contiguous Allocation
count๋ผ๋ ํ์ผ์ 0์์ ์์ํ์ฌ ๊ธธ์ด๊ฐ 2 - 2๊ฐ์ block์ ์ฐจ์งํ๋ ํ์ผ์ด๋ค.
- ์ฅ์
- fast I/O
- ํ ๋ฒ์ seek/rotation ์ ๋ง์ ๋ฐ์ดํธ transfer
- HDD์์ ํค๋๊ฐ ํ์ํ๋ ๊ฒ์ seek, ์ํ์ด ๋์๊ฐ๋ ๊ฒ์ rotation์ด๋ผ๊ณ ๋งํจ.
- realtime file ์ฉ์ผ๋ก, ํน์ ์ด๋ฏธ ์คํ ์ค์ด๋ ํ๋ก์ธ์ค์ swapping ์ฉ
- ํ ๋ฒ์ seek/rotation ์ ๋ง์ ๋ฐ์ดํธ transfer
- direct access (= random access) ๊ฐ๋ฅ - ์ ๋ณด๊ฐ ์ฐ๊ฒฐ๋์ด ์์ผ๋๊น ๋ฐ๋ก ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
- fast I/O
- ๋จ์
- external fragmentation (์ ์ฅํ์ง ๋ชปํ๋ hole-๋น ๊ณต๊ฐ ๋ฐ์)
- file grow๊ฐ ์ด๋ ค์
- file ์์ฑ ์ ์ผ๋ง๋ ํฐ hole์ ๋ฐฐ๋นํ ๊ฒ์ธ๊ฐ?
- grow ๊ฐ๋ฅํ์ง๋ง ๋ญ๋น (ํ์ผ ํฌ๊ธฐ๊ฐ ์ปค์ง ๊ฒ์ ๋๋นํด์ ๋ฏธ๋ฆฌ ํ ๋น → internal fragmentation)
์ฐธ๊ณ ๋ก, ์ธ๋ถ ์กฐ๊ฐ์ ์๋ฌด๋ ์ฌ์ฉํ์ง ์์ ๋๊ตฐ๊ฐ์๊ฒ ํ ๋น๋ ์ ์๋ ๊ณต๊ฐ์ ์๋ฏธํ๊ณ , ๋ด๋ถ ์กฐ๊ฐ์ ์ด๋ฏธ ํ ๋น์ด ๋๋๋ฐ ์์ง ์ฌ์ฉํ์ง ์๋ ๊ณต๊ฐ์ ์๋ฏธํ๋ค.
01-2 Linked Allocation
jeep ํ์ผ์ 9๋ฒ์์ ์์ํด์ 25๋ฒ์์ ๋๋๋ค๋ ๊ฒ์ ํ์ํด๋์๋ค.
9๋ฒ์ง์ ๋ค์ ๋ฐ์ดํฐ๋ 16๋ฒ์ง์ ์๋ค๊ณ ์จ์ ธ์๋ค.
- ์ฅ์
- external fragmentation ๋ฐ์ X
- ๋จ์
- No direct access (= no random access) - ๊ฐ์ ํ์ผ ๋ด์์ ์ด๋ฒ์งธ ๋ฐ์ดํฐ์ ์ง์ ์ ๊ทผํ ์ ์์
- seek ์ ๋ง์ ์๊ฐ ์์
- reliability ๋ฌธ์
- ์ค๊ฐ์ ํ๋์ ์นํฐ๊ฐ bad sector ๋๋ฉด (์ฝ๊ฒ ๋งํด ๊ณ ์ฅ, pointer ์ ์ค) ๊ทธ ๋ท ๋ถ๋ถ์ ๋ชจ๋ ์์
- ํฌ์ธํฐ๋ฅผ ์ํ ๊ณต๊ฐ์ด block์ ์ผ๋ถ๊ฐ ๋์ด ๊ณต๊ฐ ํจ์จ์ฑ์ด ๋จ์ด์ง
- ๋ณดํต ํ ์นํฐ๋ 512 bytes (๊ทธ๋ฆผ์์ ํ ๊ฐ์ ๋ฒ์ง)๋ก ๊ตฌ์ฑ๋๋๋ฐ ๋ง์ง๋ง 4 bytes์ ๋ค์ ๋ธ๋ญ์ ์ํ ํฌ์ธํฐ๋ฅผ ์ ์ฅํจ์ผ๋ก์จ 508 bytes๋ง ์ ์ฅํ ์ ์๋ ์ํฉ → 1%๊ฐ ํญ์ ์ํด (ํฐ ๊ฐ์ด๋ค!)
๋ณํ: FAT(File-Allocation Table) ํ์ผ ์์คํ
- ํฌ์ธํฐ๋ฅผ ๋ณ๋์ ์์น์ ๋ณด๊ดํ์ฌ reliability์ ๊ณต๊ฐ ํจ์จ์ฑ ๋ฌธ์ ํด๊ฒฐ
- MS-DOS์ OS/2์์ ์ฌ์ฉ
- ์ฐธ๊ณ ๋ก, MS-DOS์์ FAT → winFAT32 → NTFS ๋ก ๊ฐ์ ์์ผ ์ฌ์ฉํ๋ค.
01-3 Indexed Allocation
index๋? ๋ชฉ๋ก
jeep๋ ํ์ผ์ ๊ตฌ์ฑํ๋ ๋ฆฌ์คํธ๋ค์ด 19๋ฒ์ง block์ ๋ค์ด์๋ค.
19๋ฒ์ง์ ๊ฐ๋ณด๋, ์ฒซ๋ฒ์งธ๋ 9๋ฒ์ง, ๋๋ฒ์งธ๋ 16๋ฒ์ง, ... ์ ๊ฐ์ด ๋ชฉ๋ก์ ์๋ ค์ค๋ค.
- ์ฅ์
- external fragmentation ๋ฐ์ X
- direct access ๊ฐ๋ฅ
- ๋จ์
- ํ์ผ์ด ๊ต์ฅํ ์์ ๊ฒฝ์ฐ์๋ ๊ณต๊ฐ ๋ญ๋น (์ค์ ๋ก ๋ง์ ํ์ผ๋ค์ด ๊ต์ฅํ ์์)
- ์ธ๋ฑ์ค๋ฅผ ์ํ ๋ธ๋ก + ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ธ๋ก
- ๊ต์ฅํtoo ํฐlarge ํ์ผ์ ๊ฒฝ์ฐ ํ๋์ ์ธ๋ฑ์ค ๋ธ๋ก์ผ๋ก ๋ชจ๋ ํํ ๋ถ๊ฐ๋ฅ
- ํด๊ฒฐ ๋ฐฉ์
- linked scheme : ๋ง์ง๋ง์ ๋ ๋ค๋ฅธ ์ธ๋ฑ์ค ๋ธ๋ก์ ์์น๋ฅผ ๊ฐ๋ฆฌํด
- multi-level index : ์ธ๋ฑ์ค๊ฐ ๋ ๋ค๋ฅธ ์ธ๋ฑ์ค ๋ธ๋ก์ ๊ฐ๋ฆฌํด
- ํ์ผ์ด ๊ต์ฅํ ์์ ๊ฒฝ์ฐ์๋ ๊ณต๊ฐ ๋ญ๋น (์ค์ ๋ก ๋ง์ ํ์ผ๋ค์ด ๊ต์ฅํ ์์)
02 UNIX์ MS-DOS์ ํ์ผ ์์คํ ๊ตฌ์กฐ
02-1 UNIX(Linux) ํ์ผ ์์คํ ๊ตฌ์กฐ
- Boot block
- ๋ถํ ์ ํ์ํ ์ ๋ณด (bootstrap loader)
- ์ด๋ ํ ํ์ผ ์์คํ ์ด๋ผ๋ 0๋ฒ ๋ธ๋ก์ด boot block
- Super block
- ํ์ผ ์์คํ
์ ๊ดํ ์ด์ฒด์ ์ธ ์ ๋ณด
- ์ด๋๊ฐ ๋น ๊ณต๊ฐ์ธ์ง, ์ด๋๊น์ง๊ฐ inode list์ธ์ง ๋ฑ
- ํ์ผ ์์คํ
์ ๊ดํ ์ด์ฒด์ ์ธ ์ ๋ณด
- Inode (์ค์!)
- ํ์ผ ํ๋ ๋น inode ํ๋ ํ ๋น
- ํ์ผ ์ด๋ฆ์ ์ ์ธํ ํ์ผ์ ๋ชจ๋ ๋ฉํ๋ฐ์ดํฐ ์ ์ฅ (ํ์ผ ์ด๋ฆ์ data block์ ์ ์ฅ)
- direct blocks๋ ๋ฐ๋ก data block์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ฅดํค๊ณ , single indirect๋ index 1๊ฐ๋ฅผ ๊ฐ์ง๊ณ , double์ index๋ฅผ 2๋จ์ผ๋ก ๊ฐ๋๋ค.
- Data block
- ํ์ผ์ ์ค์ ๋ด์ฉ์ ๋ณด๊ด
- directory file
- (ํ์ผ ์ด๋ฆ, inode ๋ฒํธ)
02-2 MS-DOS ํ์ผ ์์คํ ๊ตฌ์กฐ
ms-dos์ windows ๊ณ์ด
์ฐจ์ด์ : FAT๊ณผ Root directory
- Root directory๋ ๋ง ๊ทธ๋๋ก C:, D: ์ ์๋ฏธํ๋ค.
- FAT: File Allocation Table
- FAT์ linked allocation์ ์กฐ๊ธ ๋ณํํ ๊ฒ์ด๋ค.
- linked allocation์์๋ ์ค๊ฐ์ ํ๋์ ์นํฐ๊ฐ bad sector ๋๋ฉด ๊ทธ ๋ค์ ์๋ ํ์ผ๋ค์ ์ฝ์ง ๋ชปํ๋ค๊ฑฐ๋ ํฌ์ธํฐ์ ์ ์ฅ์ผ๋ก ๊ณต๊ฐ ํจ์จ์ฑ์ด ๋ฎ์์ง๋ ๋จ์ ์ด ์์๋ค. ๋ค์ ๋ธ๋ก์ ์์น ์ ๋ณด๋ฅผ ๋๋ ํ ๋ฆฌ ํ์ผ์ ์ ์ฅํ์ง ์๊ณ FAT์ ์ ์ฅํด๋ ์ผ๋ก์จ ์ด๋ฌํ ๋จ์ ์ ํด๊ฒฐํ๊ณ direct access ๋ํ ๊ฐ๋ฅํ๋ค.
03 Free-Space Management
์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ: Bit map or bit vector
- ํด๋น ๋ธ๋ก์ด ์ฌ์ฉ์ค์ธ์ง ์๋์ง๋ฅผ ๋นํธ๋ก ํํ
- bit[i] = 0 : block[i] free
- bit[i] = 1 : block[i] occupied
- ์ฅ์ : ์ฐ์์ ์ธ n๊ฐ์ free block ์ ์ฐพ๋ ๋ฐ ํจ๊ณผ์
- ๋จ์ : bit map์ ๋ถ๊ฐ์ ์ธ ๊ณต๊ฐ์ ํ์๋ก ํจ
๋๋ฒ์งธ ๋ฐฉ๋ฒ: Linked list
- ๋ชจ๋ free block ๋ค์ ๋งํฌ๋ก ์ฐ๊ฒฐ
- ์ฅ์ : ๊ณต๊ฐ ๋ญ๋น๊ฐ ์์
- ๋จ์ : ์ฐ์์ ์ธ ๊ฐ์ฉ๊ณต๊ฐ(๋น๊ณต๊ฐ)์ ์ฐพ๊ธฐ๋ ์ด๋ ค์
์ธ๋ฒ์งธ ๋ฐฉ๋ฒ: Grouping
- indexed list ๋ฐฉ๋ฒ์ ๋ณํ
-
- ์ฒซ๋ฒ์งธ free block์ด n๊ฐ์ pointer๋ฅผ ๊ฐ์ง
- n-1 pointer (0, 1, ... , n-1)๋ free data block์ ๊ฐ๋ฆฌํด
- ๋ง์ง๋ง pointer๊ฐ ๊ฐ๋ฆฌํค๋ block์ ๋ ๋ค์ n pointer๋ฅผ ๊ฐ์ง
๋ค๋ฒ์งธ ๋ฐฉ๋ฒ: Counting
- ํ๋ก๊ทธ๋จ๋ค์ด ์ข ์ข ์ฌ๋ฌ ๊ฐ์ ์ฐ์์ ์ธ block์ ํ ๋นํ๊ณ ๋ฐ๋ฉํ๋ค๋ ์ฑ์ง์ ์ฐฉ์
- (first free block, # of contiguous free blocks) ์ ๋ณด๋ฅผ ์ ์ง
- ex) (31, 5) 31๋ฒ์ง block๋ถํฐ 5๊ฐ์ free block ์์
- ์ฐ์์ ์ธ free block ์ ์ฐพ๋๋ฐ ํจ๊ณผ์
04 Directory Implementation
๋ชจ๋ ๋ฐฉ๋ฒ์ trade off (์ฅ์ ์ด ์์ผ๋ฉด ๋จ์ ์ด ์๊ณ )
๊ธฐ์ค: performance(์ฑ๋ฅ-์๋ํฌํจ)/์ ์ฅ๊ณต๊ฐ/๋น์ฉ
- Linear list
- <file name, file์ metadata>์ ๋ฆฌ์คํธ
- ๋๋ ํ ๋ฆฌ ๋ด์ ํ์ผ์ด ์๋์ง ์ฐพ๊ธฐ ์ํด์๋ linear search ํ์
- ๊ตฌํ์ด ๊ฐ๋จํ์ง๋ง ์๊ฐ์ด ์ค๋ ๊ฑธ๋ ค ๋นํจ์จ์
- Hash Table
- linear list + hashing
- file name์ ์ด ํ์ผ์ linear list ์์น๋ก ๋ฐ๊พธ์ด์ค
- search time์ ์์ ์ ํจ์จ์ ์ด์ง๋ง ํด์ ํน์ง ์ collision ๋ฐ์ ๊ฐ๋ฅ
- File์ metadata ๋ณด๊ด ์์น
- ๋๋ ํ ๋ฆฌ ๋ด ์ง์ ๋ณด๊ดํ๊ฑฐ๋
- ๋๋ ํ ๋ฆฌ์๋ ํฌ์ธํฐ๋ฅผ ๋๊ณ ๋ค๋ฅธ ๊ณณ์ ๋ณด๊ดํ ์ ์๋ค.
- ex) inode, FAT ๋ฑ
- Long file name์ ์ง์
- <file name, file์ metadata>์ list์์ ๊ฐ entry๋ ์ผ๋ฐ์ ์ผ๋ก ๊ณ ์ ๋ ํฌ๊ธฐ
- ํ์ผ ์ด๋ฆ์ด ์ํธ๋ฆฌ ๊ธธ์ด๋ณด๋ค ๊ธธ์ด์ง๋ ๊ฒฝ์ฐ ์ํธ๋ฆฌ ๋ง์ง๋ง ๋ถ๋ถ์ ํฌ์ธํฐ๋ฅผ ๋๋ ๋ฐฉ๋ฒ
- ์ด๋ฆ์ ๋๋จธ์ง ๋ถ๋ถ์ ๋์ผํ ๋๋ ํ ๋ฆฌ ํ์ผ ์ผ๋ถ์ ์กด์ฌ
05 VFS and NFS
VFS (Virtual File System)
- ์๋ก ๋ค๋ฅธ ๋ค์ํ file system์ ๋์ผํ ์์คํ ์ฝ ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ ๊ทผํ ์ ์๊ฒ ํด์ฃผ๋ OS์ layer
- ๋ค์ํ file system (HDD, CDROM, NTFS ๋ฑ) ์ด๋์ ์ ์ฅ๋๋ ์๊ด์์ด ํ์ผ ์์น๋ง ์ ๋๋ก ์๋ ค์ฃผ๋ฉด ์ ๊ทผํ ์ ์๋ค.
NFS (Network File System)
- ๋ถ์ฐ ์์คํ ์์๋ ๋คํธ์ํฌ๋ฅผ ํตํด ํ์ผ์ด ๊ณต์ ๋ ์ ์๋ค
- ์ฆ ๋คํธ์ํฌ๋ฅผ ํตํด ์ฐ๊ฒฐ๋ ๋ค๋ฅธ ํ์ผ ์์คํ ์ ์ ๊ทผํ๋๋ก ํด์ค๋ค
- NFS๋ ๋ถ์ฐ ํ๊ฒฝ์์์ ๋ํ์ ์ธ ํ์ผ ๊ณต์ ๋ฐฉ๋ฒ์ด๋ค
- ํ์ผ ์์น๋ง ์ ๋๋ก ์๋ ค์ฃผ๋ฉด ๋คํธ์ํฌ๋ฅผ ํ๊ณ ๋ค๋ฅธ ์๋ฒ์ ์์ฒญํด์ ์ํ๋ ํ์ผ์ ์ป์ ์ ์๋ค. ex) google drive -> network drive
06 Page Cache and Buffer Cache
Page Cache
- Virtual memory์ paging system์์ ์ฌ์ฉํ๋ page frame์ caching ๊ด์ ์์ ์ค๋ช ํ๋ ์ฉ์ด
- Memory-Mapped I/O๋ฅผ ์ฐ๋ ๊ฒฝ์ฐ, file์ I/O์์๋ page cache ์ฌ์ฉ
Buffer Cache
- ํ์ผ ์์คํ ์ ํตํ I/O ์ฐ์ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ํน์ ์์ญ์ธ buffer cache ์ฌ์ฉ
- ํ์ผ ์ฌ์ฉ์ locality ํ์ฉ (ํน์ ๋ถ๋ถ๋ง ์ง์ค์ ์ผ๋ก ์ฐ๋ ์ง์ค์ฑ ํ์ฉ)
- ํ ๋ฒ ์ฝ์ด์จ block์ ๋ํ ํ์ ์์ฒญ ์ ๋์คํฌ์ ์ ๊ทผํ์ง ์๊ณ buffer cache์์ ์ฆ์ ์ ๋ฌ
- ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ๊ณต์ฉ์ผ๋ก ์ฌ์ฉ
- replacement algorithm ํ์ (LRU, LFU ๋ฑ)
๊ฒฐ๋ก ์, Unified Buffer Cache !!!
- ์ต๊ทผ OS์์๋ ๊ธฐ์กด์ buffer cache๊ฐ page cache์ ํตํฉ๋จ (๋์ ๋์์ด ๋น์ทํจ)
- ์ฆ buffer cache๋ ํ์ด์ง ๋จ์๋ก ๊ด๋ฆฌ
์ ๊น, Memory-Mapped I/O๋?
- File์ ์ผ๋ถ์ virtual memory ์์ญ์ mapping์ํด
- ๋งคํ์ํจ ์์ญ์ ๋ํ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์ฐ์ฐ์ ํ์ผ์ ์ ์ถ๋ ฅ์ ์ํํ๊ฒ ํจ
- ์ฆ, read, write ๋ฑ์ ์์คํ ์ฝ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ ๋ฉ๋ชจ๋ฆฌ์๋ค๊ฐ ์ฝ๊ณ ์
์ ๋ฆฌ
๊ณผ๊ฑฐ์๋ page cache๊ฐ ์ค๊ฐ์ ์์๋ค. memory-mapped I/O ์์ฒญ ์, paging์ด ๋จผ์ ๋์๊ฐ๊ณ ๊ทธ ์ค ํ์ผ ๊ด๋ จ ๋ถ๋ถ์ buffer cache๋ฅผ ํตํ๋๋ก ์๋ํ๋ค.
ํ์ง๋ง ์ด์ ๋ page caching์ด ํตํฉ๋์ด ๋ ์์ฒญ ๋ชจ๋ buffer cache๋ฅผ ์ด์ฉํ๋๋ก ํ๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์ผ๊ด๋ ์ ๊ทผ ๋ฐฉ๋ฒ์ด ๋๊ธฐ ๋๋ฌธ์ ๋ฒ๊ทธ ๊ฐ๋ฅ์ฑ์ด ์ค์ด๋ค๊ณ buffer cache ์ฑ๋ฅ์๋ง ์ง์คํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ํจ์ฌ ํจ์จ์ ์ธ ์์คํ ์ด ๋ง๋ค์ด์ก๋ค.
'OS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
12์ฅ Disk Management And Scheduling (0) | 2021.06.19 |
---|---|
10์ฅ File Systems (0) | 2021.06.19 |
9์ฅ Virtual Memory (0) | 2021.06.19 |
8์ฅ Memory Management (0) | 2021.06.19 |
7์ฅ Deadlock (0) | 2021.06.19 |
6์ฅ Process Synchronization (0) | 2021.06.19 |