๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
HYU/์šด์˜์ฒด์ œ(OS)

12. File System

by Jaeguk 2023. 5. 27.

OS์˜ ์—ญํ• ์€ ํฌ๊ฒŒ 3๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

1. ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ 2. ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ 3. ํŒŒ์ผ๊ณผ I/O

 

File

ํŒŒ์ผ์„ ํ•œ ๋งˆ๋””๋กœ ์ •์˜ํ•˜๋ฉด, ๋ฐ์ดํ„ฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ด๋Š” ๊ทธ๋ฆ‡์ด๋ผ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ทธ๋ฆ‡๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ์ด ํŒŒ์ผ ์‹œ์Šคํ…œ์ด๋‹ค.

ํŒŒ์ผ์— ๋ฐ์ดํ„ฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ด๋Š”๋ฐ, ํŒŒ์ผ์˜ ์ œ์ผ ์•ž ๋ถ€๋ถ„์„ 0๋ฒˆ์ง€๋ผ ์ƒ๊ฐํ•˜๊ณ  offset์ด ์ปค์ง€๋ฉด์„œ ์—ฐ์†์ ์œผ๋กœ ๋‹ด๊ธฐ๊ฒŒ ๋œ๋‹ค.

์ฆ‰, ํŒŒ์ผ ํ•˜๋‚˜๋Š” ๊ทธ ์ž์ฒด๋กœ ํ•˜๋‚˜์˜ logicalํ•œ address space์ด๋‹ค. ๊ทธ ์ฃผ์†Œ๊ณต๊ฐ„ ์•ˆ์— ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ์†์ ์œผ๋กœ ์ €์žฅํ•œ๋‹ค.

 

File Structure

ํŒŒ์ผ์˜ ๊ตฌ์กฐ๋Š” 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

1. None: ๊ตฌ์กฐ๊ฐ€ ์—†๋Š” ํŒŒ์ผ๋กœ ๋ฐ”์ดํŠธ sequence๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

2. Simple record structure: ํŒŒ์ผ์—์„œ ํ•œ ์ค„์ด ํ•˜๋‚˜์˜ ์˜๋ฏธ ๋‹จ์œ„๋ฅผ ๊ฐ–๋Š”๋‹ค.

3. Complex Structures: hwp, word, ppt ์ฒ˜๋Ÿผ ์ž์ฒด์ ์œผ๋กœ ๋‚ด๋ถ€์ ์ธ ํ˜•์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŒŒ์ผ

์ด๋Ÿฌํ•œ ํŒŒ์ผ์˜ ๊ตฌ์กฐ๋Š” ๋ˆ„๊ฐ€ ๊ฒฐ์ •ํ•˜๋Š๋ƒ

OS๊ฐ€ ๊ฒฐ์ •ํ•˜๋Š” ํŒŒ์ผ๋„ ์žˆ๊ณ , ํ”„๋กœ๊ทธ๋žจ์ด ๊ฒฐ์ •ํ•˜๋Š” ํŒŒ์ผ๋„ ์žˆ๋‹ค.

 

File Attributes ( File Metadata )

ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด(๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ)์—๋Š” ํŒŒ์ผ์˜ ์ด๋ฆ„, ํ™•์žฅ์ž, ์œ„์น˜, ํฌ๊ธฐ, ๊ถŒํ•œ ๋“ฑ์ด ์žˆ๋‹ค.

ํŒŒ์ผ์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ directory ๋˜๋Š” Folder์— ์ €์žฅ๋œ๋‹ค. ๊ทธ ํด๋” ์•ˆ์— ๋‹ด๊ธด ํŒŒ์ผ๋“ค์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํด๋”์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ํŒŒ์ผ์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ํด๋”์— ๋จผ์ € ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค.

 

Directories

๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜๋Š” ์ด์œ ๋Š” ํŒŒ์ผ์„ ๋„ˆ์ €๋ถ„ํ•˜๊ฒŒ ํ•˜๋“œ ๋””์Šคํฌ์— ํฉ์–ด ๋†“์œผ๋ฉด ์–ด๋””์— ์–ด๋Š ํŒŒ์ผ์ด ์žˆ๋Š”์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค. ๋˜๋Š” ๋น„์Šทํ•œ ํŒŒ์ผ๋“ค์€ ๊ทธ๋ฃจํ•‘์„ ํ•˜๊ณ  ์‹ถ์€๋ฐ, ํฉ์–ด์ ธ ์žˆ์œผ๋ฉด ๊ทธ๊ฒƒ๋„ ์•ˆ ๋œ๋‹ค.

=> ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ ํŒŒ์ผ์„ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๊ณ ,
=> ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ์ž…์žฅ์—์„œ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์–ด๋–ค ํŒŒ์ผ์˜ ์œ ์ผํ•œ ์ด๋ฆ„์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํŽธ๋ฆฌํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.

ํŒŒ์ผ์˜ ์ด๋ฆ„์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ •ํ•˜๋Š” ๊ฑด๋ฐ, ํ•˜๋“œ ๋””์Šคํฌ ์•ˆ์— ๋“ค์–ด ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ๋‹ค ๋‹ค๋ฅด๊ฒŒ ์ง€์ •ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— ํŒŒ์ผ์„ ๋„ฃ์œผ๋ฉด ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„๊นŒ์ง€ ํฌํ•จํ•ด์„œ ํŒŒ์ผ์˜ ์ด๋ฆ„์ด ๊ฒฐ์ •๋˜๊ฒŒ ๋œ๋‹ค.
ํŒŒ์ผ์˜ ์ด๋ฆ„์€ root๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ํŒŒ์ผ๊นŒ์ง€์˜ ๊ฒฝ๋กœ๊ฐ€ ํŒŒ์ผ ์ด๋ฆ„์ด ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

=> ํŒŒ์ผ์˜ ์ด๋ฆ„์ด ๊ฐ™์•„๋„, ๋“ค์–ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋‹ค๋ฅด๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ์ด๋ฆ„์„ ๊ฐ–๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ํŒŒ์ผ๋“ค์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋””๋ ‰ํ† ๋ฆฌ๋ผ๋Š” ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

 

A Directory Entry

ํŒŒ์ผ์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋œ๋‹ค๊ณ  ํ–ˆ๋‹ค. ์–ด๋–ค ์‹์œผ๋กœ ์ €์žฅ๋˜๋Š”์ง€ ๋ณด์ž.

 

์–ด๋–ค ๋””๋ ‰ํ† ๋ฆฌ๋Š” ๋‚ด๋ถ€์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒ์ผ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค.
๊ทธ๋Ÿฌ๋ฉด ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ์— ์†ํ•œ ํŒŒ์ผ ๊ฐ๊ฐ์— ๋Œ€ํ•œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ์žฅ์†Œ๊ฐ€ ํŒŒ์ผ์˜ ์ˆ˜๋งŒํผ ์กด์žฌํ•  ๊ฒƒ์ด๋‹ค.

ํŒŒ์ผ์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด  ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ์— ์ ํ•ฉํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ํ•„์š”ํ•˜๊ณ  ๊ทธ๊ฒƒ์„ Directory entry๋ผ๊ณ  ํ•œ๋‹ค.
=> ํŒŒ์ผ์˜ ๊ฐœ์ˆ˜๋งŒํผ Directory entry๊ฐ€ ์กด์žฌํ•œ๋‹ค.

๋””๋ ‰ํ† ๋ฆฌ์—๋Š” parent directory๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ์™€, child directory๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ UNIX ๊ณ„์—ด์˜ OS๋“ค์€ ๋””๋ ‰ํ† ๋ฆฌ๋„ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.
ํŒŒ์ผ์ธ๋ฐ ํŒŒ์ผ์˜ contents๊ฐ€ ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์˜ ํŒŒ์ผ๋“ค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํŒŒ์ผ์ด๋‹ค.

ํ•˜๋‚˜์˜ ๋””๋ ‰ํ† ๋ฆฌ๋Š” ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด์˜ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ •๋ณด ๋ฟ ์•„๋‹ˆ๋ผ, ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋“ค์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋„ ๊ฐ™์ด ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

