Basic Concept
- OS λ μ μ₯λ μ 보μ λν΄ λμΌν logical view λ₯Ό μ 곡νλ€.
- μ μ₯μ₯μΉμ 물리μ νΉμ§μ μΆμ½νλ€.
- File : Logical storage unit (μ μ₯ μ₯μΉμ μ μ₯νλ λ¨μ)
- μ¬μ©μμ νλ‘κ·Έλ¨μ΄ λ°μ΄ν°λ₯Ό μ μ₯νκ³ μ¬μ¬μ©ν μ μλ€.
- Nonvolatile
- νλ‘κ·Έλ¨ (source, objects) κ³Ό λ°μ΄ν° (numeric, character, binary) λ₯Ό λνλΈλ€.
- File β νμ₯μμ μν΄ λ΄μ© μ μλλ€.
File Attributes
| Attribute | Description |
|---|
| name | μ¬λμ΄ μ½μ μ μλ νν μ΄λ¦ |
| identifier | μμ€ν
μ΄ κ΅¬λΆν μ μλ μμ± |
| type | νμΌ νμ
|
| location | μ₯μΉμ νμΌ μμΉ |
| size | νμ¬ νμΌ μ¬μ΄μ¦ |
| protection | λκ° μ½κ³ μ°κ³ μ€νν μ μλμ§ |
| timestamps and user identification | monitoring, 보μμ λν λ°μ΄ν° |
File Operations
- Create
- Open
- Write - write pointer μμΉμμ write
- Read - read pointer μμΉμμ read
- Reposition within a file
- Delete
- Truncate : νμΌ λ΄μ©μ μ§μ°κ³ μμ±μ μ μ§
- Create, Open μ μΈν λͺ¨λ operation μ open μ λ¨Όμ μ§νν΄ file discripter λ₯Ό μ»μ΄μΌ νλ€.
- OS β open-file table μ μ μ§ (μ΄λ € μλ νμΌ μΆμ λͺ©μ )
- open count : νμΌμ΄ λͺλ² μ΄λ Έλμ§ μ μ₯
File Locking
- νμΌμ λν΄ μ κ·Ό μ»μ§ λͺ»νλλ‘ νμΌμ μ κ·Έλ κ²
- reader-writer lock κ³Ό λΉμ·νλ€.
- Shared lock : reader lock κ³Ό λΉμ· β μ¬λ¬ νλ‘μΈμ€λ€μ΄ λμμ lock νλ κ°λ₯
- Exclusive lock : writer lock κ³Ό λΉμ· β ν λ²μ ν νλ‘μΈμ€λ§ νλ κ°λ₯
- Mandatory : OS κ° locking ν΅ν©μ μΌλ‘ 보μ₯
- Advisory : κ°λ°μ (μ¬μ©μ£Όμ²΄) κ° lock μ μ μ νκ² μ§μ μ€μ
- int flock(int fd, int operation);
- int fcntl(int fd, int cmd, β¦);
File Types
- νμΌ μμ€ν
μ μ΄ν΄λ₯Ό μν type
- device, directory, symbolic link
- OS, runtime library
- executable, dll, source code, object code
- νλ‘κ·Έλ¨
- μΈμ½λ© νμΌ νμ
- μλμ°λ μ΄λ¦ μμ νμ
μ΄ μλ€.
- .com, .exe, .bat, .dll, .jpg, β¦
- μ λμ€λ νμΌ λ΄μ© μμ μλ€.
Access Methods

