- toc {:toc}
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
-
ํ๋ก๊ทธ๋จ
- jpg, mpg, avi, mp3, โฆ
-
์ธ์ฝ๋ฉ ํ์ผ ํ์
- ์๋์ฐ๋ ์ด๋ฆ ์์ ํ์
์ด ์๋ค.
- .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์ ์ ๊ทผํด ์์ ํ๋ค.