ํŒŒ์ผ์˜ ์œ„์น˜๋Š” ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ์— ์ €์žฅ๋œ๋‹ค.
๊ทธ๋Ÿฌ๋ฉด ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋Š” ์–ด๋””์— ์ €์žฅ์ด ๋˜์–ด์•ผ ํ• ๊นŒ?
์ด๊ฒƒ ์—ญ์‹œ ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ์ด ๋˜๋ฉด, ๋””๋ ‰ํ† ๋ฆฌ๋งŒ ์ฐพ์œผ๋ฉด ํŒŒ์ผ์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ์œ„์น˜๋ฅผ ์•Œ ์ˆ˜ ์žˆ๊ณ , ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿผ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์œ„์น˜๋Š” ์–ด๋–ป๊ฒŒ ์•Œ๊นŒ? ๋””๋ ‰ํ† ๋ฆฌ๋Š” ํŒŒ์ผ๋กœ ์ทจ๊ธ‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์œ„์น˜๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋ฃจํŠธ๋กœ๋ถ€ํ„ฐ ์›ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ๋Š” ์œ„์น˜๊นŒ์ง€ ์ฐพ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋ ‡๊ฒŒ ์ฒซ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ ๋ธ”๋Ÿญ์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„๋‚ธ ๋‹ค์Œ์— ์ฒซ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ๋ฅผ ์ฝ์—ˆ๋‹ค๊ณ  ํ•˜์ž.
๊ทธ๋Ÿฐ ๋‹ค์Œ์— ๋‘ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์‹ถ์œผ๋ฉด ๋˜‘๊ฐ™์€ ํ–‰์œ„๋ฅผ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋œ๋‹ค.
๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ๋กœ ์ ‘๊ทผํ•ด์„œ ๋ฐ์ดํ„ฐ ๋ธ”๋Ÿญ์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„๋‚ด๊ณ , ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•œ๋‹ค.

๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค ๊ทธ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋œ๋‹ค.
ํŒŒ์ผ์€ ๋ชจ๋‘ ํ•˜๋“œ๋””์Šคํฌ์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ๋””์Šคํฌ์— ์ ‘๊ทผํ•˜๋Š” ์ผ์ด ๋ฐ˜๋ณต๋œ๋‹ค.
=> ๋ฐ์ดํ„ฐ ํ•˜๋‚˜์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋ฒˆ์˜ I/O ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š” ์…ˆ์ด๋‹ค.


ํŒŒ์ผ์„ ์˜คํ”ˆํ•œ๋‹ค๋Š” ํ–‰์œ„๋Š” ์˜คํ”ˆํ•˜๋Š” ํŒŒ์ผ์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค๋†“๋Š” ํ–‰์œ„๋ฅผ ํ•œ๋‹ค.
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๋งค๋ฒˆ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค ๋””์Šคํฌ์— ์ ‘๊ทผํ•˜๋Š” ์ผ์„ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
=> I/O๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ํŒŒ์ผ์„ ์˜คํ”ˆํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค.

 

ํŠนํžˆ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฒ˜์Œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜ค๊ธฐ ์ „๊นŒ์ง€, ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ๊ณผ์ •์—์„œ I/O๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•œ๋‹ค. ๋ฃจํŠธ๋ถ€ํ„ฐ ์ ‘๊ทผํ•ด์„œ ์ฐพ์•„๋‚˜๊ฐ€์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—

๊ทธ๋ž˜์„œ ํ•œ ๋ฒˆ์ด๋ผ๋„ ํŒŒ์ผ์ด ์ ‘๊ทผ์ด ๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ์— ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ์˜ฌ๋ผ์˜ค๋ฉด ํŒŒ์ผ์„ closeํ•ด์„œ ๋‹ค ์‚ฌ์šฉํ–ˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„, ๊ทธ ํŒŒ์ผ์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ƒฅ ์ง€์›Œ๋ฒ„๋ฆฌ๋ฉด ๋‹ค์Œ์— ๊ทธ ํŒŒ์ผ์— ๋˜ ๋‹ค์‹œ ์ ‘๊ทผํ–ˆ์„ ๋•Œ ๊ฐ™์€ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ด์•ผ ํ•œ๋‹ค.
=> ๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
ํ•œ ๋ฒˆ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ํŒŒ์ผ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋Š” close๋˜์–ด๋„ ๋ฒ„๋ฆฌ์ง€ ์•Š๊ณ  ์บ์‹œ์— ๋‚จ๊ฒจ๋‘”๋‹ค.

 

ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋˜๊ฒŒ ๋˜๋ฉด, ํŒŒ์ผ์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋„ ๋ณ€๊ฒฝ๋˜๊ฒŒ ๋˜๋Š”๋ฐ ๊ทธ๋Ÿฌ๋ฉด ๋จผ์ € ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ์—…๋ฐ์ดํŠธ ๋œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•˜๋“œ ๋””์Šคํฌ์— ์žˆ๋Š” ์›๋ณธ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ์—๋„ ๋ฐ˜์˜์ด ๋˜์–ด์•ผ ํ•œ๋‹ค.

์ตœ์‹ ์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ์ •๋ณด๊ฐ€ ํ•˜๋“œ ๋””์Šคํฌ์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ์ •๋ณด์™€ ์ผ์น˜ํ•˜๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.
=> ์ด ์—ญ์‹œ I/O๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์„ฑ๋Šฅ์„ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ๊ณ„์† ๋ฐ˜์˜ํ•˜๋‹ค๊ฐ€ ์ตœ์ข…์ ์œผ๋กœ ํ•œ ๋ฒˆ ๋””์Šคํฌ์— ์จ์ฃผ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ์™€ ํ•˜๋“œ ๋””์Šคํฌ์— ์žˆ๋Š” ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
์ด๋Ÿฌํ•œ ์ฐจ์ด๋„ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ๊ด€๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ๋ฅผ ํ•˜๋‚˜์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ทธ๋ฃจํ•‘ํ•ด์„œ ์—ฐ์†์ ์œผ๋กœ ์ €์žฅํ•ด๋†“๊ณ  ๊ด€๋ฆฌ๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š”๋ฐ, ๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ ํ•˜๋‚˜ ํ•˜๋‚˜์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ํฌ๋ฉด ๋ฌถ์–ด์„œ ๊ด€๋ฆฌํ•ด์•ผ ํ•  ์ •๋ณด์˜ ์–‘์ด ๋งŽ์•„์ง„๋‹ค.
=> ์œ ๋‹‰์Šค๋Š” ๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ๋ฅผ ๋ถ„ํ• ํ•œ๋‹ค.

 

์œ ๋‹‰์Šค๋Š” ๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ์—์„œ File name๊ณผ ๋‚˜๋จธ์ง€ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋“ค์„ ๋ถ„๋ฆฌ์‹œํ‚จ๋‹ค.

๋‚˜๋จธ์ง€ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋“ค์„ ๋ณ„๋„๋กœ ๋ชจ์•„์„œ inode๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ๋“ค์€ ํŒŒ์ผ ๋„ค์ž„๊ณผ inode๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋งŒ ๊ฐ–๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—”ํŠธ๋ฆฌ๋“ค์ด ๊ฐ€๋ฒผ์›Œ์ง„๋‹ค.
๊ฐ€๋ฒผ์šด ๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ๋“ค์„ ๋ชจ์•„์„œ ์—ฐ์†์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋ฉด ์‚ฌ์ด์ฆˆ๊ฐ€ ์ž‘์•„์ง„๋‹ค.
=> Search๋ฅผ ํ•  ๋•Œ ๋นจ๋ผ์ง€๊ณ , ์ถ”๊ฐ€์ ์ธ ์—ฌ๋Ÿฌ ์žฅ์ ๋“ค์ด ์ƒ๊ธด๋‹ค.

inode๋“ค์€ ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•ด์„œ ์ ‘๊ทผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋ชจ์•„์„œ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

 

Directory Implementation

๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ๋“ค์„ Linear ํ•˜๊ฒŒ ์ญ‰ ์จ๋‘๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
=> ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ์‰ฝ์ง€๋งŒ, ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์˜ ํŠน์ • ์ •๋ณด๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” linear list๋ฅผ linear search๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค.
=> ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํฌ๋‹ค.

search ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ ๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ๋Š” linear list๋กœ ๊ตฌํ˜„์„ ํ•˜๋˜, ๋ณ„๋„๋กœ ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์ž.
file name์„ input์œผ๋กœ ํ•ด์‹œ ํ•จ์ˆ˜์— ๋„ฃ์–ด์„œ, output์€ linear list์˜ ํŠน์ • ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๊ฐ€ ๋˜๋„๋ก ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ ๋‹ค.

 

Single-Level Directory

ํ•˜๋‚˜์˜ ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด์—๋Š” ๊ฐ™์€ ์ด๋ฆ„์˜ ํŒŒ์ผ์ด ์—ฌ๋Ÿฌ ๊ฐœ ์กด์žฌํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋‘ ๋‹ค ๋‹ค๋ฅธ ์ด๋ฆ„์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.
๋ฌผ๋ก  255๊ฐœ์˜ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ naming์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„์˜ ์ˆ˜๋Š” ์ถฉ๋ถ„ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ™์€ ์ด๋ฆ„์˜ ํŒŒ์ผ์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด, ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ๋‹ค. ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ์•ˆ ๊ฒน์น˜๊ฒŒ ์ง€์–ด์•ผ ํ•˜๋ฏ€๋กœ ์‚ฌ์‹ค์ƒ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

๋˜ํ•œ ์—ฐ๊ด€์žˆ๋Š” ํŒŒ์ผ๋“ค๋ผ๋ฆฌ ๊ทธ๋ฃจํ•‘์„ ํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.

=> ์‚ฌ์‹ค ์ด๋ก ๋งŒ ์กด์žฌํ•˜๊ณ  ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

Two-Level Directory

์„œ๋กœ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ์‚ฌ์ด์—๋Š” ๊ฐ™์€ ์ด๋ฆ„์˜ ํŒŒ์ผ์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์—ญ์‹œ๋‚˜ ํ•œ ์‚ฌ์šฉ์ž์˜ ์ž…์žฅ์—์„œ ๋ณด๋ฉด, ๊ฐ™์€ ์ด๋ฆ„์˜ ํŒŒ์ผ์„ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค ์ˆ˜๊ฐ€ ์—†๋‹ค.
๋˜ํ•œ ๊ทธ๋ฃจํ•‘ ์—ญ์‹œ ํ•  ์ˆ˜ ์—†๋‹ค.

 

Tree-Structured Directories ( Multi-Level Directory )

Tree-Structured Directories๋Š” ์„œ๋ธŒ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ฌดํ•œํžˆ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ์ด๋‹ค.

ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•˜๋Š” Relative path์™€ ๋ฃจํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•˜๋Š” Absolute path๊ฐ€ ์žˆ๋‹ค.

ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜๋‚˜์˜ ํŒŒ์ผ์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ๋ชจ๋“  ํŠธ๋ฆฌ๋ฅผ ๋Œ์•„์•ผ ํ•œ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.
=> Search path๋ฅผ ๋“ฑ๋กํ•œ๋‹ค.

Search path๋Š” ์–ด๋–ค ํŒŒ์ผ ๋„ค์ž„์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ทธ ํŒŒ์ผ์„ ์ฐพ๊ธฐ ์œ„ํ•œ ์œ„์น˜๋ฅผ ๋‚˜์—ดํ•ด๋‘” ๊ฒƒ.

 

์–ด๋–ค ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ญ์ œํ•˜๊ฒŒ ๋˜๋ฉด, ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํฌํ•จํ•ด์„œ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๊นŒ์ง€ ๋ชจ๋‘ ์‚ญ์ œํ•ด๋ฒ„๋ฆฌ๋Š” ๊ฒŒ ๋งž์„๊นŒ?

๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ๋„ˆ๋ฌด ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์—†์„ ๋•Œ๋งŒ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ฉด ์•ˆ์ „ํ•˜๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, ์‹ค์ œ๋กœ ๋ชจ๋“  ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ง€์›Œ์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—๋Š” ์ตœํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€๋ฉด์„œ ํ•˜๋‚˜์”ฉ ์‚ญ์ œํ•ด์•ผ ํ•œ๋‹ค.
=> ํŽธ์˜์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.

ํŽธ์˜์„ฑ๊ณผ ์•ˆ์ „์„ฑ ์‚ฌ์ด์— ๊ฒฐ์ •์„ ํ•ด์•ผ ํ•œ๋‹ค.

 

Acyclic-Graph Directories

ํŠธ๋ฆฌ ๊ตฌ์กฐ์—์„œ๋Š” ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋Š” ํ•˜๋‚˜์˜ ๋ถ€๋ชจ๋งŒ ๊ฐ€์ ธ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•˜๋‚˜์˜ ํŒŒ์ผ์€ ํ•˜๋‚˜์˜ ๋””๋ ‰ํ† ๋ฆฌ์—๋งŒ ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค.

Graph ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•˜๋‚˜์˜ ํŒŒ์ผ์ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋””๋ ‰ํ† ๋ฆฌ์— ํฌํ•จ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์ž.

์˜ˆ์‹œ์—์„œ count๋ผ๋Š” ํŒŒ์ผ์€ ๋‘ ๊ฐœ์˜ ๋””๋ ‰ํ† ๋ฆฌ์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. count๋ผ๋Š” ํŒŒ์ผ์„ ์—ฌ๋Ÿฌ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

ํ•˜๋‚˜์˜ ํŒŒ์ผ์ด ์—ฌ๋Ÿฌ ๋””๋ ‰ํ† ๋ฆฌ์— ๋“ค์–ด ์žˆ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ 2๊ฐ€์ง€์˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

1. ํŒŒ์ผ์„ traverse ํ•  ๋•Œ, ํ•˜๋‚˜์˜ ๋…ธ๋“œ๊ฐ€ ๋‘ ๋ฒˆ ๋ฐฉ๋ฌธ๋˜๊ฒŒ ๋œ๋‹ค.

2. ์‚ญ์ œํ•  ๋•Œ๋„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์ฒ˜์Œ์— Kang์ด X๋ผ๋Š” ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.
๊ทธ ์ƒํ™ฉ์—์„œ Jung์ด X๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, Link๋ผ๋Š” ๋ช…๋ น์„ ์‚ฌ์šฉํ•œ๋‹ค.
link์˜ ๋ฐฉ์‹์—๋Š” 2๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค.

Symbolic Link
: ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— ์‹ค์ œ๋กœ ๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ฐพ์•„๊ฐ€๋Š” pathname๋งŒ ๋“ฑ๋ก์„ ํ•ด๋‘”๋‹ค.
๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋Š” ํ•˜๋‚˜๋งŒ ์กด์žฌํ•œ๋‹ค.
์ด๋•Œ Kang์ด ์ž๊ธฐ๊ฐ€ ๋งŒ๋“  X๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ๋„ ์‚ญ์ œ๋˜๊ณ , Jung ์ž…์žฅ์—์„œ๋Š” ์‚ญ์ œํ•œ ์ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— X๋ฅผ ์ฐพ์•„๊ฐ€๋ ค๊ณ  ์‹œ๋„ํ•  ๊ฒƒ์ด๋‹ค. Jung์€ ๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— pathname์„ ํ†ตํ•ด ์ ‘๊ทผํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ฃจํŠธ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ Kang๊นŒ์ง€๋Š” ๊ฐˆ ์ˆ˜ ์žˆ๋Š”๋ฐ Kang์ด X์— ๋Œ€ํ•œ ๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ๋ฅผ ์‚ญ์ œํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— X๋ฅผ ์ฐพ์•„๊ฐˆ ์ˆ˜๊ฐ€ ์—†๋‹ค.
=> illegal directory access ๋ฐœ์ƒ

