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 |

