[์ด๋ก ] Allocation of File Data in Disk
disk์ ํ์ผ์ ์ ์ฅํ ๋๋ ๋์ผํ ํฌ๊ธฐ์ sector(logical block)๋ก ๋๋์ด์ ์ ์ฅ
1) contiguous allocation
2) linked allocation
3) indexed allocation
1) Contiguous allocation
ํ๋์ file์ด disk ์์ ์ฐ์ํด์ ์ ์ฅ๋๋ ๋ฐฉ๋ฒ
* ์ฅ์
1) ๋น ๋ฅธ I/O
- HDD๋ disk head์ ์ด๋ ์๊ฐ์ด ๊ธด ํธ์ธ๋ฐ, ์ฐ์ ํ ๋น์ ์ฐ๋ฉด ํ ๋ฒ์ seek/rotation์ผ๋ก ๋ง์ ์์ data transfer ๊ฐ๋ฅ
- process์ swap area๋ก๋ ์ฐ์ (์์ ์ ์ฅ์ด๊ธฐ ๋๋ฌธ์ ๊ณต๊ฐ ํจ์จ์ฑ๋ณด๋ค๋ ์๋ ํจ์จ์ฑ์ด ์ข์)
- real time file์ฉ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ (deadline O)
2) direct access (random access) <-> linked allocation์ ๋ถ๊ฐ๋ฅ
- (start + index)๋ฅผ ํตํด ์ํ๋ ์์น์ ๋ฐ๋ก ์ ๊ทผ ๊ฐ๋ฅ
* ๋จ์
์ค๊ฐ์ ๊ท ์ผํ์ง ์์ ํฌ๊ธฐ์ hole์ด ์๊น
1) external fragment ๋ฐ์ ๊ฐ๋ฅ
์ฐ์ ํ ๋น์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋น์ด์์์๋ ํ์ฉ๋ ์ ์๋ ์กฐ๊ฐ ๋ฐ์
2) file grow๊ฐ ์ด๋ ค์ -> ๋ฏธ๋ฆฌ ๋น ๊ณต๊ฐ์ ํ๋ณดํด๋๋ ๋ฐฉ๋ฒ ๊ฐ๋ฅ
- ๊ทธ๋ฌ๋ ๊ทธ ์ด์์ ์ปค์ง์ง ๋ชปํ๋ ๋ฌธ์ ๋ฐ์
- ํ ๋น๋์์ง๋ง ๋น์ฅ ์ฌ์ฉํ์ง ์๋ ๊ณต๊ฐ(internal fragmentation) ๋ฐ์
2) linked allocation
์ฐ์์ ์ด์ง ์๊ณ ๋น ์์น๋ฉด ์ด๋๋ ์ง ๋ค์ด๊ฐ ์ ์์ (start, end๋ง ๊ธฐ๋ก)
-1์ด ๋์ค๋ฉด ํ์ ์ข ๋ฃ
* ์ฅ์
external fragment ๋ฐ์ X
* ๋จ์
- no random access : ์์ฐจ ์ ๊ทผ์ ์ํ ์๊ฐ ๋ฐ์
- low reliability : ์ค๊ฐ์ bad sector๊ฐ ๋ฐ์ํ๋ฉด ํฌ์ธํฐ๊ฐ ์ ์ค๋์ด ๋ท๋ถ๋ถ์ ์์ ์ ์๋ค
- pointer ๊ณต๊ฐ ์ฐจ์ง(bad ๊ณต๊ฐ ํจ์จ์ฑ) : ํ ์นํฐ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ pointer๋ก ์ธํ ์ฉ๋ ๋ถ์กฑ์ผ๋ก ๋ ์นํฐ์ ์ ์ฅ๋๋ ๋ฑ์ ์ผ์ด ๋ฐ์ํ ์ ์๋ค
* FAT(File Allocation table)
ํฌ์ธํฐ๋ฅผ ๋ณ๋์ ์์น์ ๋ณด๊ดํ์ฌ reliability์ ๊ณต๊ฐ ํจ์จ์ฑ ๋ฌธ์ ํด๊ฒฐ
3) indexed allocation
directory์ index block ์์น๋ฅผ ํ์ํ๊ณ , ํด๋น block์๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ์์น ์ ๋ณด๋ค์ ์ ์ฅํด๋๋ค
* ์ฅ์
- direct access ๊ฐ๋ฅ
- no external fragmentation
* ๋จ์
- small file์ ๊ฒฝ์ฐ ๊ณต๊ฐ ๋ญ๋น (์ค์ ๋ก ๋ง์ file๋ค์ด small)
- too large file์ ๊ฒฝ์ฐ ํ๋์ block์ผ๋ก ๋ชจ๋ index๋ฅผ ์ ์ฅํ ์ ์๋ค
* ํด๊ฒฐ ๋ฐฉ์
1) linked scheme
index block์ ์ค์ ํ์ผ์ ์์น๋ฅผ ์ ๋ค๊ฐ ๋ง์ง๋ง์ ๋ค์ index block์ ์์น๋ฅผ ํ์
2) multi-level index
index block table๊ณผ index block์ผ๋ก ๊ตฌ์ฑ (2๋จ ๊ตฌ์ฑ) -> ๋ฌด์กฐ๊ฑด 2๊ฐ ์ด์์ ์ฌ์ฉํ๋ฏ๋ก index๋ฅผ ์ํ ๊ณต๊ฐ ๋ญ๋น๊ฐ ์์
[์ค์ ] UNIX File System์ ๊ตฌ์กฐ
ํ๋์ partition์ file system์ ์ค์นํด๋์
1) Boot Block
๋ถํ ์ ์ฌ์ฉํ๋ ๋ธ๋ก์ผ๋ก, 0๋ฒ ๋ธ๋ก์ ์กด์ฌํ๋ค. (bootstrap loader)
2) Super Block
ํ์ผ ์์คํ ์ ๊ดํ ์ด์ฒด์ ์ธ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ค
- ๋ธ๋ก์ ์ฌ์ฉ ์ฌ๋ถ
- Inode list์ ๋ฒ์
- ์ค์ data block์ ์์น
3) Inode
- ์ค์ file system์์๋ directory๊ฐ metadata๋ฅผ ๋ชจ๋ ๊ฐ์ง๊ณ ์์ง๋ ์๋ค
- UNIX ํ์ผ ์์คํ ์ ๊ฒฝ์ฐ [ํ์ผ ์ด๋ฆ์ ์ ์ธํ ๋ชจ๋ metadata]๋ Inode list์ ์ ์ฅ๋๋ค. (1 index node per file)
- directory๋ ํ์ผ์ ์ด๋ฆ๊ณผ inode์ ๋ฒํธ๋ฅผ ์ ์ฅํ๋ค
* ํ์ผ ์์น ์ ์ฅ ๋ฐฉ๋ฒ(Indexed allocation ์ฌ์ฉ)
- inode์ ํฌ๊ธฐ๋ ๊ณ ์ ๋์ด ์์ > ์์น ์ ๋ณด๋ฅผ ๋ํ๋๋ ํฌ์ธํฐ ๊ฐ์ ์ ํ
1) ์์ ํ์ผ
- direct blocks : ๋๋ถ๋ถ์ ์์ ํ์ผ์ ์ด๊ฒ๋ง์ผ๋ก ๋ํ๋ผ ์ ์์
2) ํฐ ํ์ผ
- single indirect : pointer๋ค์ด ๋ค์ด์๋ index block์ผ๋ก ์ด์ด์ง
- double indirect : 2๋จ๊ณ index ๊ตฌ์กฐ
- triple indirect : 3๋จ๊ณ index ๊ตฌ์กฐ
4) Data Block
- file์ ์ค์ ๋ด์ฉ์ ์ ์ฅ
FAT File System
MS์์ ์ฒ์ ๋ง๋ file system. ์ฌ์ ํ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ์์
1) Boot Block
๋ถํ ์ ์ฌ์ฉํ๋ ๋ธ๋ก์ผ๋ก, 0๋ฒ ๋ธ๋ก์ ์กด์ฌํ๋ค. (bootstrap loader)
2) FAT
ํ ๋ธ๋ก์ ๋ค์ ๋ธ๋ก์ ์์น ์ ๋ณด๋ฅผ ์ ์ฅ
- ํ์ผ์ metadata์ ์ผ๋ถ(์์น ์ ๋ณด)๋ง ๊ฐ์ง๊ณ ์์ / ๋๋จธ์ง๋ directory (file ์ด๋ฆ, ์์ ์ฃผ, ์ฒซ ์์ ๋ธ๋ก ์์น ๋ฑ)
- linked allocation์์ ๋ฐ์ํ๋ ๋ฌธ์ ํด๊ฒฐ ๊ฐ๋ฅ
-- 1) reliability : {index, number} = {ํ ๋ธ๋ก ์์น, index ๋ธ๋ก์ ๋ค์ ๋ธ๋ก ์์น}
--- ํ์ผ ์์น๋ฅผ ๋ด๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ณดํต 2๊ฐ์ copy๋ฅผ ๋ -> higher reliability
-- 2) direct access : FAT์ ์ด๋ฏธ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ & ์ค๊ฐ ์์น๋ ๋ฐ๋ก ํ์ ๊ฐ๋ฅ
-- 3) pointer ๊ณต๊ฐ์ ๋ถ๋ฆฌํ๊ธฐ ๋๋ฌธ์ sector์ ๋ชจ๋ ์ ์ฅ ๊ณต๊ฐ์ ํ์ฉํ ์ ์์
3) Root directory
4) Data block
Free Space Management
๋น์ด์๋ ๋ธ๋ก๋ค์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ
1) Bit map / Bit vector
๊ฐ๊ฐ์ ๋ธ๋ก์ 0 / 1์ ํ์ํ์ฌ ํ ๋น ์ฌ๋ถ๋ฅผ ํ๋จ
- bit map : ๋ถ๊ฐ์ ์ธ ๊ณต๊ฐ์ ํ์๋ก ํจ
- ์ฐ์์ ์ธ n๊ฐ์ free block์ ์ฐพ๋๋ฐ ํจ๊ณผ์ (์ฐ์ ํ ๋น์ ์ฌ์ฉํ์ง ์๋๋ผ๋ disk header์ ์ด๋๋์ ์ค์ด๊ธฐ ์ํด ์ฐ์ํ๊ฒ ํ ๋นํ๋ ๊ฒ์ด ์ข๊ธฐ ๋๋ฌธ)
2) Linked List
- ๋ชจ๋ free block๋ค์ ๋งํฌ๋ก ์ฐ๊ฒฐํด๋๋ค (์์ ์์น)
- ์ถ๊ฐ์ ์ธ ๊ณต๊ฐ ๋ญ๋น๊ฐ ์์ง๋ง ์ฐ์์ ์ธ ๊ฐ์ฉ ๊ณต๊ฐ์ ์ฐพ๊ธฐ ์ด๋ ต๋ค(์ค์ ์ฌ์ฉ ๋ฎ์)
3) Grouping
- linked list ๋ฐฉ๋ฒ์ ๋ณํ
- ๋น ๋ธ๋ก์ linked list๋ณด๋ค ์ ์ฐพ์ง๋ง, ๊ทธ๋๋ ์ฐ์์ ์ธ ๋น ๋ธ๋ก์ ์ฐพ๊ธฐ๋ ์ด๋ ต๋ค
4) Counting
์ฐ์์ ์ธ ๋น ๋ธ๋ก๋ค์ ์ฐพ๊ธฐ ์ํด {์ฒซ ๋ฒ์งธ ๋น ๋ธ๋ก์ ์์น, # ์ฐ์๋ ๋น ๋ธ๋ก}์ ์ ์ฅ
Directory Implementation
1) Linear List
<file name, file metadata>์ lisf
(+) ํฌ๊ธฐ๊ฐ ๊ณ ์ / ๊ตฌํ ๊ฐ๋จ
(-) directory ๋ด์ ํ์ผ ์ฌ๋ถ๋ฅผ ํ๋จํ๊ธฐ ์ํด์๋ linear search๊ฐ ํ์(time-consuming)
2) Hash Table
ํด์ ํจ์๋ฅผ ์ ์ฉํ์ฌ ํจ์จ์ ์ผ๋ก search (no search time)
(-) hash ํจ์ ํน์ฑ ์ collision ๋ฐ์ ๊ฐ๋ฅ
3) File์ metadata ๋ณด๊ด ์์น
1) directory ๋ด์ ์ง์ ๋ณด๊ด
2) directory์ ํฌ์ธํฐ๋ฅผ ๋๊ณ ๋ค๋ฅธ ๊ณณ์ metadata๋ฅผ ๋ณด๊ด ex) Inode, FAT
4) Long file name์ ์ง์
<file name, file metadata>์์ ๊ฐ entry๋ ์ผ๋ฐ์ ์ผ๋ก ๊ณ ์ ๋ ํฌ๊ธฐ
- file name์ ์ ํํ๋ ๊ฒ์ ๋นํจ์จ์
- file name์ด entry ๊ธธ์ด๋ณด๋ค ๊ธธ์ด์ง๋ ๊ฒฝ์ฐ : entry ๋ง์ง๋ง ๋ถ๋ถ์ [์ด๋ฆ์ ๋ท๋ถ๋ถ์ด ์์นํ ๊ณณ์ ํฌ์ธํฐ]์ ์์น๋ฅผ ์ ์ฅ
VFS and NFS
1) VFS (Virtual File System)
์ฌ์ฉ์๋ฅผ ์ํด ๋์ผํ system call์ ์ ๊ณตํ๋ system. ์ฃผ๋ก ๊ฐ๋ณ ํ์ผ ์์คํ ์ ๊ณ์ธต์ ์กด์ฌ
์๋ก ๋ค๋ฅธ file system์ ๋ํด [๋์ผํ system call interface(API)]๋ฅผ ํตํด ์ ๊ทผํ ์ ์๊ฒ ํด์ฃผ๋ OS์ layer
2) NFS (Network File System)
- ๋ถ์ฐ ์์คํ ์์์ ๋ํ์ ์ธ ํ์ผ ๊ณต์ ๋ฐฉ๋ฒ
- ๋คํธ์ํฌ๋ฅผ ํตํด ์๊ฒฉ์ผ๋ก ํ์ผ ์ ๊ทผ ์์ฒญ -> local ์ฒ๋ผ ์ฒ๋ฆฌํ ์ ์๋ค
- client์ server ๋ชจ๋์๊ฒ NFS ๋ชจ๋์ด ์์ด์ผ ํ๋ค
Page Cache and Buffer Cache
1) Page Cache(Page 4KB)
page๊ฐ swap area์ ๋ด๋ ค๊ฐ ์๋์ง cache์ ์ฌ๋ผ์ ์๋์ง ํ๋ณ
- virtual memory์ paging system์์ ์ฌ์ฉํ๋ page frame -> caching์ ๊ด์ ์์ ์ค๋ช ํ๋ ์ฉ์ด
- swap area backing store๋ณด๋ค ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ caching์ผ๋ก ์ค๋ช
- memory-mapped I/O๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ file I/O์์๋ page cache ์ฌ์ฉ
- page hit์ ๊ฒฝ์ฐ ํ์ผ ์ ๊ทผ ์๊ฐ์ ์ ์ ์๊ธฐ ๋๋ฌธ์ replace algo ๋์ clock algo ์ฌ์ฉ
2) Buffer Cache(sector - 512B)
file data๊ฐ storage์ ์๋์ง buffer cache์ ์๋์ง ํ๋ณ
- file์ data๋ฅผ ์์ฒญํ์ ๋, ์ฌ์ฉ์ ์ ๋ฌ์์ ๋๋๋ ๊ฒ์ด ์๋๋ผ OS๊ฐ ์์ ์ ์์ญ์ data๋ฅผ ์ ์ฅ
- file์ ์์น์ ์๊ด์์ด file ์ ๊ทผ์ ์ํด์๋ system call์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ํ์ผ ์์ฒญ ์๊ฐ์ ์ ์ ์์
-> replacement algorithm ์ฌ์ฉ ๊ฐ๋ฅ
3) Unified Buffer Cache(Page - 4KB)
page cache + buffer cache
- buffer cache์ page cache ๊ณต๊ฐ์ ๋ฐ๋ก ๊ตฌ๋ถํ์ง ์๊ณ ํฉ์ณ๋์ ํ, ํ์์ ๋ฐ๋ผ page ๋จ์๋ก ํ ๋น
4) Memory-Mapped I/O
system call ์์ด memory์ read/write
- [์๋ณธ] file open ํ read/write system call
1) system call์ ํตํด disk์ ์๋ file์ buffer cache๋ก ์ฝ์ด์ด
2) file์ ์ผ๋ถ๋ฅผ virtual memory์ mapping
3) ํด๋น ๋ด์ฉ์ page cache๋ก copy :
> ๋งคํํ ์์ญ์ ๋ํ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์ฐ์ฐ = ํ์ผ์ ์ ์ถ๋ ฅ ์ํ๊ณผ ๋์ผ
* ๋ง์ฝ mapping๋ง ํด๋๊ณ page cache์ copy ์ ํ๋ฉด page fault ๋ฐ์ -> OS๊ฐ handler๋ฅผ ํตํด disk๋ก๋ถํฐ file ๊ฐ์ ธ์ด
* I/O๋ ๋ฌด์กฐ๊ฑด system call ํ์! but mmp์ ๊ฒฝ์ฐ๋ ์ด๋ฏธ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์๋ค๋ฉด system call ํ์ X
ํ๋ก๊ทธ๋จ์ ์คํ
1) ์คํ ํ์ผ
* ํ๋ก๊ทธ๋จ์ file system์ ์คํ ํ์ผ ํํ๋ก ์ ์ฅ๋์ด ์์
> ์คํ ์ process๋ก ๋ณํ
> ๋ ์์ ์ธ virtual memory(code, data, stack) ํ ๋น
> address translation์ ํตํด ํ์ํ ๋ถ๋ถ์ Physical memory์ ์ฌ๋ฆผ
> Physical memory์ ๊ณต๊ฐ ๋ถ์กฑ์ผ๋ก swap area๋ก ์ซ๊ฒจ๋๊ธฐ๋ ํจ
* code ๋ถ๋ถ์ read-only๋ก ์ด๋ฏธ file system์ ์คํ file ํํ๋ก ์ ์ฅ๋์ด ์๋ค
> ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ํ ์ซ๊ฒจ๋ ๋ swap area๋ก ๋ด๋ ค๊ฐ์ง ์๋๋ค
* ์คํํ์ผ์ code๋ฅผ ์คํํ ๋ loader๋ผ๋ software๊ฐ mmp๋ฅผ ์ฌ์ฉํ๋ค
> file์ ํ๋ก๊ทธ๋จ์ virtual memory (์ฃผ์) ์์ญ์ mapping ํด์ ์ฐ๋ ๋ํ์ ์ธ ๊ฒฝ์ฐ
> ํ๋ก๊ทธ๋จ์ด ํน์ ์ฝ๋์ ์ ๊ทผํ๋๋ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋ผ์ ์๋ ๊ฒฝ์ฐ swap area๊ฐ ์๋ file system์์ ๊ฐ์ ธ์์ผ ํจ
2) ๋ฐ์ดํฐ ํ์ผ
Memory-mapped I/O
page cache(buffer cache)๋ฅผ ๋ ผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ mapping ํด๋์๊ธฐ ๋๋ฌธ์
๋ค๋ฅธ process๊ฐ ์ด๋ฅผ shareํ๋ ๊ฒฝ์ฐ ์ผ๊ด์ฑ์ด ๊นจ์ ธ ๋ณํ๊ฐ ๋ฐ์๋์ง ์์ ์ ์์
* [page fault ์] OS์๊ฒ data file์ ์ผ๋ถ๋ฅผ process์ ์ฃผ์ ๊ณต๊ฐ์ mapping ํด๋ฌ๋ผ๊ณ ์์ฒญํด์ผ ํจ
- ํ ๋ฒ ์ฌ๋ ค๋๋ฉด OS์ ๋์ ์์ด physical memory๋ก mapping
- ์ซ๊ฒจ๋๋ ๊ฒฝ์ฐ mmap file์ด๊ธฐ ๋๋ฌธ์ swap area๊ฐ ์๋ file system์ ์์ ๋ ๋ด์ฉ ๋ฐ์ ํด์ผ ํจ
* ๋ค๋ฅธ process๊ฐ ๊ฐ์ data file์ mmapํ ๊ฒฝ์ฐ์๋ physical memory์์ shareํ๋ค.
Read() system call
copyํด์ ์ ๋ฌํ๊ธฐ ๋๋ฌธ์ ์ผ๊ด์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ค + OS์ ์ค์ฌ
* OS๋ ์์ ์ buffer cache์์ ํด๋น ๋ด์ฉ์ ์ฝ์ด์ด
> [unified buffer cache] physical memory์ page cache(buffer cache)๋ฅผ copyํด์ process์๊ฒ ์ ๋ฌ
'๐ป CS > ์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] 12. Disk Management and Scheduling (0) | 2023.01.29 |
---|---|
[์ด์์ฒด์ ] 10. File Systems (0) | 2023.01.22 |
[์ด์์ฒด์ ] 9. Virtual Memory (0) | 2023.01.22 |
[์ด์์ฒด์ ] 8. Memory Management (1) | 2023.01.08 |
[์ด์์ฒด์ ] 7. Deadlocks (0) | 2023.01.01 |
๋๊ธ