Hard Link
: ๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ๋ฅผ ์นดํ”ผํ•ด์„œ ๋งŒ๋“ค์–ด์ค€๋‹ค.
Jung์€ ๋…๋ฆฝ์ ์œผ๋กœ X์— ๋Œ€ํ•œ ๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ๋ฅผ ๊ฐ–๊ฒŒ ๋œ๋‹ค.
Kang์ด X๋ฅผ ์‚ญ์ œํ•œ๋‹ค๊ณ  ํ•ด๋„, Jung์€ ๋…๋ฆฝ์ ์ธ ๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ๋ฅผ ๊ฐ–๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— X๋ฅผ ์ฐพ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ Kang์ด X๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฒŒ ๋˜๋ฉด, ์—…๋ฐ์ดํŠธ๋œ ์ •๋ณด๋ฅผ ๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ์— ๋ฐ˜์˜์„ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Kang์€ ์ž๊ธฐ๊ฐ€ ๊ฐ€์ง„ ๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ์— ๋ฐ˜์˜์„ ํ•  ๊ฒƒ์ด๋‹ค.
=> ๊ทธ๋Ÿฐ๋ฐ Jung์€ ์ด ์‚ฌ์‹ค์„ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— Consistency ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋Š” Kang์ด X ๋””๋ ‰ํ† ๋ฆฌ ์ž์ฒด๋ฅผ ์‚ญ์ œํ•ด๋ฒ„๋ฆฌ๋ ค ํ–ˆ๋Š”๋ฐ Jung์ด ๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•จ๋ถ€๋กœ ์‚ญ์ œํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.
OS๋Š” ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•ด ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋Š” ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
=> ์•„๋ฌด๋„ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์ง€ ์•Š์„ ๋•Œ๋งŒ ์‹ค์ œ๋กœ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋ช‡ ๊ฐœ์ธ์ง€๋ฅผ ์„ธ๋Š” Reference count๋ผ๋Š” ๊ฐ’์„ ์œ ์ง€ํ•œ๋‹ค.

Refrence count๊ฐ€ 0์ด ๋˜๋ฉด, ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

 

General Graph Directory

General Graph Directory๋Š” ์‚ฌ์ดํด์„ ํ—ˆ์šฉํ•˜๋Š” Graph directory ๊ตฌ์กฐ๋กœ, ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ž์‹ ์˜ ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ๋ณต์žกํ•ด์ง„๋‹ค.

์˜ˆ์‹œ์—์„œ X์— ๋Œ€ํ•œ ๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ๋ฅผ Kang๋„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , Y๋„ ๊ฐ–๊ณ  ์žˆ๊ฒŒ ๋œ๋‹ค.
๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— X์— ๋Œ€ํ•œ Reference count๋Š” 2๊ฐ€ ๋œ๋‹ค.
์ด๋•Œ Kang์ด X๋ฅผ ์ง€์šฐ๋ ค๊ณ  ์‹œ๋„ํ•˜๋ฉด, Reference count๊ฐ€ 2->1๋กœ ๋ฐ”๋€Œ๊ณ  0์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— X๋Š” ์‚ญ์ œ๋˜์ง€ ์•Š๋Š”๋‹ค.

๊ทธ๋Ÿฐ๋ฐ, ๋ฃจํŠธ์—์„œ ํƒ€๊ณ  ๋‚ด๋ ค์™€์„œ Kang์—์„œ X๋กœ ๊ฐˆ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— X์—๋Š” ์ ‘๊ทผ์„ ํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค.
=> ์‚ญ์ œ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ์ ‘๊ทผํ•  ์ˆ˜๊ฐ€ ์—†๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

garbage collection์„ ํ†ตํ•ด ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์›Œ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
=> ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.

 

์‚ฌ์ดํด์„ ํ—ˆ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋ณต์žกํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ณดํ†ต ์‚ฌ์ดํด์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ์‚ฌ์ดํด์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค๋ ค๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋ธŒ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค ๋•Œ๋งˆ๋‹ค ์‚ฌ์ดํด์ด ๋งŒ๋“ค์–ด์ง€๋Š”์ง€๋ฅผ Detect ํ•ด์•ผ ํ•œ๋‹ค.

 

Protection

ํŒŒ์ผ์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์ฒด๋Š” ํŒŒ์ผ์˜ ์†Œ์œ ์ž์ด๋‹ค.

1. ์‚ฌ์šฉ์ž๋งˆ๋‹ค ํŒŒ์ผ์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ช…์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•
=> ์‚ฌ์šฉ์ž๊ฐ€ 100๋ช…์ด ์žˆ๋‹ค๊ณ  ํ•˜๋ฉด, ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ๋Œ€ํ•ด์„œ 100๋ช…์˜ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ช…์‹œํ•ด์•ผ ํ•œ๋‹ค.
=> ๋„ˆ๋ฌด ์ปค์ง„๋‹ค.

2. UNIX๋Š” user, group, others 3๊ฐ€์ง€๋กœ๋งŒ ์‚ฌ์šฉ์ž๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค.

user๋Š” ํŒŒ์ผ์˜ ์†Œ์œ ์ž
group์€ user์™€ ๊ฐ™์€ group์— ์†ํ•œ ์‚ฌ์šฉ์ž๋“ค (๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค)
others๋Š” user์™€ ๋‹ค๋ฅธ group์— ์†ํ•œ ์‚ฌ์šฉ์ž๋“ค

์ด 9 bit๋กœ ๋ชจ๋“  ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.

UNIX์—์„œ๋Š” change mode(chmod) ๋ช…๋ น์„ ํ†ตํ•ด ํŒŒ์ผ์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ์„ค์ •ํ•œ๋‹ค.

chmod 761 game ์ด๋ผ๊ณ  ๋ช…๋ น์„ ํ•˜๋ฉด, game์ด๋ผ๋Š” ํŒŒ์ผ์— ๋Œ€ํ•ด์„œ owner๋Š” R,W,E ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๊ณ  owner์™€ ๊ฐ™์€ ๊ทธ๋ฃน์— ์†ํ•œ ์‚ฌ์šฉ์ž๋“ค์€ R,W๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ  owner์™€ ๊ฐ™์€ ๊ทธ๋ฃน์— ์†ํ•˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž๋“ค์€ E๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

๋””ํดํŠธ๋กœ groups๋Š” owner์™€ ๊ฐ™์€ ๊ทธ๋ฃน์˜ ์‚ฌ์šฉ์ž๋“ค์ด์ง€๋งŒ, chgrp ๋ช…๋ น์„ ํ†ตํ•ด ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

 

File-System Structure

ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ† ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ํ•„์š”๋กœ ํ•˜๋Š” ๋ชจ๋“  ์ •๋ณด ์—ญ์‹œ ํŒŒ์ผ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋””์Šคํฌ์— ์ €์žฅ์ด ๋œ๋‹ค.

ํŒŒ์ผ ์‹œ์Šคํ…œ์ด๋ผ๋Š” ํ”„๋กœ๊ทธ๋žจ์€ ์‚ฌ์‹ค ์ปค๋„์˜ ์ฝ”๋“œ์ด๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ๊ทธ๊ฑด ๊ทธ๋ƒฅ ์ฝ”๋“œ์ผ ๋ฟ์ด๊ณ  ๊ทธ ์ฝ”๋“œ๊ฐ€ ํ•˜๋“œ ๋””์Šคํฌ์— ์žˆ๋Š” ์ •๋ณด๋“ค์„ ์ฝ์–ด์„œ ํŒŒ์ผ ๊ด€๋ฆฌ๋ฅผ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

์•ž์—์„œ ๋ดค๋“ฏ์ด ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ๋ณต์žกํ•œ ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค.
ํŒŒ์ผ์— ํ•œ ๋ฒˆ ์ ‘๊ทผํ•˜๋ ค๋ฉด ๊ทธ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์ธต์ธต์ด ํƒ€๊ณ ๊ฐ€์„œ ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค.
ํ•จ์ˆ˜๊ฐ€ ํ•จ์ˆ˜๋ฅผ ๋ถ€๋ฅด๋ฉด์„œ ๊ณ„์† ๋‚ด๋ ค๊ฐ€์„œ ๊ฒฐ๊ตญ ํ•˜๋“œ ๋””์Šคํฌ์— ์ ‘๊ทผํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.
=> ๊ทธ ๊ณผ์ •์ด ๋งค์šฐ ๋ฌด๊ฒ๊ธฐ ๋•Œ๋ฌธ์— open systemcall์ด ํ•„์š”ํ•˜๋‹ค.

์ธต์ธต์ด ๊ฑฐ์ณ์„œ ๋‚ด๋ ค๊ฐ€๋Š” ๊ฒƒ์„ ํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด open system call์ด ํ•„์š”ํ•˜๋‹ค.

open์˜ ์ตœ์ข… ๋ชฉํ‘œ๋Š” ์ ‘๊ทผํ•˜๊ณ ์ž ํ•˜๋Š” ํŒŒ์ผ์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค.

