[OS] Files and Directory
3๋ ๊ฐ ์ฐ์ ๊ธฐ๋ฅ์์์ผ๋ก ๋ณต๋ฌด ํ๊ณ , ๋ณตํํด ์ปด๊ณต๊ณผ ์์ ์ ๋ฃ๊ณ ์์ต๋๋ค. ๊ทธ๋์ ๋ง์ด ๋ฐฐ์ ๋ค๊ณ ์๊ฐํ๋๋ฐ, ์ฌ์ ํ ๋ถ์กฑํ ๋ถ๋ถ์ด ๋ง๋ค์ ^^;; ์ญ์ ์ธ์๋ ๋๊ณ ๊ณต๋ถ์ ๊ธธ๋ ๋์ ๊ฒ ๊ฐ์ต๋๋ค.
๋ค์ด๊ฐ๋ฉฐ
์ ํฌ์คํธ๋ ์ด์์ฒด์ ๋ฅผ ๊ณต๋ถํ๋ฉด์ ์งง๊ฒ ๋ฉ๋ชจ ํ๋ ๊ฒ๋ค์ ๋ชจ์ ๊ธ ์ ๋๋ค. OS ๋ด์ฉ์ ๋ณต์ตํ๋ฉด์ ์ดํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค ๐
Sector vs. Block
[Sector]
- ๋์คํฌ์ ์ต์ โ๋ฌผ๋ฆฌ์ ์ ์ฅ ๋จ์โ
- ์ผ๋ฐ์ ์ผ๋ก 512 bytes ๋๋ 4 kb
- ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋, ์นํฐ ๋จ์๋ก ์ฝ๊ฑฐ ์ฐ๊ธฐ ์์ ์ ํจ.
[Block]
- ํ์ผ ์์คํ ์์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ โ๋ ผ๋ฆฌ์ ๋จ์โ
- ์ฌ๋ฌ ์นํฐ๋ฅผ ํฉ์ณ์ ๊ตฌ์ฑ๋จ. ๋ณดํต 4 kb ๋๋ 8 kb ๋๋ ๊ทธ ์ด์
ํ์ผ ์์คํ ์ด ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ์ ์ฅํ ๋๋ ์นํฐ ๋จ์๊ฐ ์๋๋ผ ๋ธ๋ก ๋จ์๋ก ์ด๋ค์ง. ์์ ๋จ์๋ก ์ฌ๋ฌ ๋ฒ ์ฝ๋ ๊ฒ๋ณด๋ค ํฐ ๋จ์(๋ธ๋ก)์ผ๋ก ํ ๋ฒ์ R/W ํ๋๊ฒ ๋ ํจ์จ์ ์ด๊ธฐ ๋๋ฌธ.
Data Structures for File System
13p ๊ทธ๋ฆผ
- Process Control Block
- ๊ฐ ํ๋ก์ธ์ค์ PCB์์ ํ์ฌ ์ด๊ณ ์๋ ํ์ผ ๋ชฉ๋ก์ ๊ด๋ฆฌํจ.
- ํ์ผ์ ์ด๋ฉด, ๊ทธ ๊ธฐ๋ก์ด system-wide์ธ Open File Tables์ ๊ธฐ๋ก๋จ.
- PCB๋ ๊ทธ ๋ด์ฉ์ ์ฐธ์กฐํ ๋ฟ
- Open File Tables
- ์์คํ ์ ์ฒด์ ์ด๋ ค ์๋ ํ์ผ๋ค์ ๋ํ ์ ๋ณด๋ฅผ ํ๋์ ํ ์ด๋ธ๋ก ๊ด๋ฆฌ
- ํ์ผ์ด ์ฌ๋ฌ ํ๋ก์ธ์ค์ ์ํด ๋์์ ์ด๋ฆด ๊ฒฝ์ฐ, ์ ํ ์ด๋ธ์ ํ๋ฒ๋ง ๋ฑ๋ก๋๋ฉฐ, ๊ฐ ํ๋ก์ธ์ค์ ํ ์ด๋ธ์ ์ด ํญ๋ชฉ์ ์ฐธ๊ณ ํด์ ์ฝ์.
- File Descriptors
- ํ์ผ์ ๋ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
- ํ์ผ ๋ฐ์ดํฐ์ ๋ณ๋๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ด๋ฉฐ, system-wide ํ ์ด๋ธ์ด ์ ๋ด์ฉ์ ์ฐธ์กฐํจ.
- File System
- ์ค์ ํ์ผ ๋ฐ์ดํฐ์ ํ์ผ ์์คํ ์ ์ ๋ณด๋ฅผ ๋นํ๋ฐ์ฑ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ ๊ฒ
- File Descriptor๋ ์ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ๊ธฐ๋ก ๋๋ ๊ฒ์.
14p์ ๊ทธ๋ฆผ๋ ์์ ๋ ์๋ค์ ๋ํ ๊ด๊ณ๋ฅผ ์ ๋ณด์ฌ์ค!
fopen()
์ด ์คํ๋ ๋์ ์ ๊ทผ ์์๋
- File Descriptors (Metadata)
- ์๊ธฐ์์ ํ์ผ ์ด๋ฆ ๊ธฐ์ค์ผ๋ก ์ฐพ๊ณ
- ์ ์ ๊ฐ ์ ํ์ผ์ ์ ๊ทผํ ๊ถํ์ด ์๋์ง ์ฒดํฌํจ
- Open File Tables & Process Control Block
- ์ ํ ์ด๋ธ๋ค์ ๋ฑ๋ก
- File System
- ํ์ผ ๋ฐ์ดํฐ์ ์ ๊ทผ
์์คํ ์ ํ์ผ ์ ๊ทผ์ ๋ธ๋ก ๋จ์๋ก ์ฒ๋ฆฌํ๋ค.
[์ฝ๊ธฐ ์์ ]
- ์ฌ์ฉ์๊ฐ byte offset 2์์ 10 bytes ๋งํผ์ ์ฝ๊ณ ์ถ๋ค๋ฉด
- ๋ฐ์ดํธ ์คํ์
2์ ์์น๋ฅผ ์ฐพ๋๋ค (
seek
) - ํด๋น ๋ฐ์ดํธ๊ฐ ์ํ ๋ธ๋ก์ ๊ฐ์ ธ์จ๋ค. (fetch the block)
- ๋ธ๋ก์์ 10 bytes ๋งํผ ์ฝ๋๋ค.
ํ์ผ์ ๋ธ๋ก ๋จ์๋ก ์ ์ฅ๋๊ธฐ ๋๋ฌธ์, ์กฐ๊ธ์ ๋ฐ์ดํธ๋ฅผ ์ฝ๋๋ผ๋ ๋ธ๋ก ์ ์ฒด๋ฅผ ์ฝ์ด์์ผ ํจ.
[์ฐ๊ธฐ ์์ ]
- ์ฌ์ฉ์๊ฐ byte offset 2์์ 10 bytes ๋งํผ์ ์ฝ๊ณ ์ถ๋ค๋ฉด
- ๋ฐ์ดํธ ์คํ์
2์ ์์น๋ฅผ ์ฐพ๋๋ค (
seek
) - ํด๋น ๋ฐ์ดํธ๊ฐ ์ํ ๋ธ๋ก์ ๊ฐ์ ธ์จ๋ค. (fetch the block)
- ๋ธ๋ก์์ ๋ฐ์ดํธ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ค.
- ๋ณ๊ฒฝ๋ ๋ธ๋ก์ ์ ์ฅ์์ ๋ฐ์ํ๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ํ์ผ์ ๋ธ๋ก ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์, ๋ฐ์ดํธ ๋จ์์ ์์ ๋ ๋ธ๋ก ์ ์ฒด๋ฅผ ์ฝ๊ณ ์์ ํด์ผ ํจ.
ํต์ฌ์ ํ์ผ ์์คํ ์์๋ ๋ชจ๋ ํ์ผ์ด ๋ธ๋ก ๋จ์๋ก ๊ด๋ฆฌ๋๋ค๋ ๊ฒ์ด๊ณ , ๋ ผ๋ฆฌ์ ๋ ์ฝ๋ ํฌ๊ธฐ(์ฌ์ฉ์๊ฐ R/W ํ๋ ํฌ๊ธฐ)์ ๋ฌผ๋ฆฌ์ ๋ธ๋ก ํฌ๊ธฐ๋ ๋ค๋ฅผ ์ ์๋ค๋ ์ .
์ด๋ฐ ๋ฐฉ์์ โ๋ธ๋ก ๋ฒํผ๋ง(Block Buffering)โ์ด๋ผ๊ณ ํ๋ค.
ํ์ผ ์์คํ ๋์์ธ ๋ ๊ณ ๋ คํ ์
[์์ ํ์ผ ์์ฃผ๋ผ๋ฉด]
- ์์ ๋ธ๋ก์ ์ฌ์ฉํด์ผ ๋ด๋ถ ๋จํธํ๊ฐ ์ ์
- ์ฐ๊ด๋ ํ์ผ์ ์ธ์ ์์น์ ์ ์ฅํด๋๋๊ฒ ์ข์.
[ํฐ ํ์ผ ์์ฃผ๋ผ๋ฉด]
- ํด ๋ธ๋ก์ ์ฌ์ฉํด ๋์คํฌ ์ ๊ทผ ํ์๋ฅผ ์ค์ด๋๊ฒ ์ข์.
- ๋ฐ์ดํฐ๋ฅผ ์ฐ์์ ์ผ๋ก ํ ๋นํด ์์ฐจ ์ ๊ทผ์ ๋น ๋ฅด๊ฒ ๋ง๋๋๊ฒ ์ข์.
- ex. ๋น๋์ค, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฑ์
- ๋๋ค ์ ๊ทผ์ ํจ์จ์ ์ผ๋ก ํ ์ ์๋๋ก Index ๊ตฌ์กฐ๊ฐ ์์ผ๋ฉด ์ข์.
๊ทธ๋ฌ๋ ํ์ผ์ ํฌ๊ธฐ๋ ๊ณ ์ ๋ ๊ฒ์ด ์๋๋ผ ๋์ ์ผ๋ก ๋ณํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์, ํ์ผ ์์ฑ ๋ ํฌ๊ธฐ๋ฅผ ์์ธก ํ ์ ์์. ์ฒ์์ ์์ ํ์ผ๋ก ์์ํ์ง๋ง ๋์ค์ ์ปค์ง ์ ์์. (ex. ๋ก๊ทธ ํ์ผ์ ๋ก๊ทธ๊ฐ ์์ด๋ ๊ฒฝ์ฐ) ๊ทธ๋ฆฌ๊ณ ํ์ผ ์ ๊ทผ ํจํด๋ ์์ธก ๋ถ๊ฐ๋ฅํจ.
์์ ๋ด์ฉ์ ํ์ผ ํฌ๊ธฐ์ ๋ฐ๋ผ ๊ถ์ฅ๋๋ ๋์์ธ ํจํด์ด๊ณ , ์ค์ ํ์ผ ์์คํ ์ ํ์ผ์ ๋ค์ํ ํน์ฑ์ ์ง์ํ ์ ์๋๋ก ์ ์ฐํ๊ฒ ์ค๊ณ ๋์ด์ผ ํจ.
ํ์ผ ์ ๊ทผ ํจํด์ ๊ธฐ์ค์ผ๋ก ๋ณด๋ฉด, ์ ๊ทผ ๋น๋๊ฐ ๋์ ํ์ผ์ ์ ํ์ ํฌ๊ธฐ๊ฐ ์์ ํ์ผ๋ค์. ๊ทธ๋ฌ๋, ์์คํ ๊ณผ ๋์คํฌ ์ฌ์ด์ I/O ๋ฐ์ดํฐ ์์ ๊ธฐ์ค์ผ๋ก ๋ณด๋ฉด ํฌ๊ธฐ๊ฐ ํฐ ํ์ผ๋ค์ด ๋์ ๋น์ค์ ์ฐจ์งํจ.
๋๋ถ๋ถ์ ํ์ผ์ ์์ฐจ์ ์ผ๋ก ์ ๊ทผํ์ง๋ง, ์ผ๋ถ ํ์ผ(database file)์ ๋๋ค ์ ๊ทผ์ด ํ์ํจ.
Types of File System
- General Purpose FS
ufs
(Unix File System)zfs
(Zettabyte File System)
- Special-purpose FS
tmpfs
(Temporary File System)- ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ์ ํ๋ฐ์ฑ ํ์ผ ์์คํ
- ๋น ๋ฅธ I/O๋ฅผ ์ ๊ณต, ์์ ํ์ผ ์ ์ฅ์ ์ฌ์ฉ
procfs
(Process File System)- ์ปค๋์ ํ๋ก์ธ์ค ์ ๋ณด์ ์ ๊ทผํ ์ ์๋ ์ธํฐํ์ด์ค
- ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค์ ์ํ์ ์ ๋ณด๋ฅผ ํ์ผ ์์คํ ํํ๋ก ์ ๊ณตํจ.
- Linux์
/proc
๋๋ ํ ๋ฆฌ๊ฐ ์procfs
์ ์์์.
Terms
๋์คํฌ(Disk)๋ ์ฌ๋ฌ ํํฐ์ (Partition)์ผ๋ก ๋๋ ์ ์์.
๋์คํฌ๋ ํํฐ์ ์ ํ์ผ ์์คํ ์์ด ์ธ ์๋ ์๋๋ฐ, ์ด ๊ฒฝ์ฐ โRawโ ์ํ๋ผ๊ณ ํจ. ๋ง์ฝ ํ์ผ ์์คํ ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ค๋ฉด, โFormattedโ ์ํ๋ผ๊ณ ํจ.
ํํฐ์ ์ค์์ ํ์ผ ์์คํ ์ด ํฌํจ๋, โFormattedโ ํํฐ์ ์ ๋ณผ๋ฅจ(Volume)์ด๋ผ๊ณ ํจ. ๊ฐ ๋ณผ๋ฅจ์๋ ํ์ผ์ ๋ํ ์ ๋ณด๊ฐ ํฌํจ๋ ๋๋ ํ ๋ฆฌ(Directory)๊ฐ ์กด์ฌํจ.
ํํฐ์ ์ ๊ธฐ์กด ๋์คํฌ๋ฅผ ์ชผ๊ฐ์ ์์ฑํ ์๋ ์์ง๋ง, ์ฌ๋ฌ ๋์คํฌ๋ฅผ ๋ชจ์ํ ํ๋์ ํํฐ์ ์ผ๋ก ๋ง๋ค ์๋ ์์!
ํ์ผ ์์คํ ๋์์ธ ๊ณ ๋ ค ์ฌํญ
- Index Structure
- ํ์ผ์ ๋ฐ์ดํฐ ๋ธ๋ก ์์น๋ฅผ ์ด๋ป๊ฒ ์ฐพ์ ๊ฒ์ธ์ง
- ํ์ผ์ ์ฌ๋ฌ ๋ธ๋ก์ ๋๋์ด ์ ์ฅ๋ ์ ์์. ๊ทธ๋์ ํ์ผ์ ์ ๊ทผํ ๋, ์ด ๋ธ๋ก๋ค์ ํจ์จ์ ์ผ๋ก ์ถ์ ํ๊ณ ์ ๊ทผํ ์ ์์ด์ผ ํจ.
- Index Granularity
- ๋ธ๋ก ํฌ๊ธฐ๋ฅผ ์ด๋ป๊ฒ ์ ํ ์ง ๊ฒฐ์ ํด์ผ ํจ.
- Free Space
- ๋์คํฌ์์ ๋น์ด์๋ ๋ธ๋ก์ ์ด๋ป๊ฒ ์ฐพ๊ณ ๊ด๋ฆฌํ ๊ฒ์ธ๊ฐ
- Locality
- ํ์ผ์ ๋ฐ์ดํฐ ๋ธ๋ก์ด ์ธ์ ํ ์์น์ ์ ์ฅ๋๋๋ก ํด์ผ ์ฑ๋ฅ์ด ์ข์์ง
- Reliability
- ํ์ผ ์์คํ ์์ ์ค, ์์คํ ์ด ์ค๋จ ๋์์ ๋ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํด์ผ ํจ.
File Systems
FAT (File Allocation Table)
ํ์ผ ๋ธ๋ก๋ค์ด Linked List ํํ๋ก ๊ด๋ฆฌ๋จ. ๋จ์ ์ ์ค๊ฐ ๋ธ๋ก์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ์์ฐจ ํ์์ ํด์ผ ํจ.
์ฌ์ ๊ณต๊ฐ์ Linked List ๊ธฐ๋ฐ์ FAT ๊ตฌ์กฐ๋ก ๊ด๋ฆฌํจ.
โDefragmentationโ๋ผ๋ ๊ธฐ๋ฒ์ผ๋ก ์กฐ๊ฐ๋ ๋ธ๋ก๋ค์ ์ฌ๋ฐฐ์น ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ง์ญ์ฑ์ ๋์ ๋๋ค.
FFS (Fast File System)
ํ์ผ ๋ธ๋ก์ ๋น๋์นญ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ์ธ๋ฑ์ฑ ํจ. ๋น ๋ฅด๊ฒ ์ ๊ทผ์ด ๊ฐ๋ฅํจ.
bitmap์ผ๋ก ์ฌ์ ๋ธ๋ก์ ๊ด๋ฆฌํจ.
NTFS (New Technology File System)
ํ์ผ ๋ธ๋ก์ ๋์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๊ด๋ฆฌํจ. ๋น ๋ฅด๊ฒ ์ ๊ทผ ๊ฐ๋ฅํ๊ณ , ๋์ฉ๋ ํ์ผ์ ์ ํฉ.
์ฌ์ ๊ณต๊ฐ์ ํ์ผ ํํ์ ๋นํธ๋งต์ผ๋ก ๊ด๋ฆฌํจ.
ZFS (Zettabyte File System)
ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ํ์ผ ๋ธ๋ก์ ๊ด๋ฆฌํ๊ณ , Copy-on-Write ๊ธฐ๋ฒ์ ์ฑํํจ.