File and File System
File system Implementation
Allocation of File Data in Disk
Contiguous Alloc
Linked Alloc
Indexed Alloc
Directory system Implementation
- File
- A named collection of related information
- ์ผ๋ฐ์ ์ผ๋ก ๋นํ๋ฐ์ฑ ๋ณด์กฐ๊ธฐ์ต์ฅ์น์ ์ ์ฅ
- ์ด์์ฒด์ ๋ ๋ค์ํ ์ ์ฅ ์ฅ์น๋ฅผ file์ด๋ผ๋ ๋์ผํ ๋ ผ๋ฆฌ์ ๋จ์๋ก ๋ณผ ์ ์๊ฒ ํด์ค
- Operation
- crete, read, write, reposition, delete, open, close ๋ฑ
- File attribute(metadata)
- ํ์ผ ์์ฒด์ ๋ด์ฉ์ด ์๋๋ผ ํ์ผ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ฐ์ข
์ ๋ณด๋ค
- ํ์ผ ์ด๋ฆ, ์ ํ, ์ ์ฅ ์์น, ํ์ผ ์ฌ์ด์ฆ
- ์ ๊ทผ ๊ถํ(์ฝ๊ธฐ/์ฐ๊ธฐ/์คํ), ์๊ฐ (์์ฑ/๋ณ๊ฒฝ/์ฌ์ฉ), ์์ ์ ๋ฑ
- ํ์ผ ์์ฒด์ ๋ด์ฉ์ด ์๋๋ผ ํ์ผ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ฐ์ข
์ ๋ณด๋ค
- File system
- ์ด์์ฒด์ ์์ ํ์ผ์ ๊ด๋ฆฌํ๋ ๋ถ๋ถ
- ํ์ผ ๋ฐ ํ์ผ์ ๋ฉํ๋ฐ์ดํฐ, ๋๋ ํ ๋ฆฌ ์ ๋ณด ๋ฑ์ ๊ด๋ฆฌ
- ํ์ผ์ ์ ์ฅ ๋ฐฉ๋ฒ ๊ฒฐ์
- ํ์ผ ๋ณดํธ ๋ฑ
- Directory
- ํ์ผ์ ๋ฉํ๋ฐ์ดํฐ ์ค ์ผ๋ถ๋ฅผ ๋ณด๊ดํ๊ณ ์๋ ์ผ์ข ์ ํน๋ณํ ํ์ผ
- ๊ทธ ๋๋ ํ ๋ฆฌ์ ์ํ ํ์ผ ์ด๋ฆ ๋ฐ ํ์ผ attribute๋ค
- operation
- search for a file, create a file, delete a file
- list a directory, rename a file, traverse the file system
- Partition(=Logical Disk)
- ํ๋์ (๋ฌผ๋ฆฌ์ ) ๋์คํฌ ์์ ์ฌ๋ฌ ํํฐ์ ์ ๋๋๊ฒ ์ผ๋ฐ์
- ์ฌ๋ฌ ๊ฐ์ ๋ฌผ๋ฆฌ์ ์ธ ๋์คํฌ๋ฅผ ํ๋์ ํํฐ์ ์ผ๋ก ๊ตฌ์ฑํ๊ธฐ๋ ํจ
- (๋ฌผ๋ฆฌ์ ) ๋์คํฌ๋ฅผ ํํฐ์ ์ผ๋ก ๊ตฌ์ฑํ ๋ค ๊ฐ๊ฐ์ ํํฐ์ ์ file system์ ๊น๊ฑฐ๋ swapping ๋ฑ ๋ค๋ฅธ ์ฉ๋๋ก ์ฌ์ฉํ ์ ์์
Create, Delete, Open, Close, REad, Write, Append, Seek, Get attributes, Set attributes, Rename
- ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ๋ก ์ฌ๋ ค๋๋ ๊ฒ. openํ๊ฒ ๋๋ฉด file์ metadata๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ก ์ฌ๋ผ์จ๋ค.
- open("a/b/c")
- ๋์คํฌ๋ก๋ถํฐ ํ์ผ c์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ง๊ณ ์ด
- ์ด๋ฅผ ์ํ์ฌ directory path๋ฅผ search
- ๋ฃจํธ ๋๋ ํ ๋ฆฌ "/"๋ฅผ openํ๊ณ ๊ทธ ์์์ ํ์ผ 'a'์ ์์น ํ๋
- ํ์ผ 'a'๋ฅผ openํ ํ readํ์ฌ ๊ทธ ์์์ ํ์ผ 'b'์ ์์น ํ๋..
- directory path์ search์ ๋๋ฌด ๋ง์ ์๊ฐ ์์
- open์ read/write์ ๋ณ๋๋ก ๋๋ ์ด์ ์
- ํ๋ฒ openํ ํ์ผ์ read/write์ ๋ณ๋๋ก ๋๋ ์ด์ ์
- open file table
- ํ์ฌ open๋ ํ์ผ๋ค์ ๋ฉํ๋ฐ์ดํฐ ๋ณด๊ด์ (in memory)
- ๋์คํฌ์ ๋ฉํ๋ฐ์ดํฐ๋ณด๋ค ๋ช ๊ฐ์ง ์ ๋ณด๊ฐ ์ถ๊ฐ
- openํ ํ๋ก์ธ์ค์ ์
- file offset :ํ์ผ ์ด๋ ์์น ์ ๊ทผ ์ค์ธ์ง ํ์(๋ณ๋์ ํ ์ด๋ธ ํ์)
- file descriptor (file handle, file control block)
- open file table์ ๋ํ ์์น ์ ๋ณด(ํ๋ก์ธ์ค ๋ณ)
- ๊ฐ ํ์ผ์ ๋ํด ๋๊ตฌ์๊ฒ ์ด๋ค ์ ํ์ ์ ๊ทผ์ ํ๋ฝํ ๊ฒ์ธ๊ฐ?
- Access Control ๋ฐฉ๋ฒ
- Access control matrix
- Access control list :ํ์ผ๋ณ๋ก ๋๊ตฌ์๊ฒ ์ด๋ค ์ ๊ทผ ๊ถํ์ด ์๋ ํ์
- capability :์ฌ์ฉ์๋ณ๋ก ์์ ์ด ์ ๊ทผ ๊ถํ์ ๊ฐ์ง ํ์ผ ๋ฐ ํด๋น ๊ถํ ํ์
- grouping
- ์ ์ฒด user๋ฅผ owner, group, public์ ์ธ ๊ทธ๋ฃน์ผ๋ก ๊ตฌ๋ถ
- ๊ฐ ํ์ผ์ ๋ํด ์ธ ๊ทธ๋ฃน์ ์ ๊ทผ ๊ถํ(rwx)์ 3๋นํธ์ฉ์ผ๋ก ํ์
- UNIX
- password
- ํ์ผ๋ง๋ค pwd๋ฅผ ๋๋ ๋ฐฉ๋ฒ
- ๋ชจ๋ ์ ๊ทผ ๊ถํ์ ๋ํด ํ๋์ pwd :all or nothing
- ์ ๊ทผ ๊ถํ๋ณ pwd :์๊ธฐ ๋ฌธ์ , ๊ด๋ฆฌ ๋ฌธ์
- Access control matrix
- Sequential access, ์์ฐจ ์ ๊ทผ
- read all bytes/records from the beginning
- ์ค๊ฐ์ ํ์ผ์ ๊ฑด๋ ๋์ด์ ์ฝ์ ์ ์๋ค.
- ์นด์ธํธ ํ ์ดํ๊ฐ ๋งค๊ฐ์ฒด๋ผ๋ฉด ํธ๋ฆฌํจ.
- Random access, ์ง์ ์ ๊ทผ
- Bytes/records read in any order
- ์ด๋ ํ ์์๋ผ๋ ์ฝ์ ์ ์๋ค(db๋ random access๊ฐ ํ์์ ์)
- LP ๋ ์ฝ๋ ํ๊ณผ ๊ฐ์ด ์ ๊ทผ
ํ์ผ์ ํฌ๊ธฐ๋ ๋์ผํ์ง ์์ง๋ง ๋์คํฌ์ ๋์ผํ ํฌ๊ธฐ์ ์ ์ฅ ๋จ์๋ก ํ์ผ์ ์ ์ฅํ๊ณ ์์. ์ ์ฅ ๋จ์ = block ๋จ์
- Contiguous Alloc
- Linked Alloc
- Indexed Alloc
- ์ฅ์
- ๊ตฌํ์ด ์ฝ๋ค
- ๋์คํฌ์ ์ฃผ์๊ฐ ๊ฐ ์ฒซ ๋ฒ์งธ ๋ธ๋ก์.
- ํ์ผ์ ์ด๋ฆ ์์น ์ ๋ณด๋ฅผ ๋๋ ํ ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์์
- ์ฝ๊ธฐ ์ฑ๋ฅ์ด ๋น ๋ฅด๋ค.(Fase io) (์ค์๊ฐ์ฉ์ผ๋ก ์ฌ์ฉ ์๋๋ฉด run ์ค์ด๋ process์ swapping์ฉ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.)
- Direct access ๊ฐ๋ฅ
- ๊ตฌํ์ด ์ฝ๋ค
- ๋จ์
- ์๊ฐ์ด ์ง๋ ์๋ก ๋์คํฌ ํํธํ๊ฐ ๋ฐ์ํ ์ ์๋ค. (์ธ๋ถ ์กฐ๊ฐ ๋ฐ์)
- ํ์ผ์ ํฌ๊ธฐ๋ฅผ ํค์ฐ๋๋ฐ ์ ์ฝ์ด ์๋ค.
- ํ์ผ์ ํฌ๊ธฐ๋ฅผ ํค์ฐ๋ ์ค์ด๋๋์ ๋ฐ๋ผ hole ๋ฐ์
- ์ฅ์
- ์ธ๋ถ ๋จํธํ ๋ฐ์ํ์ง ์๋๋ค
- ๋จ์
- No random access
- reliability ๋ฌธ์ ๊ฐ ์๋ค.
- ํ sector๊ฐ ๊ณ ์ฅ๋ pointer๊ฐ ์ ์ค๋๋ฉด ๋ง์ ๋ถ๋ถ์ ์์
- pointer๋ฅผ ์ํ ๊ณต๊ฐ์ด block์ ์ผ๋ถ๊ฐ ๋์ด ๊ณต๊ฐ ํจ์จ์ฑ์ ๋จ์ด๋จ๋ฆผ
- 512 bytes/sector, 4byte/pointer
- ๋ณํ
- file-allocation table (FAT) ํ์ผ ์์คํ
- ํฌ์ธํฐ๋ฅผ ๋ณ๋์ ์์น์ ๋ณด๊ดํ์ฌ reliability์ ๊ณต๊ฐํจ์จ์ฑ ๋ฌธ์ ํด๊ฒฐ
- file-allocation table (FAT) ํ์ผ ์์คํ
- ์ฅ์
- ์ธ๋ถ ์กฐ๊ฐ์ด ๋ฐ์ํ์ง ์๋๋ค.
- direct access ๊ฐ๋ฅ
- ๋จ์
- small file์ ๊ฒฝ์ฐ ๊ณต๊ฐ ๋ญ๋น(์ค์ ๋ก ๋ง์ file๋ค์ด small)
- too large file์ ๊ฒฝ์ฐ ํ๋์ block์ผ๋ก index๋ฅผ ์ ์ฅํ๊ธฐ์ ๋ถ์กฑ
- ํด๊ฒฐ ๋ฐฉ์
- linked scheme
- multi-level index
- ํด๊ฒฐ ๋ฐฉ์
- Boot block :๋ถํ ์ ํ์ํ ์ ๋ณด
- Super block :ํ์ผ ์์คํ ์ ๊ดํ ์ด์ฒด์ ์ธ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์
- Inode list :ํ์ผ ์ด๋ฆ์ ์ ์ธํ ํ์ผ์ ๋ชจ๋ ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
- Data block :ํ์ผ์ ์ค์ ๋ด์ฉ์ ๋ณด๊ด
- directory์ metadata์ ์ฅํ์ง ์๊ณ inode ๋ฒํธ๋ฅผ directory๊ฐ ์ ์ฅํ๊ณ ์์.
- Linked Allocation ๋ณํํ์ฌ ์ฌ์ฉ
- Boot block
- FAT
- Root directory
- Data block
๋น์ด์๋ ๋ธ๋ก ์ด๋ป๊ฒ ๊ด๋ฆฌ ํ ๊ฒ์ธ๊ฐ.
- Bitmap
- bitmap์ ๋ธ๋ก ๋ณ๋ก ๋นํธ๋ฅผ ๋ฌ์ ์ฌ์ฉ์ค์ธ์ง ์๋์ง ๊ตฌ๋ถ
- ๋ถ๊ฐ์ ์ธ ๊ณต๊ฐ ํ์
- ์ฐ์์ ์ธ n๊ฐ์ free block์ ์ฐพ๋๋ฐ ํจ๊ณผ์
- Linked list
- ๋ชจ๋ free block๋ค์ ๋งํฌ๋ก ์ฐ๊ฒฐ
- ์ฐ์์ ์ธ ๊ฐ์ฉ๊ณต๊ฐ์ ์ฐพ๋ ๊ฒ์ ์ฝ์ง ์๋ค
- ๊ณต๊ฐ์ ๋ญ๋น๊ฐ ์๋ค
- Grouping
- linked list ๋ฐฉ๋ฒ์ ๋ณํ
- ์ฒซ๋ฒ์งธ free block์ด n๊ฐ์ pointer๋ฅผ ๊ฐ์ง
- n-1 ํฌ์ธํฐ๋ free data block์ ๊ฐ๋ฆฌํด
- ๋ง์ง๋ง pointer๊ฐ ๊ฐ๋ฆฌํค๋ block์ ๋ ๋ค์ N pointer๋ฅผ ๊ฐ์ง
- Counting
- ํ๋ก๊ทธ๋จ๋ค์ด ์ข ์ข ์ฌ๋ฌ ๊ฐ์ ์ฐ์์ ์ธ block์ ํ ๋นํ๊ณ ๋ฐ๋ฉํ๋ค๋ ์ฑ์ง์ ์ฐฉ์
- first free block, # of contiguous free blocks๋ฅผ ์ ์ง
- Linear list
- <file name, file์ metadata>์ list
- ๊ตฌํ์ด ๊ฐ๋จ
- ๋๋ ํ ๋ฆฌ ๋ด์ ํ์ผ์ด ์๋์ง ์ฐพ๊ธฐ ์ํด์๋ linear search ํ์(time consuming)
- Hash table
- Linear list + hashing
- Hash table์ file name์ ์ด ํ์ผ์ linear list์ ์์น๋ก ๋ฐ๊พธ์ด์ค
- search time์ ์์ฐ
- collision ๋ฐ์ ๊ฐ๋ฅ
- File์ metadata์ ๋ณด๊ด ์์น
- ๋๋ ํ ๋ฆฌ ๋ด์ ์ง์ ๋ณด๊ด
- ๋๋ ํ ๋ฆฌ์๋ ํฌ์ธํฐ๋ฅผ ๋๊ณ ๋ค๋ฅธ ๊ณณ์ ๋ณด๊ด
- inode, FAT
- Long file name์ ์ง์
- <file name, file์ metadata>์ list์์ ๊ฐ entry๋ ์ผ๋ฐ์ ์ผ๋ก ๊ณ ์ ํฌ๋ฆญ
- file name์ด ๊ณ ์ ํฌ๊ธฐ์ entry ๊ธธ์ด๋ณด๋ค ๊ธธ์ด์ง๋ ๊ฒฝ์ฐ entry์ ๋ง์ง๋ง ๋ถ๋ถ์ ์ด๋ฆ์ ๋ท๋ถ๋ถ์ด ์์นํ ๊ณณ์ ํฌ์ธํฐ๋ฅผ ๋๋ ๋ฐฉ๋ฒ
- ์ด๋ฆ์ ๋๋จธ์ง ๋ถ๋ถ์ ๋์ผํ directory file์ ์ผ๋ถ์ ์กด์ฌ
- Virtual File System(VFS)
- ์๋ก ๋ค๋ฅธ ๋ค์ํ file system์ ๋์ผํ ์์คํ ์ฝ ์ธํฐํ์ด์ค(API)๋ฅผ ํตํด ์ ๊ทผํ ์ ์๊ฒ ํด์ฃผ๋ OS์ layer
- Network File System(NFS)
- ๋ถ์ฐ ์์คํ ์์๋ ๋คํธ์ํฌ๋ฅผ ํตํด ํ์ผ์ด ๊ณต์ ๋ ์ ์์
- NFS๋ ๋ถ์ฐ ํ๊ฒฝ์์์ ๋ํ์ ์ธ ํ์ผ ๊ณต์ ๋ฐฉ๋ฒ์
- Page cache
- Virtual memory์ paging system์์ ์ฌ์ฉํ๋ page frame์ caching์ ๊ด์ ์์ ์ค๋ช ํ๋ ์ฉ์ด
- Memory-mapped I/O๋ฅผ ์ฐ๋ ๊ฒฝ์ฐ file์ IO์์๋ page cache์ฌ์ฉ
- Memory-mapped I/O
- File์ ์ผ๋ถ๋ฅผ virtual memory์ mapping ์ํด
- mapping์ํจ ์์ญ์ ๋ํ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์ฐ์ฐ์ ํ์ผ์ ์ ์ถ๋ ฅ์ ์ํํ๊ฒ ํจ
- Buffer cache
- ํ์ผ์์คํ ์ ํตํ IO ์ฐ์ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ํน์ ์์ญ์ธ buffer cache ์ฌ์ฉ
- file ์ฌ์ฉ์ locality ํ์ฉ
- ํ๋ฒ ์ฝ์ด์จ block์ ๋ํ ํ์ ์์ฒญ์ buffer cache์์ ์ฆ์ ์ ๋ฌ
- ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ๊ณต์ฉ์ผ๋ก ์ฌ์ฉ
- replacement algorithm ํ์(LRU, LFU)
- Unified Buffer Caches
- ์ต๊ทผ OS์์๋ ๊ธฐ์กด์ ๋ฒํผ ์บ์๊ฐ page cache์ ํตํฉ
- ๋ฉ๋ชจ๋ฆฌ์ code๊ฐ ์์ฌ๋ผ์์์ผ๋ฉด file system์์ ๋ถ๋ฌ์ด
- memory mapped file์ด๋ผ๋ฉด swap area๋ก ๊ฐ๋ ๊ฒ์ด ์๋๋ผ ์์ ์ ์ฃผ์๊ณต๊ฐ์ ๋งคํ๋์ด ์์(?)
์ด์์ฒด์ ์ด๋ก ์ด ๋๋ฌ์ต๋๋ค. ๊ฐ์ฅ ๊ธธ๊ฒ ๋๊ปด์ง๋ ๊ณผ๋ชฉ์ด์ง ์์๋ ์ถ์ต๋๋ค. ๋ค๋ฅธ ์ ๋ช ๋ฆฌํฌ๋ฅผ ๋ณด๋ฉด ๋ค๋ฃจ์ง ์๋ ๊ณณ์ด ๋๋ค์์ธ ๊ฑฐ ๊ฐ์ต๋๋ค. ๊ทธ๋์ ๊ฐ์ธ์ ์ผ๋ก ์์ธํ ํ๋์ ์ฃผ์ ๋ฅผ ์๊ธฐ๋ณด๋ค ํฐ ํ์์ ์ด๋ค ๋ฐฉ์๊ณผ ๋ฐฉ๋ฒ์ ๊ฐ์ง๊ณ ๊ตฌํ์ ํ ์ ์๋์ง ์๋๊ฒ ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค ใ ใ
- ํ์ผ ์์คํ ์ด ๋ฌด์์ธ๊ฐ์?
- Directory๊ฐ ๋ฌด์์ธ๊ฐ์?
- ํ์ผ ์์คํ ๊ตฌํ ๋ฐฉ๋ฒ์๋ ๋ฌด์์ด ์๊ณ ๊ฐ ๊ตฌํ ๋ฐฉ๋ฒ์ ์ค๋ช ํด์ฃผ์ธ์
3-1. Contiguous Alloc์ ํน์ง์ ๋ฌด์์ธ๊ฐ์?
3-2. Linked Alloc์ ํน์ง์ ๋ฌด์์ธ๊ฐ์?
3-3. Indexed Alloc์ ํน์ง์ ๋ฌด์์ธ๊ฐ์?
- ๋ฉ๋ชจ๋ฆฌ์ ๋น๊ณต๊ฐ์ ์ด๋ป๊ฒ ๊ด๋ฆฌํ๋์? ๊ฐ ๊ด๋ฆฌ ๋ฐฉ๋ฒ์ ํน์ง์ ์ค๋ช ํด์ฃผ์ธ์
- ๋๋ ํ ๋ฆฌ์ ๊ตฌํ ๋ฐฉ๋ฒ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์