๊ฒฐ๊ตญ์—” ๊ทธ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ํŒŒ์ผ์— ์ ‘๊ทผ์„ ํ•˜๊ฒ ๋‹ค๋Š” ๊ฒƒ.

 

Open file table 

=> Open๋œ ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค.

Open-file table์—๋Š” ๋งŽ์€ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋“ค์ด ์ €์žฅ๋˜์–ด ์žˆ์„ ๊ฒƒ์ธ๋ฐ, ๊ทธ ์‚ฌ์ด์—์„œ ๋‚ด๊ฐ€ ์ฐพ๋Š” ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋˜ ์ฐพ์•„์•ผ ํ•œ๋‹ค.
=> ์ด๊ฒƒ์„ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ, ์ด๊ฒƒ์„ File descriptor๋ผ๊ณ  ํ•œ๋‹ค.
=> ์ด๊ฒŒ ์žˆ์œผ๋ฉด, ํ…Œ์ด๋ธ” ๋‚ด์—์„œ ๋‚ด๊ฐ€ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๋กœ ์ฐพ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

ํŒŒ์ผ์„ openํ•˜๊ธฐ ์œ„ํ•ด์„œ fopen์ด๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ,

fp = fopen()์—์„œ fopen์˜ ๋ฆฌํ„ด๊ฐ’์ธ fp๋ฅผ descriptor๋ผ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

/a/b/c/d/e.hwp

์ด๋Ÿฌํ•œ ๊ฒฝ๋กœ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” e.hwp๋ผ๋Š” ํŒŒ์ผ์„ openํ•˜๋ ค๊ณ  ํ•œ๋‹ค ํ•˜์ž.

๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ผ๋‹จ ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค.
e.hwp๋ผ๋Š” ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์ธ d๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ d์˜ ์œ„์น˜๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” c๋ฅผ ์ฐพ์•„์•ผ ํ•˜๊ณ , c๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” b๋ฅผ ์ฐพ์•„์•ผ ํ•˜๊ณ , b๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” a๋ฅผ ์ฐพ์•„์•ผ ํ•˜๋ฉฐ, a๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฒฐ๊ตญ Root์—์„œ ์ฐพ์•„์•ผ ํ•œ๋‹ค.

Root์—์„œ a๋ฅผ ์ฐพ์•„์„œ ๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ๋ฅผ ์ฝ์–ด์„œ b์— ์ ‘๊ทผํ•˜๊ณ , b์—์„œ c์˜ ๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ๋ฅผ ์ฐพ์•„์„œ c์— ์ ‘๊ทผํ•˜๊ณ  ์ญ‰์ญ‰ ํ•ด์„œ ๊ฒฐ๊ตญ e.hwp์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ฒŒ ๋œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ด๊ฑธ open์„ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค๋†“์ง€ ์•Š์œผ๋ฉด ํŒŒ์ผ์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค ์ด ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค.

 

Mounting File System

ํŒŒ์ผ์ด ์ €์žฅ๋˜๋Š” ์ €์žฅ ์žฅ์น˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ๋””์Šคํฌ, CD, USB, ... ๋“ฑ

Windows์—์„œ๋Š” ๋‹ค๋ฅธ ์ €์žฅ ์žฅ์น˜์— ์žˆ๋Š” ํŒŒ์ผ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ๋“œ๋ผ์ด๋ธŒ๋ถ€ํ„ฐ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค.
๋“œ๋ผ์ด๋ธŒ๋ฅผ ๋ฐ”๊พธ๊ณ  ๊ทธ ๋“œ๋ผ์ด๋ธŒ๋ฅผ ๋ฃจํŠธ๋กœ ํŒŒ์ผ์„ ์ฐพ์•„๋‚˜๊ฐ„๋‹ค.
=> UNIX์—์„œ๋Š” ๋งˆ์šดํŠธ๋ผ๋Š” ๋ช…๋ น์„ ์ œ๊ณตํ•œ๋‹ค.

 

USB์˜ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํ•˜๋“œ ๋””์Šคํฌ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ์— ๊ฐ–๋‹ค ๋ถ™์ธ๋‹ค.
usr ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ USB์˜ Root ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.
=> ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋“œ๋ผ์ด๋ธŒ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.


Allocation of File Data in Disk

ํŒŒ์ผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋””์Šคํฌ ๋‚ด์— Block์„ ์–ด๋–ป๊ฒŒ ํ• ๋‹นํ•  ๊ฒƒ์ธ๊ฐ€.

 

ํ•˜๋“œ ๋””์Šคํฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Block device์ด๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ Block ๋‹จ์œ„๋กœ I/O๋ฅผ ํ•˜๋Š” ์žฅ์น˜๋ผ๋Š” ๋œป์ด๋‹ค.
ํ•˜๋“œ ๋””์Šคํฌ์™€ ๊ฐ™์€ 2์ฐจ ์ €์žฅ ์žฅ์น˜๋Š” ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋ฒˆ ์ ‘๊ทผํ•  ๋•Œ ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์จ์„œ ์ ‘๊ทผ์„ ์ตœ๋Œ€ํ•œ ์ค„์ธ๋‹ค.

Block์˜ ํฌ๊ธฐ๋Š” ๋ˆ„๊ฐ€ ๊ฒฐ์ •ํ• ๊นŒ.
ํ•˜๋“œ ๋””์Šคํฌ๋ฅผ ํฌ๋งทํ•  ๋•Œ Block์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋””ํดํŠธ๋กœ 4KB๋กœ ์„ค์ •๋œ๋‹ค.

 

Contiguous Allocation

Contiguous Allocation์€ ํ•˜๋“œ ๋””์Šคํฌ์˜ ์—ฐ์†๋œ Block์„ ์ด ํŒŒ์ผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ• ๋‹นํ•˜๊ฒ ๋‹ค๋Š” ๋ฐฉ์‹์ด๋‹ค.

ํŒŒ์ผ์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ 16KB๋ผ๊ณ  ํ•˜๋ฉด ์—ฐ์†๋œ 4KB Block 4๊ฐœ๋ฅผ ํ• ๋‹นํ•œ๋‹ค.

<์žฅ์ >

์ด ๋ฐฉ์‹์˜ ์žฅ์ ์€ ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ๋•Œ, ์ฒซ ๋ฒˆ์งธ Block์˜ ์œ„์น˜๋งŒ ์•Œ๋ฉด ๋‚˜๋จธ์ง€ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋Š” ๊ณ„์‚ฐ์„ ํ†ตํ•ด ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ ๋ฒˆ์งธ Block์˜ ์œ„์น˜์™€ ๊ธธ์ด ์ •๋ณด๋งŒ ์ €์žฅํ•˜๋ฉด ํŒŒ์ผ์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.


ํ•˜๋“œ ๋””์Šคํฌ์—์„œ ๊ฐ€์žฅ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ์ด head๋ฅผ ์˜ฎ๊ธฐ๋Š” ์‹œ๊ฐ„์ด๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ์—ฐ์†๋œ block์— ํŒŒ์ผ์ด ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฉด ํ•œ ๋ฒˆ์˜ head ์›€์ง์ž„์œผ๋กœ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.

=> Contiguous Allocation์„ ์‚ฌ์šฉํ•˜๋ฉด I/O ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋™์˜์ƒ๊ณผ ๊ฐ™์ด ํ•œ ๋ฒˆ ์ €์žฅ๋˜๋ฉด ์ปค์งˆ ์ผ์ด ์—†๋Š” ํŒŒ์ผ๋“ค์„ ์‚ฌ์šฉํ•˜๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•ด์„œ๋Š” Contiguous Allocation์ด ์ข‹์€ ๋ฐฉ๋ฒ•์ด ๋  ์ˆ˜๋„ ์žˆ๋‹ค.

 

<๋‹จ์ >

ํ•˜์ง€๋งŒ ์•ž์„œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐฉ์‹์—์„œ ๋ดค๋˜ Contiguous Allocation์˜ ๋ฌธ์ œ์ ๊ณผ ๋™์ผํ•˜๊ฒŒ, External fragmentation์ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ์ฆ‰, ๋น„์–ด์žˆ์ง€๋งŒ ์‚ฌ์šฉ๋˜์ง€ ๋ชป ํ•˜๋Š” ๊ณต๊ฐ„๋“ค์ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

