From 11bea0f76b594e73fdc9621d3bf9d89139110251 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=9A=B0?= Date: Sun, 15 Mar 2026 02:36:20 +0900 Subject: [PATCH] Enhance README with file system concepts and details Updated the README.md file for Day 27 to include detailed explanations of file system concepts, allocation methods, inode structure, directory implementation, disk scheduling algorithms, and journaling file systems. --- week4/day27-file-system/README.md | 440 +++++++++++++++++++++++++++++- 1 file changed, 433 insertions(+), 7 deletions(-) diff --git a/week4/day27-file-system/README.md b/week4/day27-file-system/README.md index 029a491..9b5c6dc 100644 --- a/week4/day27-file-system/README.md +++ b/week4/day27-file-system/README.md @@ -2,13 +2,439 @@ > ๐Ÿ“… 2025.03.11 | ๐Ÿ“ Week 4 --- ## ๐Ÿง  ํ•™์Šต ์งˆ๋ฌธ -- [ ] ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์—ญํ• ์€ ๋ฌด์—‡์ธ๊ฐ€? -- [ ] ํŒŒ์ผ ํ• ๋‹น ๋ฐฉ๋ฒ•(์—ฐ์†, ์—ฐ๊ฒฐ, ์ธ๋ฑ์Šค)์˜ ์ฐจ์ด์™€ ์žฅ๋‹จ์ ์€? -- [ ] inode๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š”๊ฐ€? -- [ ] ๋””๋ ‰ํ† ๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜๋Š”๊ฐ€? -- [ ] ๋””์Šคํฌ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜(FCFS, SSTF, SCAN, C-SCAN)์€? -- [ ] ์ €๋„๋ง ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ์™œ ํ•„์š”ํ•˜๋ฉฐ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”๊ฐ€? ---- +- [x] ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์—ญํ• ์€ ๋ฌด์—‡์ธ๊ฐ€? +- [x] ํŒŒ์ผ ํ• ๋‹น ๋ฐฉ๋ฒ•(์—ฐ์†, ์—ฐ๊ฒฐ, ์ธ๋ฑ์Šค)์˜ ์ฐจ์ด์™€ ์žฅ๋‹จ์ ์€? +- [x] inode๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š”๊ฐ€? +- [x] ๋””๋ ‰ํ† ๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜๋Š”๊ฐ€? +- [x] ๋””์Šคํฌ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜(FCFS, SSTF, SCAN, C-SCAN)์€? +- [x] ์ €๋„๋ง ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ์™œ ํ•„์š”ํ•˜๋ฉฐ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”๊ฐ€? + +โธป + +1๏ธโƒฃ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์—ญํ•  + +**ํŒŒ์ผ ์‹œ์Šคํ…œ(File System)**์€ +๋””์Šคํฌ ๊ฐ™์€ ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์šด์˜์ฒด์ œ์˜ ๊ตฌ์„ฑ ์š”์†Œ์ด๋‹ค. + +์ฆ‰, ๋””์Šคํฌ๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ํŒŒ์ผ ๋‹จ์œ„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ถ”์ƒํ™”ํ•œ๋‹ค. + +์ฃผ์š” ์—ญํ•  + +1๏ธโƒฃ ํŒŒ์ผ ๊ด€๋ฆฌ + โ€ข ํŒŒ์ผ ์ƒ์„ฑ(Create) + โ€ข ํŒŒ์ผ ์‚ญ์ œ(Delete) + โ€ข ํŒŒ์ผ ์ฝ๊ธฐ/์“ฐ๊ธฐ(Read/Write) + โ€ข ํŒŒ์ผ ์ด๋ฆ„ ๊ด€๋ฆฌ + +2๏ธโƒฃ ์ €์žฅ ๊ณต๊ฐ„ ๊ด€๋ฆฌ + โ€ข ๋””์Šคํฌ ๋ธ”๋ก ํ• ๋‹น + โ€ข ๋นˆ ๊ณต๊ฐ„ ๊ด€๋ฆฌ + +3๏ธโƒฃ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ + โ€ข ํŒŒ์ผ ํฌ๊ธฐ + โ€ข ์ƒ์„ฑ ์‹œ๊ฐ„ + โ€ข ์ ‘๊ทผ ๊ถŒํ•œ + +4๏ธโƒฃ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ์ œ๊ณต + โ€ข ํŒŒ์ผ์„ ๊ณ„์ธต์ ์œผ๋กœ ๊ด€๋ฆฌ + +5๏ธโƒฃ ๋ณดํ˜ธ ๋ฐ ์ ‘๊ทผ ์ œ์–ด + โ€ข ์‚ฌ์šฉ์ž ๊ถŒํ•œ ๊ด€๋ฆฌ + โ€ข ๊ณต์œ  ๋ฐ ์ž ๊ธˆ + +โœ” ์ •๋ฆฌ +โ†’ ํŒŒ์ผ ์‹œ์Šคํ…œ = ๋””์Šคํฌ ๊ณต๊ฐ„ + ํŒŒ์ผ + ๋””๋ ‰ํ† ๋ฆฌ + ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ + +โธป + +2๏ธโƒฃ ํŒŒ์ผ ํ• ๋‹น ๋ฐฉ๋ฒ• + +ํŒŒ์ผ์€ ๋””์Šคํฌ์— ๋ธ”๋ก ๋‹จ์œ„๋กœ ์ €์žฅ๋œ๋‹ค. +์ด ๋ธ”๋ก์„ ์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐํ•ด์„œ ์ €์žฅํ•  ๊ฒƒ์ธ๊ฐ€๊ฐ€ ํŒŒ์ผ ํ• ๋‹น ๋ฐฉ์‹์ด๋‹ค. + +๋Œ€ํ‘œ์ ์ธ 3๊ฐ€์ง€: + +1๏ธโƒฃ ์—ฐ์† ํ• ๋‹น (Contiguous Allocation) +2๏ธโƒฃ ์—ฐ๊ฒฐ ํ• ๋‹น (Linked Allocation) +3๏ธโƒฃ ์ธ๋ฑ์Šค ํ• ๋‹น (Indexed Allocation) + +โธป + +1๏ธโƒฃ ์—ฐ์† ํ• ๋‹น (Contiguous Allocation) + +ํŒŒ์ผ์„ ์—ฐ์†๋œ ๋””์Šคํฌ ๋ธ”๋ก์— ์ €์žฅ + +ํŒŒ์ผ A โ†’ [10][11][12][13][14] + +์žฅ์  + +โœ” ๋งค์šฐ ๋น ๋ฅธ ์ ‘๊ทผ + โ€ข ์ˆœ์ฐจ ์ ‘๊ทผ ๋น ๋ฆ„ + โ€ข ๋žœ๋ค ์ ‘๊ทผ๋„ ๋น ๋ฆ„ + +โœ” ๊ตฌํ˜„ ๋‹จ์ˆœ + +๋‹จ์  + +โŒ ์™ธ๋ถ€ ๋‹จํŽธํ™” ๋ฐœ์ƒ + +๋””์Šคํฌ๊ฐ€ ์ด๋ ‡๊ฒŒ ๋  ์ˆ˜ ์žˆ์Œ + +[AAA][๋นˆ][BBBB][๋นˆ][CC] + +ํฐ ํŒŒ์ผ์„ ๋„ฃ๊ธฐ ์–ด๋ ค์›€ + +โŒ ํŒŒ์ผ ํฌ๊ธฐ ์ฆ๊ฐ€ ์–ด๋ ค์›€ + +โธป + +2๏ธโƒฃ ์—ฐ๊ฒฐ ํ• ๋‹น (Linked Allocation) + +ํŒŒ์ผ ๋ธ”๋ก์„ ํฌ์ธํ„ฐ๋กœ ์—ฐ๊ฒฐ + +[10] โ†’ [45] โ†’ [7] โ†’ [92] + +๊ฐ ๋ธ”๋ก์— ๋‹ค์Œ ๋ธ”๋ก ์ฃผ์†Œ ์ €์žฅ + +์žฅ์  + +โœ” ์™ธ๋ถ€ ๋‹จํŽธํ™” ์—†์Œ + +โœ” ํŒŒ์ผ ํฌ๊ธฐ ์ž์œ ๋กญ๊ฒŒ ์ฆ๊ฐ€ + +๋‹จ์  + +โŒ ๋žœ๋ค ์ ‘๊ทผ ๋งค์šฐ ๋А๋ฆผ + +์˜ˆ + +3๋ฒˆ์งธ ๋ธ”๋ก ์ ‘๊ทผ + +1 โ†’ 2 โ†’ 3 + +โŒ ํฌ์ธํ„ฐ ์ €์žฅ ๊ณต๊ฐ„ ํ•„์š” + +โŒ ํฌ์ธํ„ฐ ์†์ƒ ์‹œ ํŒŒ์ผ ์†์ƒ + +๋Œ€ํ‘œ ๊ตฌํ˜„ +โ†’ FAT(File Allocation Table) + +โธป + +3๏ธโƒฃ ์ธ๋ฑ์Šค ํ• ๋‹น (Indexed Allocation) + +์ธ๋ฑ์Šค ๋ธ”๋ก์ด ๋ชจ๋“  ๋ธ”๋ก ์ฃผ์†Œ๋ฅผ ์ €์žฅ + +Index block +โ†“ +[10][45][7][92] + +์žฅ์  + +โœ” ๋žœ๋ค ์ ‘๊ทผ ๊ฐ€๋Šฅ + +โœ” ์™ธ๋ถ€ ๋‹จํŽธํ™” ์—†์Œ + +โœ” ํŒŒ์ผ ํ™•์žฅ ์‰ฌ์›€ + +๋‹จ์  + +โŒ ์ธ๋ฑ์Šค ๋ธ”๋ก ํ•„์š” + +โŒ ์ž‘์€ ํŒŒ์ผ์—์„œ๋Š” ๊ณต๊ฐ„ ๋‚ญ๋น„ + +๋Œ€ํ‘œ ์˜ˆ + +โ†’ Unix inode + +โธป + +๋น„๊ต ์ •๋ฆฌ + +๋ฐฉ์‹ ์žฅ์  ๋‹จ์  +์—ฐ์† ์ ‘๊ทผ ์†๋„ ๋น ๋ฆ„ ์™ธ๋ถ€ ๋‹จํŽธํ™” +์—ฐ๊ฒฐ ๊ณต๊ฐ„ ํšจ์œจ ์ข‹์Œ ๋žœ๋ค ์ ‘๊ทผ ๋А๋ฆผ +์ธ๋ฑ์Šค ๋žœ๋ค ์ ‘๊ทผ ๊ฐ€๋Šฅ ์ธ๋ฑ์Šค ๊ณต๊ฐ„ ํ•„์š” + + +โธป + +3๏ธโƒฃ inode๋ž€ ๋ฌด์—‡์ธ๊ฐ€ + +inode = index node + +Unix/Linux ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ +ํŒŒ์ผ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ตฌ์กฐ์ฒด + +โœ” ํŒŒ์ผ ์ž์ฒด ๋ฐ์ดํ„ฐ๋Š” ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค + +ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋Š” ๋””์Šคํฌ ๋ธ”๋ก์— ์žˆ๋‹ค. + +inode๋Š” ๊ทธ ์œ„์น˜ ์ •๋ณด๋ฅผ ๊ฐ€์ง„๋‹ค. + +โธป + +inode์— ์ €์žฅ๋˜๋Š” ์ •๋ณด + +๋Œ€ํ‘œ์ ์œผ๋กœ ๋‹ค์Œ์ด ๋“ค์–ด๊ฐ„๋‹ค. + โ€ข ํŒŒ์ผ ํƒ€์ž… (file / directory) + โ€ข ํŒŒ์ผ ํฌ๊ธฐ + โ€ข ์†Œ์œ ์ž UID + โ€ข ๊ทธ๋ฃน GID + โ€ข ์ ‘๊ทผ ๊ถŒํ•œ (permission) + โ€ข ์ƒ์„ฑ/์ˆ˜์ •/์ ‘๊ทผ ์‹œ๊ฐ„ + โ€ข ๋งํฌ ์ˆ˜ + โ€ข ๋ฐ์ดํ„ฐ ๋ธ”๋ก ์ฃผ์†Œ + +์˜ˆ + +inode + โ”œ file size + โ”œ owner + โ”œ permission + โ”œ timestamps + โ”” block pointers + + +โธป + +ํŒŒ์ผ ์ด๋ฆ„์€ ์–ด๋””์— ์žˆ์„๊นŒ? + +inode์—๋Š” ํŒŒ์ผ ์ด๋ฆ„์ด ์—†๋‹ค + +ํŒŒ์ผ ์ด๋ฆ„์€ + +โžก ๋””๋ ‰ํ† ๋ฆฌ + +์— ์ €์žฅ๋œ๋‹ค. + +directory +ํŒŒ์ผ์ด๋ฆ„ โ†’ inode ๋ฒˆํ˜ธ + + +โธป + +4๏ธโƒฃ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌํ˜„ + +๋””๋ ‰ํ† ๋ฆฌ๋Š” ์‹ค์ œ๋กœ ํŠน์ˆ˜ํ•œ ํŒŒ์ผ + +๊ทธ ์•ˆ์—๋Š” + +ํŒŒ์ผ ์ด๋ฆ„ โ†’ inode ๋ฒˆํ˜ธ + +๊ฐ€ ์ €์žฅ๋œ๋‹ค. + +์˜ˆ + +Directory file + +fileA โ†’ inode 31 +fileB โ†’ inode 42 +fileC โ†’ inode 11 + +ํŒŒ์ผ ์ ‘๊ทผ ๊ณผ์ • + +ํŒŒ์ผ ์—ด๊ธฐ + +1. ๋””๋ ‰ํ† ๋ฆฌ ๊ฒ€์ƒ‰ +2. inode ๋ฒˆํ˜ธ ์ฐพ๊ธฐ +3. inode ์ฝ๊ธฐ +4. ๋ฐ์ดํ„ฐ ๋ธ”๋ก ์ ‘๊ทผ + + +โธป + +5๏ธโƒฃ ๋””์Šคํฌ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ + +๋””์Šคํฌ๋Š” ํ—ค๋“œ ์ด๋™ ๋น„์šฉ์ด ๋งค์šฐ ํฌ๋‹ค. + +๊ทธ๋ž˜์„œ ์š”์ฒญ ์ˆœ์„œ๋ฅผ ์ตœ์ ํ™”ํ•œ๋‹ค. + +โธป + +1๏ธโƒฃ FCFS (First Come First Serve) + +์š”์ฒญ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ + +์š”์ฒญ +98 โ†’ 183 โ†’ 37 โ†’ 122 + +์žฅ์  + +โœ” ๊ณต์ • + +๋‹จ์  + +โŒ ํ—ค๋“œ ์ด๋™ ๋งŽ์Œ + +โธป + +2๏ธโƒฃ SSTF (Shortest Seek Time First) + +๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์š”์ฒญ ๋จผ์ € ์ฒ˜๋ฆฌ + +์˜ˆ + +ํ˜„์žฌ 50 + +์š”์ฒญ +10 40 60 90 + +โ†’ 40 ๋จผ์ € + +์žฅ์  + +โœ” ํ‰๊ท  ํƒ์ƒ‰ ์‹œ๊ฐ„ ๊ฐ์†Œ + +๋‹จ์  + +โŒ Starvation ๊ฐ€๋Šฅ + +๋ฉ€๋ฆฌ ์žˆ๋Š” ์š”์ฒญ์ด ๊ณ„์† ๋ฐ€๋ฆผ + +โธป + +3๏ธโƒฃ SCAN (์—˜๋ฆฌ๋ฒ ์ดํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜) + +ํ—ค๋“œ๊ฐ€ ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•˜๋ฉด์„œ ์ฒ˜๋ฆฌ + +โ† โ† โ† โ† โ† +โ†’ โ†’ โ†’ โ†’ โ†’ + +์—˜๋ฆฌ๋ฒ ์ดํ„ฐ์ฒ˜๋Ÿผ ์›€์ง์ž„ + +ํŠน์ง• + +โœ” ๊ณต์ •์„ฑ ํ–ฅ์ƒ +โœ” starvation ๊ฐ์†Œ + +โธป + +4๏ธโƒฃ C-SCAN (Circular SCAN) + +ํ•œ ๋ฐฉํ–ฅ๋งŒ ์„œ๋น„์Šค + +โ†’ โ†’ โ†’ โ†’ โ†’ +๋ + +์ฒ˜์Œ์œผ๋กœ ์ ํ”„ + +โ†’ โ†’ โ†’ โ†’ + +ํŠน์ง• + +โœ” ์š”์ฒญ ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๊ท ์ผ + +โธป + +์ •๋ฆฌ + +์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŠน์ง• +FCFS ๋‹จ์ˆœ, ์ด๋™ ๋งŽ์Œ +SSTF ํ‰๊ท  ํƒ์ƒ‰ ์‹œ๊ฐ„ ์ตœ์†Œ +SCAN ์—˜๋ฆฌ๋ฒ ์ดํ„ฐ ๋ฐฉ์‹ +C-SCAN ํ•œ ๋ฐฉํ–ฅ ์ˆœํ™˜ + + +โธป + +6๏ธโƒฃ ์ €๋„๋ง ํŒŒ์ผ ์‹œ์Šคํ…œ + +๋Œ€ํ‘œ ์˜ˆ + โ€ข ext3 + โ€ข ext4 + โ€ข NTFS + +โธป + +์™œ ํ•„์š”ํ•œ๊ฐ€ + +๋ฌธ์ œ: + +ํŒŒ์ผ ์‹œ์Šคํ…œ ์ž‘์—… ์ค‘ ์ „์› ๊บผ์ง + +์˜ˆ + +ํŒŒ์ผ ์“ฐ๋Š” ์ค‘ +โ†“ +์‹œ์Šคํ…œ ๋‹ค์šด +โ†“ +ํŒŒ์ผ ์‹œ์Šคํ…œ ๊นจ์ง + +์ด๊ฑธ ํŒŒ์ผ ์‹œ์Šคํ…œ corruption์ด๋ผ๊ณ  ํ•œ๋‹ค. + +โธป + +ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• + +Journal (๋กœ๊ทธ)๋ฅผ ๋จผ์ € ๊ธฐ๋ก + +โธป + +๋™์ž‘ ๊ณผ์ • + +1๏ธโƒฃ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ Journal์— ๊ธฐ๋ก + +write intent + +2๏ธโƒฃ ์‹ค์ œ ๋””์Šคํฌ์— ์ ์šฉ + +3๏ธโƒฃ ์™„๋ฃŒ ํ›„ journal ์ œ๊ฑฐ + +โธป + +์‹œ์Šคํ…œ์ด ์ค‘๊ฐ„์— ๊บผ์ง€๋ฉด + +๋ถ€ํŒ… ์‹œ + +journal ๊ฒ€์‚ฌ + +๋ฏธ์™„๋ฃŒ ์ž‘์—… ๋ณต๊ตฌ + +โธป + +์žฅ์  + +โœ” ๋น ๋ฅธ ๋ณต๊ตฌ +โœ” ํŒŒ์ผ ์‹œ์Šคํ…œ ์•ˆ์ •์„ฑ + +โธป + +๐Ÿ“Œ ํ•ต์‹ฌ ์š”์•ฝ (์‹œํ—˜ ํ•ต์‹ฌ) + +ํŒŒ์ผ ์‹œ์Šคํ…œ ์—ญํ•  + +ํŒŒ์ผ ๊ด€๋ฆฌ +๋””์Šคํฌ ๊ณต๊ฐ„ ๊ด€๋ฆฌ +๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ +๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ์ œ๊ณต +์ ‘๊ทผ ์ œ์–ด + +ํŒŒ์ผ ํ• ๋‹น + +์—ฐ์† โ†’ ๋น ๋ฅด์ง€๋งŒ ๋‹จํŽธํ™” +์—ฐ๊ฒฐ โ†’ ํ™•์žฅ ์‰ฌ์›€, ๋žœ๋ค ๋А๋ฆผ +์ธ๋ฑ์Šค โ†’ ๋žœ๋ค ๊ฐ€๋Šฅ + +inode + +ํŒŒ์ผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ €์žฅ +๋ฐ์ดํ„ฐ ๋ธ”๋ก ์œ„์น˜ ์ €์žฅ +ํŒŒ์ผ ์ด๋ฆ„์€ ์—†์Œ + +๋””์Šคํฌ ์Šค์ผ€์ค„๋ง + +FCFS +SSTF +SCAN +C-SCAN + +์ €๋„๋ง ํŒŒ์ผ ์‹œ์Šคํ…œ + +๋จผ์ € ๋กœ๊ทธ ๊ธฐ๋ก โ†’ ์‹ค์ œ ์ž‘์—… +์ „์› ์žฅ์•  ์‹œ ๋ณต๊ตฌ ๊ฐ€๋Šฅ + + ## ๐Ÿ“Ž ์ฐธ๊ณ  ์ž๋ฃŒ ---