12. File System
File Concept
๋ฐ์ดํฐ์ ํ๋ก๊ทธ๋จ์ ์ํ "์ปจํ ์ด๋"
๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ ์ฐ์์ ์ธ ๋ ผ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ
์ข ๋ฅ:
- Data
- Numeric
- Character
- Binary
- Program
- Data
File Structure
๊ตฌ์กฐ ์์: ๋จ์ด ๋๋ ๋ฐ์ดํธ์ ๋จ์ ์ํ์ค
๊ฐ๋จํ ๋ ์ฝ๋ ๊ตฌ์กฐ:
- ์ค ๋จ์ (Lines)
- ๊ณ ์ ๊ธธ์ด
- ๊ฐ๋ณ ๊ธธ์ด
๋ณต์กํ ๊ตฌ์กฐ:
- ์์ ๋ฌธ์ (Formatted document)
- ์ฌ๋ฐฐ์น ๊ฐ๋ฅํ ๋ก๋ ํ์ผ (Relocatable load file)
๊ฒฐ์ ์ฃผ์ฒด:
- ์ด์์ฒด์ (Operating system)
- ํ๋ก๊ทธ๋จ (Program)
File Attributes (File Metadata)
Name โ ์ฌ๋์ด ์ฝ์ ์ ์๋ ์ ์ผํ ์ ๋ณด
Type โ ์์คํ ์ด ๋ค์ํ ํ์ผ ์ ํ์ ์ง์ํ๊ธฐ ์ํด ํ์
Location โ ๋๋ฐ์ด์ค ๋ด ํ์ผ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ
Size โ ํ์ฌ ํ์ผ ํฌ๊ธฐ
Protection โ ์ฝ๊ธฐ, ์ฐ๊ธฐ, ์คํ ๊ถํ ์ ์ด
Time, date, and user identification โ ๋ณดํธ, ๋ณด์, ์ฌ์ฉ ๋ชจ๋ํฐ๋ง์ ์ํ ์ ๋ณด
ํ์ผ ๊ด๋ จ ์ ๋ณด๋ ๋๋ ํ ๋ฆฌ(ํด๋) ๊ตฌ์กฐ์ ์ ์ฅ๋๋ฉฐ, ์ด๋ ๋์คํฌ ์์ ์ ์ง๋จ
File Operations
- create
- write
- read
- repositioning within file โ file seek
- delete
- truncate
open(F_i)
โ ๋์คํฌ์์ ๋ฉ๋ชจ๋ฆฌ๋ก ํ์ผ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌ
(๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฒ์ํ์ฌ ์ํ๋จ)close(F_i)
Directories
๋๋ ํ ๋ฆฌ๋ ๋ ๊ฐ์ง ๋ชฉ์ ์ ๊ฐ์ง:
- ์ฌ์ฉ์ ์ธก๋ฉด: ๊ด๋ จ ํ์ผ๋ค์ ๊ตฌ์กฐํ๋ ๋ฐฉ์์ผ๋ก ์กฐ์ง
- ์์คํ
์ธก๋ฉด: ํ์ผ ์ด๋ฆ์ ํตํ ์ ๊ทผ ์ธํฐํ์ด์ค ์ ๊ณต
โ ํ์ผ์ด ์ ์ฅ๋ ์์น์ ์ธ๋ถ์ ๋ณด๋ฅผ ์จ๊ธธ ์ ์์
๋๋ถ๋ถ์ ์์คํ ์ ๋ค๋จ๊ณ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ง์
โ ํ์ผ ์ด๋ฆ์ ๋ฃจํธ๋ถํฐ ํด๋น ํ์ผ๊น์ง์ ๊ฒฝ๋ก๋ฅผ ํฌํจํจ๋๋ถ๋ถ์ ์์คํ ์ ํ์ฌ ๋๋ ํ ๋ฆฌ(current directory)๋ฅผ ๊ฐ์ง
โ ์ด๋ฆ์ ํ์ฌ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋์ ์ผ๋ก ์ง์ ๊ฐ๋ฅํ๋ฉฐ,
๋ฃจํธ๋ถํฐ ์ ๋ ๊ฒฝ๋ก๋ก ์ง์ ํ๋ ๋ฐฉ์๊ณผ ๊ตฌ๋ถ๋จ
A Directory Entry
๋๋ ํ ๋ฆฌ๋ ํ์ผ์ ๋ํ ๋ ผ๋ฆฌ์ ์ ๋ณด๋ฅผ ์ค๋ช ํจ:
- ํ์ผ ์ด๋ฆ, ํฌ๊ธฐ, ์ ํ, ์์น, ๋ณดํธ ์ ๋ณด, ๋ง์ง๋ง ์ ๊ทผ ์๊ฐ ๋ฑ
์ด ์ ๋ณด๋ ๋์คํฌ์ ์๋ฃ๊ตฌ์กฐ์ ์ ์ฅ๋จ
- โ ๋ฐ๋ผ์ ์ผ๋ถ ์ ํ์ด ์กด์ฌํ ์ ์์
์ด์์ฒด์ ๋ ์ต๊ทผ ์ ๊ทผํ ํ์ผ๋ค์ ๋๋ ํ ๋ฆฌ ํญ๋ชฉ์ ๋ฉ๋ชจ๋ฆฌ์ ์บ์ํจ
- ์บ์๊ฐ ๋์คํฌ์ ์๋ณธ ๋ฐ์ดํฐ์ ์ผ๊ด๋๊ฒ ์ ์ง๋๊ธฐ๋ฅผ ๊ธฐ๋ํจ
- ๊ทธ๋ ์ง ์์ผ๋ฉด ํ์ผ์ ์์ด๋ฒ๋ฆด ์ ์์
Directory Structure
๋๋ ํ ๋ฆฌ๋ ํ์ผ์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๋ ธ๋๋ค์ ๋ชจ์
๋๋ ํ ๋ฆฌ์ ํ์ผ์ ๋ชจ๋ ๋์คํฌ์ ์ ์ฅ๋จ
Directory Structure (UNIX)
๋๋ ํ ๋ฆฌ ํญ๋ชฉ(directory entry)์ ํ์ผ ์ด๋ฆ๊ณผ inode ํฌ์ธํฐ๋ฅผ ๊ฐ์ง
(์๋ธ๋๋ ํ ๋ฆฌ์ ๋ํ ํญ๋ชฉ๋ ์กด์ฌํ ์ ์์)inode๋ ํ์ผ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๊ณ ,
๋ฐ์ดํฐ ๋ธ๋ก์ ๋ํ ํฌ์ธํฐ๋ ํฌํจํจ
Directory Implementation
์ ํ ๋ฆฌ์คํธ ๋ฐฉ์ (Linear list)
- ๋ฉํ๋ฐ์ดํฐ์ ํจ๊ป ํ์ผ ์ด๋ฆ ๋ฆฌ์คํธ๋ฅผ ์ ์ง
- ๊ตฌํ์ด ๊ฐ๋จํ๋, ๊ฒ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆผ
ํด์ ํ ์ด๋ธ ๋ฐฉ์
- ์ ํ ๋ฆฌ์คํธ์ ํด์ ํ ์ด๋ธ์ ์ถ๊ฐ
- ํด์ ํ ์ด๋ธ์ ํ์ผ ์ด๋ฆ์ ํฌ์ธํฐ๋ก ๋ณํ
- ๋๋ ํ ๋ฆฌ ๊ฒ์ ์๊ฐ ๋จ์ถ
- ์ถฉ๋(collisions) ๋ฐ์ ๊ฐ๋ฅ:
โ ์๋ก ๋ค๋ฅธ ํ์ผ ์ด๋ฆ์ด ๊ฐ์ ์์น๋ก ํด์๋จ
Operations Performed on Directory
- ํ์ผ ๊ฒ์ (Search for a file)
- ํ์ผ ์์ฑ (Create a file)
- ํ์ผ ์ญ์ (Delete a file)
- ๋๋ ํ ๋ฆฌ ๋ชฉ๋ก ๋ณด๊ธฐ (List a directory)
- ํ์ผ ์ด๋ฆ ๋ณ๊ฒฝ (Rename a file)
- ํ์ผ ์์คํ ํ์ (Traverse the file system)
Single-Level Directory
๋ชจ๋ ์ฌ์ฉ์์๊ฒ ํ๋์ ๋๋ ํ ๋ฆฌ๋ง ์กด์ฌ
๋ฌธ์ ์ :
- ์ด๋ฆ ์ถฉ๋ ๋ฌธ์
- ์ค๋ณต ์ด๋ฆ ๋ฐฉ์ง ํ์
- UNIX๋ ํ์ผ ์ด๋ฆ์ ์ต๋ 255์ ํ์ฉ
- ๊ทธ๋ฃนํ ๋ฌธ์
- ์ด๋ฆ ์ถฉ๋ ๋ฌธ์
Two-Level Directory
์ฌ์ฉ์๋ง๋ค ๋ณ๋์ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฐ์ง
"Pathname" ์ฌ์ฉ ๊ฐ๋ฅ
์ฌ์ฉ์ ๊ฐ ์ด๋ฆ ์ถฉ๋ ์์
๊ทธ๋ฃนํ ๊ธฐ๋ฅ ์์
Tree-Structured Directories
ํ์ ๋๋ ํ ๋ฆฌ(subdirectory) ํ์ฉ
๊ทธ๋ฃนํ(grouping) ๊ฐ๋ฅ
ํ ๋๋ ํ ๋ฆฌ (home directory)
ํ์ฌ ๋๋ ํ ๋ฆฌ (current working directory)
์ ๋ ๊ฒฝ๋ก, ์๋ ๊ฒฝ๋ก ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ
- ์:
cd /skyang/ch1
- ์:
๊ฒ์ ๊ฒฝ๋ก (command interpreter)
- ์ค์ ๊ฒ์ ์์: ๋น ๋๋ ํ ๋ฆฌ โ ์ค์ ๊ฒ์
Acyclic-Graph Directories
๊ฐ์ ํ์ผ ๋๋ ๋๋ ํ ๋ฆฌ๊ฐ ๋ ๋๋ ํ ๋ฆฌ์ ์กด์ฌํ ์ ์์
์ํ์ด ์๋ ๊ตฌ์กฐ๋ง ํ์ฉ๋จ (acyclic)
ํ์ผ/๋๋ ํ ๋ฆฌ ๊ณต์ ๊ฐ๋ฅ
Acyclic-Graph Directories (Cont.)
๋์ผํ ํ์ ๋๋ ํ ๋ฆฌ๋ ํ์ผ์ด ๋ ์ด์์ ๋๋ ํ ๋ฆฌ์ ์กด์ฌํ ์ ์์
- ๋ฌธ์ :
- ์ํ ์ ๋์ผ ๋ ธ๋ ์ฌ๋ฐฉ๋ฌธ (traverse ๋ฌธ์ )
- ์ญ์ ์ ๋ฌธ์ ๋ฐ์
- ๋ฌธ์ :
์๋๋ฆฌ์ค:
- Kang์ด
X
๋๋ ํ ๋ฆฌ๋ฅผ ๊ฐ์ง - Jung๋
X
๋ฅผ ์์ ์ ํ์ ๋๋ ํ ๋ฆฌ์ ํ์๋ก ํจ - UNIX๋
link
๋ฅผ ์์ฑํด Jung์ ๋๋ ํ ๋ฆฌ์ ์ฐ๊ฒฐ
- Kang์ด
Link type 1: Symbolic link
- ๊ฒฝ๋ก ์ด๋ฆ(pathname)๋ง ๊ฐ๋ฆฌํด
X
๊ฐ Kang์์ ์ญ์ ๋๋ฉด Jung์ ๋งํฌ๋ dangling reference๊ฐ ๋จ
Link type 2: Hard link
- Kang์ ๋๋ ํ ๋ฆฌ๋ฅผ Jung ์ชฝ์ ๋ณต์ฌ
X
์ ๋ฐ์ดํธ ์ ์ผ๊ด์ฑ ๋ฌธ์ ๋ฐ์- ์ญ์ ๋ฌธ์ ํด๊ฒฐ: reference count ์ ์ง
- reference count๊ฐ 0์ด ๋๋ฉด ์ญ์
General Graph Directory
์ํ ํ์ฉ๋จ (cycles permitted)
์ํ(traverse), ์ญ์ (delete) ์๊ณ ๋ฆฌ์ฆ ๋ณต์ก
์ํ ๋ฌธ์ :
- cycle ๋ด์์ ๋ฌดํ ๋ฃจํ ๋ฐ์ ๊ฐ๋ฅ
์ญ์ ๋ฌธ์ :
- Kang์ด
X
๋ฅผ ์ญ์ ํด๋ reference count๊ฐ 0์ด ์๋ ์ ์์ (self-reference ๋๋ cycle ๋๋ฌธ) - โ
X
๋ ํด์ ๋์ง ์์
- Kang์ด
Garbage collection ํ์
- ์ ๊ทผ ๋ถ๊ฐ๋ฅํ ๋ ธ๋๋ฅผ ํ์ํ์ฌ ์ญ์
- ์๊ฐ ์๋ชจ ํผ
General Graph Directory (Cont.)
- ์ํ์ ๋ฐฉ์งํ๋ ค๋ฉด?
- ๋ฃจํธ๋ง ๋งํฌ ํ์ฉ (์๋ธ๋๋ ํ ๋ฆฌ๋ ๊ธ์ง)
- ๋งํฌ ์์ฑ ์๋ง๋ค cycle ํ์ง ์๊ณ ๋ฆฌ์ฆ์ ํตํด ํ์ฉ ์ฌ๋ถ ํ๋จ
Protection
ํ์ผ ์์ ์/์์ฑ์๋ ๋ค์์ ์ ์ดํ ์ ์์ด์ผ ํจ:
- ๋๊ฐ
- ์ด๋ค ์์ ์ ํ์ผ์ ์ํํ ์ ์๋์ง
์ ๊ทผ ์ ํ:
- Read
- Write
- Execute
- Append
- Delete
- List (์ด๋ฆ, ์์ฑ ๋ฑ)
์ ๊ทผ ์ ์ด:
- ์ ๊ทผ ์ ์ด ํ๋ ฌ์ ๋๋ฌด ํผ
- UNIX๋ ์ฌ์ฉ์๋ฅผ ๋ค์ ์ธ ๊ทธ๋ฃน์ผ๋ก ๋๋:
- user / group / others
Groups
์ ๊ทผ ๋ชจ๋: ์ฝ๊ธฐ, ์ฐ๊ธฐ, ์คํ (read, write, execute)
์ฌ์ฉ์ ๊ณ์ธต (3๋จ๊ณ):
- a) ์์ ์(owner): 7 = 1 1 1
- b) ๊ทธ๋ฃน(group): 6 = 1 1 0
- c) ๊ณต๊ฐ(public): 1 = 0 0 1
์๋ก์ด ๊ทธ๋ฃน(G)์ ๋ง๋ค๊ณ ํน์ ์ฌ์ฉ์๋ค์ ์ถ๊ฐํ๋๋ก ๊ด๋ฆฌ์์๊ฒ ์์ฒญ
ํน์ ํ์ผ(game ๋ฑ)์ ๋ํด ์ ์ ํ ์ ๊ทผ ๊ถํ ์ค์ :
chmod 761 game chgrp G game
File-System Structure
ํ์ผ ์์คํ ์ ์ผ๋ฐ์ ์ผ๋ก ๋ณด์กฐ ์ ์ฅ ์ฅ์น(๋์คํฌ)์ ์์น
๊ณ์ธต ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ๋จ
open()
์์คํ ํธ์ถ:- ๋์คํฌ์์ ํด๋น ํ์ผ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ก๋
- ๋๋ ํ ๋ฆฌ ํ์์ด ํ์
- Open-file table์ ๋ฑ๋ก
- File descriptor ์์ฑ (file handle, control block)
- open-file table์ ์ธ๋ฑ์ค ์ญํ
- ๋์คํฌ์์ ํด๋น ํ์ผ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ก๋
๋๋ ํ ๋ฆฌ ํ์์ด ๋น์ผ ์ด์ :
- ์:
a/b/c/d/e.hwp
- ๋์คํฌ I/O๊ฐ ๋ง์ด ๋ฐ์
- ์:
Mounting File System
- "root file system" ์๋์ ์๋ ๋ชจ๋ ํ์ผ์ ์ ๊ทผ ๊ฐ๋ฅ
- ๊ทธ๋ฐ๋ฐ ๋ค๋ฅธ ํ์ผ ์์คํ (์: CD, USB)์ ํ์ผ์ ์ด๋ป๊ฒ ์ ๊ทผํ ๊น?
Mount it!
- ์: CD ํ์ผ ์์คํ
์
/mnt
๋๋ ํ ๋ฆฌ์ ๋ง์ดํธํ๋ฉด,/mnt
์ดํ์ ํ์ผ๋ค์ ์ ์ฒด ํธ๋ฆฌ์์ ์ ๊ทผ ๊ฐ๋ฅ
Allocation of File Data in Disk
Contiguous Allocation
๊ฐ ํ์ผ์ ๋์คํฌ ์์ ์ฐ์๋ ๋ธ๋ก ์งํฉ์ ์ ์
์ฅ์ :
- ๋จ์ํจ: ์์ ์์น(block #)์ ๊ธธ์ด(๋ธ๋ก ์)๋ง ์๋ฉด ๋จ
- ๋น ๋ฅธ I/O:
- ํ ๋ฒ์ seek/rotation์ผ๋ก ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ฐ์ ์ ์ก
- ์ค์๊ฐ I/O ๋๋ ์ด๋ฏธ ์คํ ์ค์ธ ํ๋ก์ธ์ค์ swapping์ ์ ๋ฆฌ
๋จ์ :
- ๊ณต๊ฐ ๋ญ๋น:
- ๋์ ์ ์ฅ์ ํ ๋น โ ์ธ๋ถ ๋จํธํ ๋ฐ์ โ ์์ hole ๋ค์
- ํ์ผ ํฌ๊ธฐ ์ฆ๊ฐ์ ์ด๋ ค์:
- ์ผ๋ง๋ ๊ณต๊ฐ์ ๋ฏธ๋ฆฌ ํ ๋นํด์ผ ํ ์ง ์์ธก ํ์
- grow ๊ฐ๋ฅ์ฑ๊ณผ ๋จํธํ ์ฌ์ด trade-off
- ๊ณต๊ฐ ๋ญ๋น:
Contiguous Allocation of Disk Space
- ๋์คํฌ์์ ์ฐ์ ๊ณต๊ฐ์ ํ ๋น๋ฐ์ ํ์ผ๋ค์ ์์
- ๋๋ ํ ๋ฆฌ์๋
์์ ๋ธ๋ก
๊ณผ๊ธธ์ด
์ ๋ณด๊ฐ ๊ธฐ๋ก๋จ
Linked Allocation
๊ฐ ํ์ผ์ ๋์คํฌ ๋ธ๋ก์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ๊ตฌ์ฑ๋จ
๋ธ๋ก๋ค์ ๋์คํฌ ์ด๋์๋ ํฉ์ด์ ธ ์์ ์ ์์
๊ฐ ๋ธ๋ก์ ๋ค์์ ํฌํจ:
- pointer (๋ค์ ๋ธ๋ก ์์น)
- file content (๋ฐ์ดํฐ)
Linked Allocation (Cont.)
- ํ์ํ ๋๋ง๋ค ๋ธ๋ก์ ํ ๋นํ๊ณ ์ฐ๊ฒฐ
- ์:
jeop
ํ์ผ์ด block 9์์ ์์ โ ์ค๊ฐ ๋ธ๋ก์ ๋ฐ๋ผ ์ฐ๊ฒฐ
Linked Allocation (Cont.)
์ฅ์ :
- ์์ ์ฃผ์๋ง ์๋ฉด ๋จ
- free-space ๊ด๋ฆฌ ์ฉ์ด, ๊ณต๊ฐ ๋ญ๋น ์์
๋จ์ :
- ๋๋ค ์ ๊ทผ ๋ถ๊ฐ
- ๋์คํฌ I/O ์ฑ๋ฅ ์ ํ (pointer ์ถ์ ๋ง๋ค seek/rotation ํ์)
- ์ ๋ขฐ์ฑ ๋ฌธ์ :
- pointer ์์ ์ ์ ์ฒด ํ์ผ ์ผ๋ถ ์์ค ๊ฐ๋ฅ
pointer overhead:
- ๋ธ๋ก๋น pointer ์ ์ฅ ๊ณต๊ฐ ํ์ (์: sector ๋น 512B, pointer 4B โ 0.78%)
๋ณํ ํํ: FAT (File Allocation Table)
- MS Windows, OS/2 ๋ฑ์์ ์ฌ์ฉ
File-Allocation Table
- ๋์คํฌ์ ๊ฐ ๋ธ๋ก์ ํฌ์ธํฐ๋ก ์ฐ๊ฒฐํ๋ ํ ์ด๋ธ ๊ตฌ์กฐ
- ๋๋ ํ ๋ฆฌ ํญ๋ชฉ์
ํ์ผ ์ด๋ฆ
๊ณผ์์ ๋ธ๋ก
๋ง ๊ฐ์ง - FAT ํ ์ด๋ธ์์ ๋ค์ ๋ธ๋ก์ ๋ฐ๋ผ๊ฐ๋ฉฐ ํ์ผ ๋ด์ฉ ๊ตฌ์ฑ
-1
์ ํ์ผ์ ๋์ ๋ํ๋
Indexed Allocation
- ๊ฐ ํ์ผ์ ์์ ์ ์ธ๋ฑ์ค ๋ธ๋ก์ ๊ฐ์ง
- ์ธ๋ฑ์ค ๋ธ๋ก์ ๋์คํฌ ๋ธ๋ก์ ๋ํ ํฌ์ธํฐ ๋ฐฐ์ด
- ์ง์ ์ ๊ทผ ์๋๊ฐ ํฅ์๋จ
- ๋ ผ๋ฆฌ์ ๊ตฌ์กฐ: ์ธ๋ฑ์ค ํ ์ด๋ธ โ ๋ฐ์ดํฐ ๋ธ๋ก
Example of Indexed Allocation
- ๋๋ ํ ๋ฆฌ์์
joep
ํ์ผ์ ์ธ๋ฑ์ค ๋ธ๋ก์ 19๋ฒ - ์ธ๋ฑ์ค ๋ธ๋ก ๋ด ํฌ์ธํฐ๋ค์ ๋ฐ๋ผ ๋์คํฌ ๋ธ๋ก๋ค์ ์ ๊ทผ
-1
์ ํ์ผ ๋์ ์๋ฏธ
Indexed Allocation โ Mapping (Cont.)
- ํ์ผ์ด ๋๋ฌด ํด ๊ฒฝ์ฐ, ํ๋์ ๋์คํฌ ๋ธ๋ก์ ์ธ๋ฑ์ค ํ ์ด๋ธ์ด ๋ค ๋ค์ด๊ฐ์ง ์์
Linked scheme
- ์ธ๋ฑ์ค ๋ธ๋ก๋ค์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ฒ๋ผ ์ฐ๊ฒฐ
- ํฌ๊ธฐ ์ ํ ์์
Two-level index
- ์ธ๋ฑ์ค ๋ธ๋ก ์์ ๋ ๋ค๋ฅธ ์ธ๋ฑ์ค๋ฅผ ํฌ์ธํฐ๋ก ๊ฐ๋ฆฌํด
Combined ๋ฐฉ์ (์: UNIX)
Combined Scheme: UNIX (4K bytes per block)
inode
๊ตฌ์กฐ:- mode, owner ์ ๋ณด
- timestamps (3๊ฐ)
- size, count
- direct blocks (๋ฐ์ดํฐ๋ฅผ ์ง์ ๊ฐ๋ฆฌํด)
- indirect blocks (๋จ์ผ, ์ด์ค, ์ผ์ค ์ธ๋ฑ์ค ํฌ์ธํฐ ํฌํจ)
Free-Space Management
๋นํธ๋งต ๋๋ ๋นํธ ๋ฒกํฐ ์ฌ์ฉ
- ๊ฐ ๋นํธ๋ ๋ธ๋ก ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ๋ํ๋
1
: free0
: occupied
- ๊ฐ ๋นํธ๋ ๋ธ๋ก ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ๋ํ๋
์ฒซ ๋ฒ์งธ free ๋ธ๋ก ๊ณ์ฐ:
(number of 0-value words) ร word size
+ ์ฒซ ๋ฒ์งธ1
๋นํธ์ offset
์ฅ์ :
- ์ฐ์๋ ๋ธ๋ก์ ์ฐพ๊ธฐ ์ฌ์
- ์ถ๊ฐ ๊ณต๊ฐ ํ์ํจ (๋นํธ๋งต ์ ์ฅ ๊ณต๊ฐ)
Free-Space Management (Cont.)
Linked list ๋ฐฉ์
- ๋ชจ๋ free block์ ์ฐ๊ฒฐ
- ์ํ ์๋๋ ๋๋ฆผ (๋์คํฌ I/O) โ ์์ฃผ ๋ฐ์ํ์ง๋ ์์
- ์ฐ์ ๊ณต๊ฐ ํ๋ณด๊ฐ ์ด๋ ค์
- ๊ณต๊ฐ ๋ญ๋น ์์
Grouping
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๋ฐฉ์์ ๋ณํ
- ์ฒซ ๋ฒ์งธ free ๋ธ๋ก์ด n๊ฐ์ ํฌ์ธํฐ๋ฅผ ๊ฐ์ง
- n-1๊ฐ๋ ๋ค๋ฅธ free block ๊ฐ๋ฆฌํด
- ๋ง์ง๋ง ํฌ์ธํฐ๋ ๋ค์ ๊ทธ๋ฃน ๋ธ๋ก์ ๊ฐ๋ฆฌํด
Counting
(์์ ๋ธ๋ก ๋ฒํธ, ์ฐ์ ๋ธ๋ก ์)
ํ์์ผ๋ก ๊ด๋ฆฌ- ์ฐ์๋ ๋ธ๋ก๋ค์ด ์์ฃผ ํจ๊ป ํ ๋น/ํด์ ๋๋ ๊ฒฝ์ฐ ์ ๋ฆฌ
Performance
Disk cache
- ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ๋ธ๋ก์ ์ฃผ๊ธฐ์ต์ฅ์น์ ๋ณ๋ ๊ตฌ์ญ์ ๋ณด๊ด
Free-behind ๋ฐ Read-ahead
- ์์ฐจ ์ ๊ทผ ์ต์ ํ๋ฅผ ์ํ ๊ธฐ๋ฒ
- ๋ค์ ๋ธ๋ก ์์ฒญ ์ ์ด์ ๋ธ๋ก ํด์ (Free-behind)
- ์์ฒญ๋ ํ์ด์ง ๋ฐ ์ดํ ํ์ด์ง๋ค์ ์ฝ๊ณ ์บ์ํจ (Read-ahead)
Virtual disk (RAM disk)
- ์ ์ฉ ๋ฉ๋ชจ๋ฆฌ ์์ญ ํ ๋น์ ํตํด PC ์ฑ๋ฅ ํฅ์
Directory entry cache (dentry cache)
- ์์ฃผ ์ฌ์ฉํ๋ ๋๋ ํ ๋ฆฌ ํญ๋ชฉ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ง
Recovery
์ผ๊ด์ฑ ๊ฒ์ฌ๊ธฐ (Consistency checker)
- ์ผ๋ถ ํ์ผ ์์คํ ์ ๋ณด๋ ๋ฉ๋ชจ๋ฆฌ์ ์์
- ์์คํ ์ถฉ๋ ์ ๋ชจ๋ ์ ๋ณด๊ฐ ๋์คํฌ์ ์ ์ฅ๋์ง ๋ชปํ ์ ์์
- ๋๋ ํ ๋ฆฌ๋ ํ์ผ ์ ์ด ๋ธ๋ก(๋ฉํ๋ฐ์ดํฐ) ์์ค ์:
- ๋ถํ
์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ์ ๋์คํฌ์ ๋ฐ์ดํฐ ๋ธ๋ก์ ๋น๊ตํ์ฌ
๋ถ์ผ์นํ ๋ถ๋ถ์ ์๋์ผ๋ก ์์ ์๋
- ๋ถํ
์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ์ ๋์คํฌ์ ๋ฐ์ดํฐ ๋ธ๋ก์ ๋น๊ตํ์ฌ
๋ฐฑ์
- ๋์คํฌ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ์ ์ฅ ์ฅ์น(ํ๋กํผ ๋์คํฌ, ์๊ธฐ ํ ์ดํ ๋ฑ)์ ๋ฐฑ์
- ๋ฐฑ์ ๋ฐ์ดํฐ๋ฅผ ํตํด ํ์ผ ๋๋ ๋์คํฌ๋ฅผ ๋ณต๊ตฌ (restore)
Final Remarks
- ์์ฝ:
- โFile Systemโ์ ๋์คํฌ ์์ ๋ฐ์ดํฐ ๊ตฌ์กฐ
- โlogical formattingโ์ ์ด ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ด๊ธฐํํ๋ ์์
- ๋์คํฌ ํ์ผ ์ ๊ทผ์ ์ด์์ฒด์ ์ ๋ฐ๋ผ ๋์์ด ๋ฌ๋ผ์ง