=> ํ•˜์ง€๋งŒ ํ•˜๋“œ ๋””์Šคํฌ์˜ ์šฉ๋Ÿ‰์ด ์›Œ๋‚™ ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฑด ํฐ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

๋” ํฐ ๋ฌธ์ œ๋Š” ํŒŒ์ผ์˜ ํฌ๊ธฐ๋ฅผ ์ฒ˜์Œ ํŒŒ์ผ์ด ๋งŒ๋“ค์–ด์กŒ์„ ๋•Œ์˜ ํฌ๊ธฐ๋กœ fixํ•ด๋ฒ„๋ฆฌ๋ฉด ํŒŒ์ผ์ด ์ปค์กŒ์„ ๋•Œ๋Š” ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?
๋งŒ์•ฝ ๋‹ค๋ฅธ ํŒŒ์ผ์ด ๊ทธ ๋’ค์— ์—ฐ์†๋˜์–ด ์ €์žฅ๋˜์–ด ์žˆ๋‹ค๋ฉด, ํŒŒ์ผ์ด ์ปค์งˆ ์ˆ˜๊ฐ€ ์—†๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.

1. ํ˜„์žฌ ์‚ฌ์ด์ฆˆ๋ณด๋‹ค ๋” ๋งŽ์€ Block์„ ์ฒ˜์Œ์— ํ• ๋‹นํ•œ๋‹ค.
=> ํŒŒ์ผ์ด ์ปค์ง€์ง€ ์•Š์•„์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋‚ญ๋น„๋˜๋Š” ๊ณต๊ฐ„์ด ๋œ๋‹ค. (internal fragmentation)

2. ํŒŒ์ผ์„ ๊ทธ ์œ„์น˜์—์„œ ๋œ์–ด๋‚ด์„œ ๋” ํฐ ์œ„์น˜๋กœ ์˜ฎ๊ธด๋‹ค.
=> I/O๊ฐ€ ๋งค์šฐ ๋งŽ์ด ๋ฐœ์ƒํ•ด์„œ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง„๋‹ค.

 

์•ž์„œ ๋งํ–ˆ๋“ฏ์ด ์—ฐ์†๋œ ๊ณต๊ฐ„์— Block์„ ํ• ๋‹นํ•˜๋ฉด ์ฒซ ๋ฒˆ์งธ ๋ธ”๋Ÿญ์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋งŒ ์•Œ๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ์— offset์„ ์ด์šฉํ•ด์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

Contiguous Allocation์˜ ์žฅ์ ์€ ์ด ์ •๋„์˜ ์ •๋ณด๋งŒ ๊ฐ€์ง€๊ณ ๋„ ์ถฉ๋ถ„ํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ.

 

Linked Allocation

Linked Allocation์€ ๊ฐ ํŒŒ์ผ์˜ Block๋“ค์„ Linked list ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

Contiguous Allocation๊ณผ ๋‹ฌ๋ฆฌ ๊ฐ ๋ธ”๋Ÿญ์€ ๋‹ค์Œ ๋ธ”๋Ÿญ์˜ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ๋Š” ์—ฐ์†๋œ ๊ณต๊ฐ„์— ์ €์žฅํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

Linked Allocation์„ ์‚ฌ์šฉํ•˜๋ฉด, Contiguous allocation์˜ ๋ฌธ์ œ์˜€๋˜ File Growth ๋ฌธ์ œ๋ฅผ ๊ฑฑ์ •ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

ํŒŒ์ผ์ด ์ปค์ง€๋ฉด ์ƒˆ๋กœ์šด ๋ธ”๋Ÿญ์„ ํ• ๋‹นํ•˜๊ณ  ํฌ์ธํ„ฐ๋งŒ ์—ฐํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

<์žฅ์ >

์ฒซ ๋ฒˆ์งธ ๋ธ”๋Ÿญ์˜ ์ฃผ์†Œ๋งŒ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉด ๋˜๊ณ , ํŒŒ์ผ์˜ ํฌ๊ธฐ๋ฅผ ํ‚ค์šฐ๊ณ  ์ค„์ด๋Š” ๊ฒƒ์ด ์ž์œ ๋กญ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.


<๋‹จ์ >

๊ทธ๋Ÿฐ๋ฐ ์žฅ์ ๋งŒ ์žˆ๋Š” ๊ฑด ์•„๋‹ˆ๋‹ค. Random Access๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ์„ธ ๋ฒˆ์งธ Block์„ ์ฐพ์•„๊ฐ€๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฒซ ๋ฒˆ์งธ Block ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ํƒ€๊ณ  ํƒ€๊ณ  ๊ฐ€์•ผ ํ•œ๋‹ค.
=> Disk I/O์˜ Efficiency๊ฐ€ ์ข‹์ง€ ์•Š๋‹ค.

๋˜ํ•œ ํ•œ ์„นํ„ฐ๊ฐ€ ๊นจ์ ธ๋ฒ„๋ ค์„œ ํฌ์ธํ„ฐ๊ฐ€ ์†์‹ค๋˜๋ฉด, ๊ทธ ๋…ธ๋“œ์˜ ์ดํ›„์˜ ๋…ธ๋“œ๋“ค๋„ ์ฐพ์„ ์ˆ˜๊ฐ€ ์—†๊ฒŒ ๋œ๋‹ค๋Š” ๋ฌธ์ œ๋„ ์žˆ๋‹ค.
=> ๊นจ์ง„ ๋ธ”๋Ÿญ๋ถ€ํ„ฐ ์ดํ›„์˜ ๋ธ”๋Ÿญ๋“ค์€ ๋ชจ๋‘ ์žƒ๊ฒŒ ๋œ๋‹ค.

ํฌ์ธํ„ฐ๊ฐ€ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•œ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๊ธด ํ•˜์ง€๋งŒ ์ด๊ฑด ํฐ ๋ฌธ์ œ๊ฐ€ ์•ˆ ๋œ๋‹ค.

 

์ด๋Ÿฌํ•œ ๋‹จ์ ๋“ค๋กœ ์ธํ•ด Windows์—์„œ๋Š” ์ด๊ฒƒ์„ ๋ฒ ์ด์Šค๋กœ ์กฐ๊ธˆ ๋ณ€ํ˜•์‹œํ‚จ FAT ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

File Allocation Table ( FAT )

๋‹ค์Œ ๋ธ”๋Ÿญ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ๋ธ”๋Ÿญ ๋‚ด์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋ณ„๋„์˜ ํ…Œ์ด๋ธ”๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

๋ถ€ํŒ… ์‹œ์— ์ด ํ…Œ์ด๋ธ”์„ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฐ๋‹ค. ๋ชจ๋“  ํŒŒ์ผ์— ๋Œ€ํ•œ ์œ„์น˜ ์ •๋ณด๊ฐ€ ์ด FAT ์•ˆ์— ๋“ค์–ด ์žˆ๋‹ค.
๋ชจ๋“  ํŒŒ์ผ์˜ Block์€ ์‹œ์ž‘ ๋ธ”๋Ÿญ์˜ ์œ„์น˜๋งŒ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜๋“œ ๋””์Šคํฌ ๋‚ด์—์„œ ํŒŒ์ผ์˜ ํฌ์ธํ„ฐ๋ฅผ ์ฝ์–ด์„œ ๋‹ค์Œ ๋ธ”๋Ÿญ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์—์„œ ๋‹ค์Œ ๋ธ”๋Ÿญ์„ ์ ‘๊ทผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅด๋‹ค.
=> Faster random access ๊ฐ€๋Šฅ

 