- Sequential access (μμ°¨ μ κ·Ό) : λ€μ λ΄μ©μ μ½κ³ μ΄λ€.
- Direct access : number μ ν΄λΉνλ λΆλΆμ μ§μ μ κ·Ό (μμμ μκ΄μμ΄ λΉ λ₯΄κ² μ½κ³ μΈ μ μλ€.)
- Index access : μ±
μ λͺ©μ°¨μ²λΌ μ¬μ©ν΄ μ κ·Ό
Directory Structure
- λͺ¨λ νμΌμ λν μ 보λ₯Ό ν¬ν¨ν λ
Έλλ€μ μ§ν©
- λλ ν 리 ꡬ쑰μ νμΌ λͺ¨λ λμ€ν¬μ μμΉ
- Efficiency(ν¨μ¨μ±) : λΉ λ₯΄κ² νμΌμ μμΉμν€κΈ° μν΄ μ¬μ©
- Naming(λͺ
μΉ) : μ¬μ©μμ νΈμμ±μ μν΄
- μλ‘ λ€λ₯Έ μ¬μ©μμ κ²½μ° λ€μν νμΌμ λν΄ κ°μ μ΄λ¦μ κ°μ§ μ μλ€.
- κ°μ νμΌμ λν΄ λ€μν μ΄λ¦μ κ°μ§ μ μλ€.
- Grouping : νμΌ logical grouping
Single-Level Directory
- λͺ¨λ νμΌμ΄ ν ν΄λμ λ€μ΄κ° μλ κ²½μ°
- Naming problem(μλ‘ μ μΌν μ΄λ¦ κ°λλ€.), Grouping problem(λλ μ μλ€.) λ°μ.

Two-Level Directory
- μ¬μ©μ κ°κ°μ ν΄λκ° λ€λ₯΄κ² λΆλ¦¬νλ€.
- Path name : user_name/file_name
- ν¨μ¨μ νμ
- Grouping μ ν μ μλ€.

Tree-Structured Directory
- κ°μ₯ νν directory ꡬ쑰
- Root directory λ₯Ό κ°λλ€.
- λͺ¨λ νμΌμ΄ κ³ μ ν κ²½λ‘λ₯Ό κ°λλ€.

Acyclic-Graph Directory
- μμ λλ ν λ¦¬κ° νμ λλ ν 리μ νμΌμ 곡μ ν μ μλλ‘ νμ©νλ€.
- νμΌμ΄ λ κ°μ§ λ€λ₯Έ μ΄λ¦μ κ°μ§ μ μλ€.
- νμ§λ§ μν κ΅¬μ‘°κ° μκΈ°λ©΄ μλλ€.
- μ λμ€ = Symbolic link, Pointer

General Graph Directory
- λλ ν 리μ νμΌμμ μν κ΅¬μ‘°κ° λ°μν΄λ λλ€.
- Reference count κ° 0 μ΄ λμ§ μλλ€.
- β root μμ ν΄λΉ νμΌλ‘ κ°λ₯ κ²½λ‘κ° μμ΄λ reference count = 1 μ΄ λλ€. (μν ꡬ쑰μμ)
- β μ κ·Ό κ°λ₯νλ €λ©΄ 0 μ΄μ΄μΌ νλλ°, μ΄λ₯Ό νμΈν μ μλ€.
- β Garbage collection μ μ¬μ©νμ¬ μ κ·Όν μ μμΌλ©΄ μμ νλ€.

Protection
- νμΌ μ μμ/μμ μ β λꡬμ μν΄ μ€νλμλμ§ μμμΌ νλ€.
- μ κ·Ό κΆν λΆμ¬
Access List / Group in Unix
- 3 κ°μ§ λͺ¨λ : read (R), write (W), execute (X)

- chmod λ₯Ό ν΅ν΄ ν΄λΉ μ κ·Ό κΆνμ λΆμ¬ν μ μλ€.
Memory-Mapped Files
- Virtual address μ ν λΆλΆμ΄ νμΌλ€κ³Ό λ
Όλ¦¬μ μΌλ‘ μ°κ²°λ μ μλλ‘ νμ©νλ€.
- Disk Block μ Page μ μ°κ²°νλ€.
void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);
- addr = mmap() μ΄ν addr μ write λ₯Ό ν κ²½μ° λ©λͺ¨λ¦¬μ μ¨μ§λ κ²μ΄ μλ νμΌμ μ¨μ§λ κ²

- Memory-mapped μν©μμ 3 λ² frame μ write κ³Όμ
- Write μ
λ ₯
- 3 λ² frame addr μ μ κ·Ό
- Page fault λ°μ
- Disk μμ ν΄λΉ file λΆλΆμ 3 λ² physical memory μ μ¬λ €μ€λ€.
- Page κ° physical memory μ μ¬λ €μ§ disk block μ μ κ·Όν΄ μμ
νλ€.