Search
๐Ÿ’พ

22 : File System Implementation

course
last review
mastery
none
progress
not started
date
4 more properties
Previous chapter

Overall Organization

๊ธฐ๋ณธ์ ์œผ๋กœ ๋””์Šคํฌ๋ฅผ ๋ธ”๋ก์ด๋ผ๋Š” ๋‹จ์œ„๋กœ ๋‚˜๋ˆ ์„œ ๋‹ค๋ฃฌ๋‹ค.
โ€ข
Data Region
๋ฐ์ดํ„ฐ ๋ธ”๋Ÿญ์œผ๋กœ ๊ตฌ์—ญ์„ ๋‚˜๋ˆ ์„œ ํ• ๋‹น์„ ํ•œ๋‹ค.
๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฒฝ์šฐ๋Š” ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ๊ด€๋ฆฌ๋‹นํ•˜๋ฉฐ,
๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ๋Š” ๋ธ”๋Ÿญ ๋‹จ์œ„๋กœ ๊ด€๋ฆฌ๋œ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.
โ€ข
Metadata
๋ณธ์ฒด์— ๋Œ€ํ•œ ์„ค๋ช…์ด ๋“ค์–ด๊ฐ€์žˆ๋Š” ๊ณณ์ด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
์–ด๋–ค ํŒŒ์ผ์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ธ”๋Ÿญ๋“ค์ด ์–ด๋–ค ๋†ˆ์ธ์ง€, ํŒŒ์ผ์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ์–ด๋–ค์ง€, ์†Œ์œ ์ž๊ฐ€ ๋ˆ„๊ตฌ์ด๋ฉฐ ๊ถŒํ•œ์ด ์–ด๋–ป๊ฒŒ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์„ค๋ช…
์ด๋ฅผ inode(index node)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๋ฆฌํ•œ๋‹ค.
โ€ข
๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.
โ€ข
๋””์Šคํฌ์—์„œ inode ํ…Œ์ด๋ธ”์„ ๋””์Šคํฌ์— ํ• ๋‹นํ•œ๋‹ค.
inode ๊ตฌ์กฐ์ฒด ํ•˜๋‚˜๊ฐ€ ๋ธ”๋Ÿญ ํ•˜๋‚˜๋ฅผ ์ฐจ์ง€ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ์ž‘์Œ. ๋”ฐ๋ผ์„œ ๋ธ”๋Ÿญ ํ•˜๋‚˜์— ์—ฌ๋Ÿฌ inode๊ฐ€ ์žˆ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.
I๋…ธ๋“œ ํ•˜๋‚˜๊ฐ€ ํ•˜๋‚˜์˜ ํŒŒ์ผ์„ ํ‘œํ˜„ํ•˜๊ณ  ์žˆ์Œ. inode๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ๋ธ”๋Ÿญ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.
read,write์—์„œ ํŒŒ์ผ์˜ ๋ถˆ์—ฐ์†์ ์ธ ๋ฐ์ดํ„ฐ ๋ธ”๋Ÿญ์„ ์ž๋™์œผ๋กœ ๊ฐ€๋ฆฌ์ผœ์ค˜, ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” ์—ฐ์†์ ์ธ ๊ณต๊ฐ„์ด๋ผ๊ณ  ์—ฌ๊ธฐ๊ฒŒ ํ•˜๋Š” ์ถ”์ƒํ™”.โ†’ OS๊ฐ€ ์ œ๊ณตํ•ด์ค€๋‹ค.

Allocation structure

โ€ข
inode๋‚˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํ• ๋‹น๋˜์–ด์žˆ๋Š”์ง€ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ์ง€๋ฅผ ์ถ”์ ํ•˜๋Š” ๊ณณ์ด๋‹ค.
โ€ข
Free list๋‚˜ bitmap์„ ์‚ฌ์šฉํ•œ๋‹ค.

Superblock