๋ฌธ์ œ๋Š” FAT๊ฐ€ ์œ ์‹ค๋˜๋ฉด ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ๋‹ค ๋‚ ์•„๊ฐ€๋ฒ„๋ฆฐ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.
=> ์ด ๋ฌธ์ œ๋ฅผ ์˜ˆ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด์„œ FAT์˜ ์‚ฌ๋ณธ์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ €์žฅํ•ด๋‘”๋‹ค.
=> ํŒŒ์ผ์˜ ์œ„์น˜๊ฐ€ ๋ฐ”๋€Œ๋ฉด ์‚ฌ๋ณธ์˜ ๋‚ด์šฉ๋„ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์žˆ์ง€๋งŒ, ๊ณ„์† ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” FAT๋งŒ ๋ฐ”๊พธ๋‹ค๊ฐ€ ๋งˆ์ง€๋ง‰์— ํ•˜๋“œ ๋””์Šคํฌ์— ๋ฐ˜์˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ์˜ค๋ฒ„ํ—ค๋“œ๋Š” ๊ทธ๋ ‡๊ฒŒ ํฌ์ง€ ์•Š๋‹ค.

์‚ฌ๋ณธ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๊นจ์ง€๊ฒŒ ๋˜๋ฉด, ๋‹ค๋ฅธ ์‚ฌ๋ณธ์„ ์ด์šฉํ•ด์„œ ์ด๋ฅผ ๋ณต๊ตฌํ•ด ํ•ญ์ƒ ๊ฐ™์€ ์ˆ˜์˜ ์‚ฌ๋ณธ์„ ์œ ์ง€ํ•œ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— FAT๊ฐ€ ์œ ์‹ค๋˜์–ด ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ๋‚ ์•„๊ฐ€๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

Indexed Allocation

๊ฐ ํŒŒ์ผ์€ ํŒŒ์ผ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ Block๋“ค์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋“ค๋งŒ ๋‹ด๊ณ  ์žˆ๋Š” ๋ธ”๋Ÿญ์ธ index block์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

๋””๋ ‰ํ† ๋ฆฌ ์—”ํŠธ๋ฆฌ๋Š” ์ธ๋ฑ์Šค ๋ธ”๋Ÿญ์˜ ์œ„์น˜๋งŒ ์ €์žฅํ•˜๊ณ , ์ธ๋ฑ์Šค ๋ธ”๋Ÿญ ๋‚ด์˜ ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด ์žˆ๋Š” ๋ธ”๋Ÿญ์— ์ ‘๊ทผํ•œ๋‹ค.

index block ์ž์ฒด๊ฐ€ ํ•˜๋‚˜์˜ ๋””์Šคํฌ ๋ธ”๋Ÿญ์ด๋‹ค.
๋ธ”๋Ÿญ์˜ ํฌ๊ธฐ๊ฐ€ 4KB๋ผ๊ณ  ํ•œ๋‹ค๋ฉด, ํฌ์ธํ„ฐ๋ฅผ 1024๊ฐœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด 1024๊ฐœ์˜ ๋ธ”๋Ÿญ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด ๋œ๋‹ค.
=> 4MB ๊นŒ์ง€๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค (4KB * 1024 = 4MB)
์ด๋ณด๋‹ค ํฐ ํŒŒ์ผ์€ ์ €์žฅํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.
์ธ๋ฑ์Šค ๋ธ”๋Ÿญ์„ ํ™•์žฅํ•˜๋Š” ๋ณ„๋„์˜ ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๋‹ค.

 

1. Linked Scheme

index block๋“ค์„ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•

4KB์งœ๋ฆฌ index block์—๋Š” 1024๊ฐœ์˜ ํฌ์ธํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š”๋ฐ, 1023๊ฐœ๋Š” ํŒŒ์ผ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด ์žˆ๋Š” ๋””์Šคํฌ ๋ธ”๋Ÿญ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ์ด๊ณ  ๋‚˜๋จธ์ง€ ํ•˜๋‚˜๋Š” ๋‹ค์Œ index block์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ์ด๋‹ค.

 

2. Two-level index

index block์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” index block์„ ๋ณ„๋„๋กœ ๋งŒ๋“ ๋‹ค.
1024 * 1024๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๋ธ”๋Ÿญ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
=> ์—ญ์‹œ๋‚˜ ํŒŒ์ผ ์‚ฌ์ด์ฆˆ์˜ ์ œํ•œ์ด ์ƒ๊ธฐ๊ธด ํ•œ๋‹ค.

 

3. Combined Scheme

UNIX ๊ณ„์—ด ์šด์˜์ฒด์ œ๊ฐ€ ํŒŒ์ผ์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ inode์ด๋‹ค.

inode์•ˆ์—๋Š” ๋ฐ์ดํ„ฐ ๋ธ”๋Ÿญ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ์ธ direct block๊ณผ

index block์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ์ธ single indirect, double indirect, triple indirect์ด ์žˆ๋‹ค.

single indirect๋Š” single level index block์„ ๊ฐ€๋ฆฌํ‚ค๊ณ , double indirect๋Š” two level index block์„ ๊ฐ€๋ฆฌํ‚ค๊ณ , triple indirect๋Š” three level index block์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

direct block ํ•˜๋‚˜๋Š” 4KB์˜ ๋ธ”๋Ÿญ ํ•˜๋‚˜๋ฅผ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ๊ณ , single indirect๋Š” 1024 * 4KB = 4MB์˜ ํŒŒ์ผ์„, double indirect๋Š” 1024 * 1024 * 4KB = 4GB์˜ ํŒŒ์ผ์„, triple indirect๋Š” 1024 * 1024 * 1024 * 4KB = 4TB์˜ ํŒŒ์ผ์„ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Free-Space Management

๋นˆ ๋ธ”๋Ÿญ๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•

Bit map or bit vector

 ๋ธ”๋Ÿญ ์ˆ˜ ๋งŒํผ์˜ ๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Bit map์„ ๋งŒ๋“ ๋‹ค.

bit๊ฐ€ 1์ด๋ฉด ๋น„์–ด ์žˆ๋Š” ๋ธ”๋Ÿญ์ž„์„ ์˜๋ฏธํ•˜๊ณ  bit๊ฐ€ 0์ด๋ฉด ์‚ฌ์šฉ ์ค‘์ธ ๋ธ”๋Ÿญ์ž„์„ ์˜๋ฏธํ•œ๋‹ค.

์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋งค๋ฒˆ bit vector๋ฅผ 1bit์”ฉ ๋Œ๋ฉด์„œ ๋น„์–ด์žˆ๋Š” ๋ธ”๋Ÿญ(1)์„ ์ฐพ์œผ๋ ค๋ฉด ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.
์‹œ๊ฐ„์ด ์ง€๋‚  ์ˆ˜๋ก ์‚ฌ์šฉ ์ค‘์ธ ๋ธ”๋Ÿญ(0)์ด ๋งŽ์•„์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒƒ์ด๋‹ค.

1bit์”ฉ ์ฝ์ง€ ๋ง๊ณ  ์›Œ๋“œ ๋‹จ์œ„๋กœ ์ฝ์ž. 32bit๋ฅผ ์ฝ์—ˆ๋Š”๋ฐ 0์ด๋ฉด ๋ชจ๋‘ ์ฐจ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

Bit map์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์˜ ์žฅ์ ์€Bit map์—์„œ ์—ฐ์†๋œ 1์€ ์‹ค์ œ๋กœ ์—ฐ์†๋œ ๋ธ”๋Ÿญ์ด ๋น„์–ด์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

 

Linked list

๋นˆ ๋ธ”๋Ÿญ๋“ค์„ linked list๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.

์—ฐ์†์ ์œผ๋กœ ๋น„์–ด ์žˆ๋Š” ๊ณต๊ฐ„์„ ์ฐพ๊ธฐ๊ฐ€ ๋งค์šฐ ํž˜๋“ค๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.

 

Grouping

์ฒซ ๋ฒˆ์งธ ๋ธ”๋Ÿญ์€ ๋น„์–ด์žˆ๋Š” ๋ธ”๋Ÿญ๋“ค์˜ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ง„๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰ ํฌ์ธํ„ฐ๋Š” ๋‹ค์Œ ๋ธ”๋Ÿญ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
๋‹ค์Œ ๋ธ”๋Ÿญ์—๋Š” ๋˜ ๋น„์–ด ์žˆ๋Š” ๋ธ”๋Ÿญ๋“ค์˜ ํฌ์ธํ„ฐ๊ฐ€ ๋“ค์–ด ์žˆ๋‹ค.

 

Counting

