[์ด์์ฒด์ ] ๋๋ ํ ๋ฆฌ๋ฅผ ์์๋ณด์.
File Directory
๋๋ ํ ๋ฆฌ๋ ํ์ผ๋ค์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
์ด๋ ๊ฐ๊ฐ์ ํ์ผ๋ค์ ๊ทธ ์์ฒด๋ก ์กด์ฌํ๋ ๊ฒ์ด ์๋๋ผ, ํ์ผ ์๋ณด์ผ๋ก ์ด์ด์ง๋ ํฌ์ธํฐ๋ก ์กด์ฌํ๋ค.
์ฆ, ๋๋ ํฐ๋ฆฌ๋ ๊ฐ๊ฐ์ ํ์ผ ํฌ์ธํฐ์ธ FCB(File Control Block)๋ฅผ ์ง๋๋ค.
๋๋ ํ ๋ฆฌ๋ ๊ทธ ์์ฒด๋ก OS์ ์ํด ์์ ๋๋ ํ์ผ์ด๋ค.
Hierarchical Directory
์ ๊ทธ๋ฆผ์ ๊ณ์ธตํ ๋๋ ํ ๋ฆฌ(Hierarchical Directory)์ ๊ตฌ์กฐ๋ฅผ ๋ํ๋ธ ๊ฒ์ด๋ค.
๊ฐ์ฅ ์์ ์๋ ์์๋ฅผ _root_ ํน์ _master_๋ผ๊ณ ํ๋ค.
ํนํ ํ์ฌ ๋๋ ํ ๋ฆฌ๋ฅผ _working directory_๋ผ๊ณ ํ๋๋ฐ, ์ด๋ฌํ ๊ฐ๋ ์ด ์๋ค๋ฉด ํน์ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ ๋ ๋งค์ฐ ํ๋ค ๊ฒ์ด๋ค. ์ด๋ _root_๋ก๋ถํฐ ๋งค๋ฒ ๊ฒฝ๋ก๋ฅผ ์ ๋์ ์ผ๋ก ํ์ธํด์ผํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฆฌ๋ ์ค์์์ FCB ๊ตฌ์กฐ๋ฅผ ํตํด ๋ ์ฝ๊ฒ ์ดํดํด๋ณด์.
_byte offset_์ ํ์ฌ ํ์ผ๋ก ๋ถํฐ ์์นํ ์๋์ ์ธ ๊ฑฐ๋ฆฌ๋ฅผ ๋ํ๋ธ๋ค. ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด 16๋ฐ์ดํธ ๋จ์๋ก ํ์ผ๋ค์ด ๋์ดํด์์์ ํ์ธํด๋ณด๋ฉด ๋๋ค.
_inode number_๊ฐ ๋ฐ๋ก FCB์ ์๋ณ์์ด๋ค. ์ด ๊ฐ์ ๋ณด๊ณ ๊ณ์ธตํ ๊ตฌ์กฐ์์ ํ์ผ์ ์ฐพ๋๊ฒ ๊ฐ๋ฅํด์ง๋ค.
unix ์ด์์ฒด์ ์์๋ _root_ ์ inode๋ 2๋ฒ์ผ๋ก ๊ณ ์ ๋์ด์๋ค. ์ด๋ ๊ฐ ์ด์์ฒด์ ๋ง๋ค ๋ค๋ฅด๋ค.
๊ทธ๋ฌ๋ฉด _root_ ๋ก๋ถํฐ ํน์ ํ์ผ์ ์ฐพ์๊ฐ ๋๊น์ง์ ํ๋ฆ์ ๊ทธ๋ฆผ์ผ๋ก ์ดํด๋ณด์.
์ฐ์ _root_๋ถํฐ ์์ํด์ผ ํ๋ฏ๋ก, inode 2๋ฒ์ ์ ์ฅ๋ ์ฃผ์ ๊ฐ์ ์ฝ์ด์ค๋ค. ์ด ์ฃผ์๋ _root_ ๋๋ ํ ๋ฆฌ์ ํด๋น๋๋ ์ฃผ์์ด๋ฉฐ ๋ฐ๋ผ๊ฐ๋ฉด _root_๋๋ ํ ๋ฆฌ์ data block์ด ๋์จ๋ค.
์ฌ๊ธฐ data block์๋ ์๊ธฐ ์์ , ๋ถ๋ชจ ๊ทธ๋ฆฌ๊ณ ์์ ์ ํ์ ๋ ธ๋์ ๋ํ ์ ๋ณด๋ฅผ inode์ ์ฐธ์กฐ๊ฐ ํํ๋ก ๊ฐ์ง๊ณ ์๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ์ฐ์์ ์ธ ํ์์ด ๊ฐ๋ฅํ ๊ฒ์ด๋ค.
์ฐ๋ฆฌ๋ _/usr/member/list.txt_๋ผ๋ ํ์ผ์ ํ์ํด๋ณด๊ณ ์ ํ๋ค. ์ฆ, data block์ ์ข์ธก์ ์ ํ์๋ ๋ฒํธ(inode) ๊ฐ์ ํตํด ๊ณ์ ์ฐพ์๊ฐ์ผ ํ๋ค.
_/user_ ๋๋ ํ ๋ฆฌ์ inode ๊ฐ์ 4์ด๋ค. ์ด inode์ ๊ฐ์ ๋ฐ๋ผ๊ฐ ๋ง์ฐฌ๊ฐ์ง๋ก data block์ ์ฐพ์์ฃผ์. ๊ทธ๋ฌ๋ฉด _/user_๋๋ ํ ๋ฆฌ์์๋ ์์ ์ ์์ ๋ ธ๋์ ๋ํ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์๊ณ , ์ฌ๊ธฐ์ _member_๋ฅผ ๋ฐ๊ฒฌํ ์ ์๋ค.
์ด๋ฌํ ๋ฐฉ์์ผ๋ก ํ์ผ์ ๋ํ ํ์์ ์งํํ๋ค๋ฉด ๊ฒฐ๊ตญ _list.txt_๋ผ๋ ํ์ผ์ ๋๋ฌํ ์ ์๋ค.
Acyclic-Graph Directories
๋ง์ฝ ์ด๋ค ๋์ผํ ํ์ผ์ ์ฐพ๊ธฐ ์ํด์ ๋ ๊ฐ์ง ์ ๊ทผ์ ํ ์ ์๋ค๊ณ ์๊ฐํด๋ณด์. ์๋ค๋ค์ด ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด a๋ผ๋ ์๋ณธ ์์๊ณผ ์ง์ ์ฐ๊ฒฐ๋ ๋งํฌ์ b๋ผ๋ ๊ฐ์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๋งํฌ๋ฅผ ํตํด์ ๊ฐ์ ์์์ ๋๋ฌํ ์ ์๋ค. ์ด๋ "๋ฐ๋ก๊ฐ๊ธฐ"์ ๊ฐ์ ๊ธฐ๋ฅ์ ๋ ์ฌ๋ ค๋ณด๋ฉด ์ฝ๊ฒ ๊ตฌํ ๊ฐ๋ฅํ ์ํฉ์์ ์ง์ํ ์ ์๋ค.
์ฌ๊ธฐ์ ๋ง์ฝ a์ a๋ฐ์ ์ฐ๊ฒฐ๋ ํ์ผ์ ์์์ ์ง์ ๋ค๊ณ ํด๋ณด์. ๊ทธ๋ฌ๋ฉด ์ด๋ฏธ ์์์ ์์ด์ง ์ํฉ์ธ๋ฐ, b๋ a๋ฐ์ ์์์ ์ฌ์ ํ ๊ฐ๋ฆฌํจ๋ค. ์ด๋ฅผ "dangling pointer"ํ์์ด๋ผ๊ณ ํ๋ค. ์ฐ๋ฆฌ๊ฐ c์ธ์ด์์ ๋ฐฐ์ ๋ ๊ทธ "dangling pointer"์ ์๋ฏธ์ ์ผ๋ก ๊ฑฐ์ ์ ์ฌํด๋ณด์ธ๋ค.
dangling pointer๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ด 2๊ฐ์ง๋ค.
- ๊ทธ๋ฅ ๊ฐ๋งํ ๋๊ธฐ.
- ๋ฐ๋ก๊ฐ๊ธฐ ๋งํฌ๊ฐ ์ด์์์ด๋, ํด๋ฆญํ๋ฉด "ํด๋น ํ์ผ์ด ์์ต๋๋ค"๋ผ๋ ์๋ฌ๋ฌธ๊ตฌ๊ฐ ์ฃผ๋ ํ์์ด๋ค.
- Entry-count solution
- ํด๋น ์์์ ๊ฐ๋ฆฌํค๋ ๋งํฌ์ ๊ฐฏ์๋ฅผ FCB์์ ์ ์ฅํด ๋๋ ๋ฐฉ๋ฒ์ด๋ค.
- ์๋ฅผ ๋ค์ด, a์ b๊ฐ ๋ชจ๋ ๊ฐ์ ํ์ผ์ ๊ฐ๋ฆฌํจ๋ค๋ฉด ์ด ํ์ผ์ count๊ฐ์ 2์ด๋ค.
- ์ด๋ ๊ฒ Entry-count๊ฐ์ด 0์ด๋ฉด ์ง์๋ ๋์ง๋ง, 0์ด ์๋๋ฉด ์ง์ฐ๋ฉด ์๋๋ค.
๊ทธ์ธ ์ฐ์ง๋ ์๋ ํด๊ฒฐ๋ฐฉ๋ฒ 2๊ฐ์ง
1. ์ง์ ํ์ผ ์์คํ ์ ๋ค์ ธ๊ฐ๋ฉฐ ๋งํฌ๋ฅผ ์ง์ด๋ค.
์ด๋ ์๊ฐ์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ์ง ์๋๋ค.
2. BackPointers
reference list๋ผ๋ ํ์ผ์ ๋งํฌ๋ค์ ๋ชจ์๋์ ๋ฆฌ์คํธ๋ฅผ ํ์ฉํ๋ค.
ํ์ง๋ง, ๊ตฌํ ๋ฐฉ๋ฒ์ด ๋๋ฌด ๋ณต์กํ์ฌ ์ ์ฌ์ฉํ์ง ์๋๋ค.
File Sharing
์ฌ์ฉ์๊ฐ ์ฌ๋ฌ ๋ช ์ผ ๋ ๊ฐ์ ํ์ผ์ ๋ค๋ฃฌ๋ค๋ฉด ์ฌ๋ฌ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
ํ๋๋ ์ ๊ทผ ๊ถํ๊ณผ ๊ด๋ จ๋ ๊ฒ์ด๊ณ , ๋ค๋ฅธ ํ๋๋ ๋์ ์ ๊ทผ๊ณผ ๊ด๋ จ๋ ๊ฒ์ด๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋์ ์ ๊ทผ์ ์์ด์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ ์ทจํ๋ค.
- ๊ทธ๋๋ก ๋๋ค.
- ํ์ผ์ด ์ฌ์ฉ ์ค์ด๋ผ๋ฉด lockํ๋ค.
- ํ์ผ์ ์ผ๋ถ์ธ record์ ๋ํด์๋ง lockํ๋ค.
์ด๋ฌํ ๋์ ์ ๊ทผ์ ์ ๋๋ก ๋ณด์ฅํ๊ธฐ ์ํด์๋ Mutual Exclusion์ ์ง์ผ์ฃผ์ด์ผ ํ๋ฉฐ DeadLock์ด ๋ฐ์ํ์ง ์๋๋ก ํด์ผํ๋ค.
Access Rights
๊ฐ์ธ๊ณผ ๊ทธ๋ฃน, ๋ชจ๋ ์ฌ์ฉ์์ ๋ํ ํ์ผ ์ ๊ทผ ๊ถํ์ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋งค์ฐ ์ค์ํ๋ค.
๊ฐ์ธ๋ง ๊ฑด๋๋ ค์ผ ํ๋ ํ์ผ์ ๋ํด ๋ด๊ฐ ๋ชจ๋ฅด๋ ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ณ๊ฒฝํ๋ ์ํฉ์ด ๋ฐ์ํ๋ฉด ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐ๋ผ์ ๊ฐ์ธ์ด ํน์ ์ ์ , ๊ทธ๋ฃน, ํน์ ๋ชจ๋ ์ ์ ๋ค์๊ฒ ์ปดํจํฐ ํ์ผ์ ๋ํ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ ์ ์๋ค.
์ฌ๊ธฐ์๋ ์ฝ๊ธฐ(read), ์ฐ๊ธฐ(write), ์คํ(execute)์ 3๊ฐ์ง ๋ชจ๋๊ฐ ์กด์ฌํ๋ค.
์ฌ๊ธฐ์ ์ซ์ 1์ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์๋ฏธํ๊ณ , 0์ ๊ฐ๋ฅํ์ง ์์์ ์๋ฏธํ๋ค.