๋””์Šคํฌ์˜ ๊ด€์ ์—์„œ ๋ดค์„ ๋•Œ ๋””์Šคํฌ์˜ ์‹œ์ž‘ ์ง€์ ๋ถ€ํ„ฐ ๋ ์ง€์ ๊นŒ์ง€ ํ•œ ๋ฌถ์Œ์œผ๋กœ ๋ฌถ์–ด์„œ ํŒŒํ‹ฐ์…˜์ด๋ผ ์นญํ•œ๋‹ค.
๋””์Šคํฌ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ์‚ฌ์šฉํ•ด์„œ, ํŒŒํ‹ฐ์…˜์„ ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ธ์‹ํ•˜๊ฑฐ๋‚˜,
ํ•˜๋‚˜์˜ ๋“œ๋ผ์ด๋ธŒ๋ฅผ ๋‘๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์œผ๋กœ ํฌ๋งทํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
์ˆ˜ํผ๋ธ”๋Ÿญ์€ inode์˜ ๊ฐœ์ˆ˜์™€ inodeํ…Œ์ด๋ธ”์˜ ์‹œ์ž‘ ์œ„์น˜, data๋ธ”๋Ÿญ์˜ ์‹œ์ž‘ ์œ„์น˜์™€ ์‚ฌ์ด์ฆˆ ๋“ฑ ํŒŒํ‹ฐ์…˜ ์ „์ฒด์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ธ”๋Ÿญ์ด๋‹ค.

Example

โ€ข
Block size : 4KB
โ†’ 256KB ํŒŒํ‹ฐ์…˜(64-block partition)
โ€ข
inode size : 256B
โ†’ 16 inodes
โ†’ total 80 inodes
i๋…ธ๋“œ๋Š” ์ด๋ก ์ ์œผ๋กœ 80๊ฐœ๊นŒ์ง€ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ ๋ธ”๋ก์ด 56๊ฐœ๊นŒ์ง€ ์žˆ์œผ๋ฏ€๋กœ, ์‹ค์ œ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ์˜ ๊ฐœ์ˆ˜๋Š” ๋” ์ ๋‹ค.

inode

์–ด๋Š inode๋ฅผ ์‚ฌ์šฉํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ์„œ inode์˜ ๋ฒˆํ˜ธ๊ฐ€ ์ •ํ•ด์ง„๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น ๋„˜๋ฒ„๋Š” ์ผ์ข…์˜ inode ์˜คํ”„์…‹์ด ๋œ๋‹ค.

inode 32 read

โ€ข
inode์˜ ์˜คํ”„์…‹์„ ์ฐธ์กฐํ•œ๋‹ค. : 32*sizeof(inode)=8KB
โ€ข
superblock์œผ๋กœ๋ถ€ํ„ฐ inode์˜ ์‹œ์ž‘์ฃผ์†Œ๋ฅผ ๋ฐ›์•„์˜จ๋‹ค. = 12KB
โ€ข
inode์˜ ์˜คํ”„์…‹์€ : 12+8 = 20KB์ด๋‹ค.
IO๋Š” ํŒŒํ‹ฐ์…˜์—๊ฒŒ ํ•ด๋‹น ์˜คํ”„์…‹์„ ์„นํ„ฐ๋‹จ์œ„๋กœ ๋ฐ”๊ฟ”์„œ ๋ช…๋ นํ•ด์ค˜์•ผํ•œ๋‹ค.
โ€ข
๊ธฐ๋ณธ์ ์œผ๋กœ 512B์ด๋ฏ€๋กœ,
โ€ข
์„นํ„ฐ ์ฃผ์†Œ : 20 * 1024 / 512 = 20

Multi-level index

โ€ข
inode์•ˆ์—๋‹ค๊ฐ€ block๋“ค์˜ ๋ฒˆํ˜ธ๋ฅผ ์ญ‰ ์ ๋„๋ก ๋งŒ๋“ ๋‹ค๋ฉด ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
โ—ฆ
๋ฐฐ์—ด์ด๋‹ˆ๊นŒโ€ฆ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ maxsize๊ฐ€ ๋œ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ€ํ‹ฐ๋ ˆ๋ฒจ ์ธ๋ฑ์‹ฑ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
inode๋Š” ํฐ ํŒŒ์ผ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ง์ ‘ ๋ฐ์ดํ„ฐ ๋ธ”๋Ÿญ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” Direct pointer์™€ ๋˜๋‹ค๋ฅธ index๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” indirect pointer๋กœ ๋‚˜๋‰œ๋‹ค.

Example

โ€ข
12 direct pointers
โ€ข
1 indirect pointer
โ€ข
Block size : 4KB
โ€ข
4B disk address
โ€ข
can accommodate a file

Directory

โ€ข
ํŒŒ์ผ์˜ ์ŠคํŽ˜์…œ ํƒ€์ž…์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.
โ—ฆ
ํŒŒ์ผ์˜ ํƒ€์ž…์ด inode์— ์ €์žฅ๋˜๋Š”๋ฐ, regular file์™€ directory๋กœ ๋‚˜๋‰œ๋‹ค.
โ€ข
Next chapter