์ฒซ ๋ฒˆ์งธ ๋น„์–ด ์žˆ๋Š” ๋ธ”๋Ÿญ์˜ ๋ฒˆํ˜ธ์™€, ๊ทธ ๋ธ”๋Ÿญ๋ถ€ํ„ฐ ๋ช‡ ๊ฐœ์˜ ๋ธ”๋Ÿญ์ด ์—ฐ์†์œผ๋กœ ๋น„์–ด ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ pair๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.
OS๋Š” ์„ฑ๋Šฅ ๋ฌธ์ œ ๋•Œ๋ฌธ์— ์›ฌ๋งŒํ•˜๋ฉด ์—ฐ์†์ ์œผ๋กœ ํ• ๋‹นํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค.
๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ ํ•˜๋‚˜์˜ ํŒŒ์ผ์ด ์‚ญ์ œ๋˜๋ฉด ๊ทธ ํŒŒ์ผ์ด ์‚ฌ์šฉํ•˜๋˜ ์—ฐ์†๋œ ๋ธ”๋Ÿญ์ด ์‚ญ์ œ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. ๊ทธ๋ž˜์„œ ๋ช‡ ๋ฒˆ ๋ธ”๋Ÿญ๋ถ€ํ„ฐ ๋ช‡ ๊ฐœ์˜ ๋ธ”๋Ÿญ์ด ์—ฐ์†์ ์œผ๋กœ ๋น„์–ด์žˆ๋Š”์ง€๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ๋‹ค.

 

Performance

๋””์Šคํฌ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋Š๋ฆฐ ์ž‘์—…์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ด๊ฒƒ์„ ๋งŒํšŒํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ ๋“ค์ด ๋งŽ์ด ์žˆ๋‹ค.

Disk Cache

๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์˜ ํŠน์ • ์˜์—ญ์„ ๋””์Šคํฌ์—์„œ ์ฝ์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์บ์‹œ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
๋””์Šคํฌ์— ์ ‘๊ทผํ•˜๊ธฐ ์ „์— ๋””์Šคํฌ ์บ์‹œ๋ฅผ ๋จผ์ € ํƒ์ƒ‰ํ•œ๋‹ค.

๋””์Šคํฌ ์ ‘๊ทผ ๋ณด๋‹ค๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด ํ›จ์”ฌ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋  ์ˆ˜ ์žˆ๋‹ค.

 

Free-behind and Read-ahead

Read-ahead:

ํ•œ ๋ฒˆ ๋””์Šคํฌ์— ์ ‘๊ทผํ•  ๋•Œ, ํ•„์š”ํ•œ ๋ธ”๋Ÿญ ์™ธ์— ๋‹ค์Œ ๋ธ”๋Ÿญ๋“ค๋„ ๋ฏธ๋ฆฌ ๊ฐ™์ด ์ฝ์–ด์˜จ๋‹ค.

Free-behind:

์–ด๋–ค ๋ฐ์ดํ„ฐ ๋ธ”๋Ÿญ์„ ์š”์ฒญํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ€์ ธ์™”์„ ๋•Œ, ์ด ๋ธ”๋Ÿญ์ด ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ์žˆ์„ํ…๋ฐ ๊ทธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ ๋ธ”๋Ÿญ์„ ๋‹ค ์ฝ์—ˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๋ฐ”๋กœ ๋น„์šฐ์ง€ ๋ง๊ณ , ๋‹ค์Œ ๋ธ”๋Ÿญ์„ ์ฝ์œผ๋ผ๋Š” ์š”์ฒญ์ด ๋“ค์–ด์™€์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค์•ผ ํ•  ๋•Œ ๊ทธ ๋•Œ ๋น„์šฐ์ž.
=> ๋””์Šคํฌ ์บ์‹œ์™€ ๋น„์Šทํ•˜์ง€๋งŒ ๋‹ค๋ฅด๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ I/O๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด, ๋ถˆ๋Ÿฌ์˜จ ๋ฐ์ดํ„ฐ๋Š” ํ”„๋กœ์„ธ์Šค์˜ address space์— ์ €์žฅ๋˜๊ฒŒ ๋œ๋‹ค.
๊ทธ๊ฒŒ ๋‹ค ์‚ฌ์šฉ์ด ๋˜์–ด๋„ ๋ฐ”๋กœ ๋””์Šคํฌ ์บ์‹œ๋กœ ๋ณด๋‚ด๊ฑฐ๋‚˜ ๋ฒ„๋ฆฌ๊ฑฐ๋‚˜ ํ•˜์ง€๋ง๊ณ , ๋‹ค์Œ ๋ธ”๋Ÿญ์„ ์ฝ์–ด์™€์„œ address space์— ์ €์žฅํ•ด์•ผ ํ•  ๋•Œ, ๋””์Šคํฌ ์บ์‹œ๋กœ ๋ณด๋‚ด๊ฑฐ๋‚˜ ๋น„์šฐ์ž.
=> ์ตœ๋Œ€ํ•œ ๋Šฆ๊ฒŒ ๋ฒ„๋ฆฌ์ž. 

 

Virtual disk ( RAM Disk )

๋ฉ”๋ชจ๋ฆฌ์˜ ์ผ์ • ์˜์—ญ์„ ๋””์Šคํฌ ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜์ž. ์ฆ‰, I/O๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์ž„.

๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๋Š” ํœ˜๋ฐœ์„ฑ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ๊ธฐ์ ์œผ๋กœ ํ•˜๋“œ ๋””์Šคํฌ์— ๋ฐฑ์—…ํ•˜๋Š” ํ–‰์œ„๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ์ด๋‹ค.

 

Directory entry cache ( dentry cache )

์ž์ฃผ ์ ‘๊ทผ๋˜๋Š” ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ dentry cache์— ์ €์žฅํ•ด๋‘”๋‹ค.

 

Recovery

๋Š๋ฆฐ ํ•˜๋“œ ๋””์Šคํฌ์˜ ์†๋„๋ฅผ ๋งŒํšŒํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ธฐ์ˆ ๋“ค์„ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์œ„์—์„œ ์‚ดํŽด๋ดค๋‹ค.
๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์—…๋ฐ์ดํŠธํ•˜๊ฒŒ ๋˜๋ฉด ๋น„์ผ๊ด€์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋น„ํœ˜๋ฐœ์„ฑ ๋ฉ”๋ชจ๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋””์Šคํฌ์— ์“ฐ์ง€ ์•Š์€ ์ฑ„๋กœ ์ข…๋ฃŒ๊ฐ€ ๋˜์–ด ๋ฒ„๋ฆฌ๋ฉด ์—…๋ฐ์ดํŠธ๋œ ์ •๋ณด๊ฐ€ ๋ชจ๋‘ ๋‚ ์•„๊ฐ€๋ฒ„๋ฆฐ๋‹ค.

์–ด๋–ค ๋ถ€๋ถ„์ด ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€๋ฅผ log๋ฅผ ๋‚จ๊ฒจ์„œ ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋œ ๊ฒฝ์šฐ log๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋‚˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ fixํ•œ๋‹ค.
=> ์ด๊ฑธ๋กœ๋„ fix๋˜์ง€ ์•Š์œผ๋ฉด ์–ด์ฉ” ์ˆ˜ ์—†์ด ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ์†์‹คํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

 

๋น„ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๊ฐ€ ๊ฒฝ์šฐ์— ์–ด๋–ป๊ฒŒ ์•Œ๊ณ  ๋‚ ์•„๊ฐ„ ๋‚ด์šฉ๋“ค์„ ๋ณต๊ตฌํ•˜๋ ค๋Š” ์ž‘์—…์„ ํ• ๊นŒ?

์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜๋ฉด ์ฒดํฌ๋ฅผ ํ•œ๋‹ค.
๋ถ€ํŒ…์‹œ์— ์ฒดํฌ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด, ์ง€๋‚œ ๋ฒˆ์— ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์ง€ ์•Š์•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜๊ณ  ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์ ๊ฒ€ํ•œ๋‹ค.

 

728x90

'HYU > ์šด์˜์ฒด์ œ(OS)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

14. I/O Systems  (0) 2023.06.02
13. Mass Storage Management  (0) 2023.06.02
11. Virtual Memory (2)  (0) 2023.05.19
7. Deadlocks  (0) 2023.05.18
10. Virtual Memory (1)  (1) 2023.05.12