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 + +์ €๋„๋ง ํŒŒ์ผ ์‹œ์Šคํ…œ + +๋จผ์ € ๋กœ๊ทธ ๊ธฐ๋ก โ†’ ์‹ค์ œ ์ž‘์—… +์ „์› ์žฅ์•  ์‹œ ๋ณต๊ตฌ ๊ฐ€๋Šฅ + + ## ๐Ÿ“Ž ์ฐธ๊ณ  ์ž๋ฃŒ ---