๐Ÿ€ Knowledge/์šด์˜์ฒด์ œ(OS)

[์šด์˜์ฒด์ œ] ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์•Œ์•„๋ณด์ž.

TIlearn 2024. 4. 28. 21:32

 

 

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์€ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•œ๋‹ค.