Linux์˜ ๊ฐ€์ƒ ํŒŒ์ผ ์‹œ์Šคํ…œ: ์™œ ํ•„์š”ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? 1 ๋ถ€

๋ชจ๋‘ ์•ˆ๋…•! ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์ด ์ด๋ฏธ ์‚ฌ๋ž‘์— ๋น ์ง„ ๊ณผ์ •์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ์ŠคํŠธ๋ฆผ์„ ๊ณ„์† ์ถœ์‹œํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด์ œ ์šฐ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด ๊ณผ์ • ์„ธํŠธ๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์„œ๋‘˜๋Ÿฌ ๋ฐœํ‘œํ•ฉ๋‹ˆ๋‹ค. "๋ฆฌ๋ˆ…์Šค ๊ด€๋ฆฌ์ž"XNUMX์›” ๋ง์— ์ถœ์‹œ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์ด ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๊ฐ„ํ–‰๋ฌผ ๋‚ ์งœ๊ฐ€ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ์›๋ณธ ์ž๋ฃŒ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ๋ฅผ ์ฝ์œผ์‹ญ์‹œ์˜ค.

๊ฐ€์ƒ ํŒŒ์ผ ์‹œ์Šคํ…œ์€ "๋ชจ๋“  ๊ฒƒ์ด ํŒŒ์ผ"์ด๋ผ๋Š” Linux์˜ ์ฒ ํ•™์„ ํ—ˆ์šฉํ•˜๋Š” ์ผ์ข…์˜ ๋งˆ๋ฒ• ๊ฐ™์€ ์ถ”์ƒํ™” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

Linux์˜ ๊ฐ€์ƒ ํŒŒ์ผ ์‹œ์Šคํ…œ: ์™œ ํ•„์š”ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? 1 ๋ถ€

ํŒŒ์ผ ์‹œ์Šคํ…œ์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? Linux์˜ ์ฒซ ๋ฒˆ์งธ ๊ธฐ์—ฌ์ž์ด์ž ์ €์ž ์ค‘ ํ•œ ์‚ฌ๋žŒ์˜ ๋ง์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•จ ๋กœ๋ฒ ๋ฅดํƒ€ ์šฉ์•”, "ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ํŠน์ • ๊ตฌ์กฐ์— ๋”ฐ๋ผ ์กฐํ•ฉ๋œ ๋ฐ์ดํ„ฐ์˜ ๊ณ„์ธต์  ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค." ์ด ์ •์˜๋Š” VFAT(๊ฐ€์ƒ ํŒŒ์ผ ํ• ๋‹น ํ…Œ์ด๋ธ”), Git ๋ฐ ์นด์‚ฐ๋“œ ๋ผ (NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค). ๊ทธ๋ ‡๋‹ค๋ฉด "ํŒŒ์ผ ์‹œ์Šคํ…œ"๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์ •ํ™•ํžˆ ์ •์˜ํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ธฐ์ดˆ

Linux ์ปค๋„์—๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ๊ฐ„์ฃผ๋  ์ˆ˜ ์žˆ๋Š” ์—”ํ„ฐํ‹ฐ์— ๋Œ€ํ•œ ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. open(), read() ะธ write() ์ด๋ฆ„์ด ์žˆ๋Š” ์˜๊ตฌ ๊ฐœ์ฒด์˜ ๊ฒฝ์šฐ. ๊ฐ์ฒด์ง€ํ–ฅ์  ๊ด€์ ์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ์ปค๋„์€ ์ผ๋ฐ˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์ถ”์ƒ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ •์˜ํ•˜๋ฉฐ ์ด ์„ธ ๊ฐ€์ง€ ํฐ ๊ธฐ๋Šฅ์€ "๊ฐ€์ƒ"์œผ๋กœ ๊ฐ„์ฃผ๋˜๋ฉฐ ๊ตฌ์ฒด์ ์ธ ์ •์˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ธฐ๋ณธ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ตฌํ˜„์„ VFS(๊ฐ€์ƒ ํŒŒ์ผ ์‹œ์Šคํ…œ)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Linux์˜ ๊ฐ€์ƒ ํŒŒ์ผ ์‹œ์Šคํ…œ: ์™œ ํ•„์š”ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? 1 ๋ถ€

์—”ํ„ฐํ‹ฐ๋ฅผ ์—ด๊ณ  ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ์œ„ ์ฝ˜์†”์˜ ์˜ˆ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ํ•ด๋‹น ์—”ํ„ฐํ‹ฐ๋Š” ํŒŒ์ผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.
VFS ํ˜„์ƒ์€ "๋ชจ๋“  ๊ฒƒ์ด ํŒŒ์ผ"์ด๋ผ๋Š” Unix์™€ ๊ฐ™์€ ๊ด€์ฐฐ์„ ๊ฐ•์กฐํ•  ๋ฟ์ž…๋‹ˆ๋‹ค. ์œ„์˜ ์ž‘์€ /dev/console ์˜ˆ์ œ๊ฐ€ ์ฝ˜์†”์ด ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์ด์ƒํ•œ์ง€ ์ƒ๊ฐํ•ด ๋ณด์‹ญ์‹œ์˜ค. ๊ทธ๋ฆผ์€ ๋Œ€ํ™”์‹ Bash ์„ธ์…˜์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด์„ ์ฝ˜์†”(๊ฐ€์ƒ ์ฝ˜์†” ์žฅ์น˜)๋กœ ๋ณด๋‚ด๋ฉด ๊ฐ€์ƒ ํ™”๋ฉด์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. VFS์—๋Š” ๋‹ค๋ฅธ ๋‚ฏ์„  ์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ์œผ๋กœ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์‚ฌ๋žŒ์— ์˜ํ•ด.

ext4, NFS ๋ฐ /proc๊ณผ ๊ฐ™์€ ์นœ์ˆ™ํ•œ ์‹œ์Šคํ…œ์—๋Š” C ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ธ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ์ž‘์—…. ๋˜ํ•œ ํŠน์ • ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ์นœ์ˆ™ํ•œ ๊ฐ์ฒด ์ง€ํ–ฅ ๋ฐฉ์‹์œผ๋กœ VFS ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๊ณ  ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. Robert Love๊ฐ€ ์ง€์ ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ VFS ์ถ”์ƒํ™”๋ฅผ ํ†ตํ•ด Linux ์‚ฌ์šฉ์ž๋Š” ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ ํ˜•์‹์— ๋Œ€ํ•œ ๊ฑฑ์ • ์—†์ด ์ œXNUMX์ž ์šด์˜ ์ฒด์ œ ๋˜๋Š” ํŒŒ์ดํ”„์™€ ๊ฐ™์€ ์ถ”์ƒ ์—”ํ„ฐํ‹ฐ ๊ฐ„์— ๋ฌด์‹ฌ์ฝ” ํŒŒ์ผ์„ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ธก(์‚ฌ์šฉ์ž ๊ณต๊ฐ„)์—์„œ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์Œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์—์„œ ์ปค๋„ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. read() ํ•˜๋‚˜์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์„ ํƒํ•œ ๋‹ค์Œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. write () ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ์„ ์œ„ํ•œ ๋‹ค๋ฅธ ํŒŒ์ผ ์‹œ์Šคํ…œ.

๊ธฐ๋ณธ VFS ์œ ํ˜•์— ์†ํ•˜๋Š” ํ•จ์ˆ˜ ์ •์˜๋Š” ํŒŒ์ผ์— ์žˆ์Šต๋‹ˆ๋‹ค. fs/*.c ์ปค๋„ ์†Œ์Šค ์ฝ”๋“œ, ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ fs/ ํŠน์ • ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ฝ”์–ด์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—”ํ„ฐํ‹ฐ๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. cgroups, /dev ะธ tmpfs, ๋ถ€ํŒ… ํ”„๋กœ์„ธ์Šค ์ค‘์— ํ•„์š”ํ•˜๋ฏ€๋กœ ์ปค๋„ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์— ์ •์˜๋ฉ๋‹ˆ๋‹ค. init/. ๊ทธ๊ฒƒ์„์ฃผ์˜ํ•ด๋ผ cgroups, /dev ะธ tmpfs "๋น… XNUMX" ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. file_operations, ๊ทธ๋Ÿฌ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘ ์ฝ๊ณ  ์”๋‹ˆ๋‹ค.
์•„๋ž˜ ๋‹ค์ด์–ด๊ทธ๋žจ์€ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์ด Linux ์‹œ์Šคํ…œ์— ์ผ๋ฐ˜์ ์œผ๋กœ ๋งˆ์šดํŠธ๋˜๋Š” ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ํ‘œ์‹œ๋˜์ง€ ์•Š์€ ๊ตฌ์กฐ pipes, dmesg ะธ POSIX clocks, ๋˜ํ•œ ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ file_operations, VFS ๊ณ„์ธต์„ ํ†ตํ•ด ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค.

Linux์˜ ๊ฐ€์ƒ ํŒŒ์ผ ์‹œ์Šคํ…œ: ์™œ ํ•„์š”ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? 1 ๋ถ€

VFS๋Š” ์‹œ์Šคํ…œ ํ˜ธ์ถœ๊ณผ ํŠน์ • ๊ตฌํ˜„ ์‚ฌ์ด์˜ "๋ž˜ํผ ๊ณ„์ธต"์ž…๋‹ˆ๋‹ค. file_operations์™€ ๊ฐ™์€ ext4 ะธ procfs. ๊ธฐ๋Šฅ file_operations ์žฅ์น˜ ๋“œ๋ผ์ด๋ฒ„ ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค ์žฅ์น˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. tmpfs, devtmpfs ะธ cgroups ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š” file_operations, ํ•˜์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘ ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค.
VFS์˜ ์กด์žฌ๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ ๊ด€๋ จ๋œ ๊ธฐ๋ณธ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ ์œ ํ˜•์—์„œ ๋‹ค์‹œ ๊ตฌํ˜„ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์€ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด ์‚ฌ์ด์—์„œ ์ผ๋ฐ˜์ ์ธ ๊ด€ํ–‰์ž…๋‹ˆ๋‹ค! ๊ทธ๋Ÿฌ๋‚˜ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ์— ๋‹ค์Œ์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ ์‹ฌ๊ฐํ•œ ์‹ค์ˆ˜, ๊ณตํ†ต ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์†ํ•˜๋Š” ๋ชจ๋“  ๊ตฌํ˜„์€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๊ฒช์Šต๋‹ˆ๋‹ค.

/tmp: ๊ฐ„๋‹จํ•œ ํžŒํŠธ

์‹œ์Šคํ…œ์— VFS๊ฐ€ ์žˆ๋Š”์ง€ ๊ฐ์ง€ํ•˜๋Š” ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ์„ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. mount | grep -v sd | grep -v :/, ๋งˆ์šดํŠธ๋œ ๋ชจ๋“  ํ•ญ๋ชฉ(mounted) ๋””์Šคํฌ์— ์ƒ์ฃผํ•˜์ง€ ์•Š๊ณ  NFS๊ฐ€ ์•„๋‹Œ ํŒŒ์ผ ์‹œ์Šคํ…œ(๋Œ€๋ถ€๋ถ„์˜ ์ปดํ“จํ„ฐ์— ํ•ด๋‹น). ๋‚˜์—ด๋œ ๋งˆ์šดํŠธ ์ค‘ ํ•˜๋‚˜(mounts) VFS๋Š” ์˜์‹ฌํ•  ์—ฌ์ง€ ์—†์ด /tmp๊ทธ๋ ‡์ง€?

Linux์˜ ๊ฐ€์ƒ ํŒŒ์ผ ์‹œ์Šคํ…œ: ์™œ ํ•„์š”ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? 1 ๋ถ€

๋ˆ„๊ตฌ๋‚˜ ์•Œ๊ณ  ์žˆ๋Š” ์Šคํ† ๋ฆฌ์ง€ / tmp ๋ฌผ๋ฆฌ์  ๋งค์ฒด์—์„œ - ๊ด‘๊ธฐ! ์ถœ์ฒ˜.

์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์€ ์ด์œ  /tmp ๋ฌผ๋ฆฌ์  ๋งค์ฒด์—์„œ? ํŒŒ์ผ์ด ๋“ค์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— /tmp ์ž„์‹œ์ด๋ฉฐ ์ €์žฅ ์žฅ์น˜๋Š” tmpfs๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ๋Š๋ฆฝ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฌผ๋ฆฌ์  ๋ฏธ๋””์–ด๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ๋ฎ์–ด์“ธ ๋•Œ ๋งˆ๋ชจ๋˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ /tmp์˜ ํŒŒ์ผ์—๋Š” ๋ฏผ๊ฐํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์žฌ๋ถ€ํŒ…ํ•  ๋•Œ๋งˆ๋‹ค ํŒŒ์ผ์„ ์‚ฌ๋ผ์ง€๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

์•ˆํƒ€๊น๊ฒŒ๋„ ์ผ๋ถ€ Linux ๋ฐฐํฌํŒ ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ €์žฅ ์žฅ์น˜์— /tmp๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์—๋„ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ์ ˆ๋งํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋ช‡ ๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ ์ง€์นจ์„ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค. ์•„์น˜ ์œ„ํ‚ค์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ tmpfs ๋‹ค๋ฅธ ๋ชฉ์ ์œผ๋กœ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ฑฐ๋Œ€ํ•œ tmpfs์™€ ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ์ด ์žˆ๋Š” ์‹œ์Šคํ…œ์€ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ๋ฐ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ํžŒํŠธ: ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๋Š” ๋™์•ˆ /etc/fstab, ์ƒˆ ์ค„๋กœ ๋๋‚˜์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์‹œ์Šคํ…œ์ด ๋ถ€ํŒ…๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

/proc ๋ฐ /sys

๊ฒŒ๋‹ค๊ฐ€ /tmp, Linux ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ€์žฅ ์นœ์ˆ™ํ•œ VFS(๊ฐ€์ƒ ํŒŒ์ผ ์‹œ์Šคํ…œ)๋Š” /proc ะธ /sys. (/dev ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์ฃผํ•˜๋ฉฐ file_operations). ์™œ ์ด ๋‘ ๊ฐ€์ง€ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๊นŒ? ์ด ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

procfs ์ปค๋„๊ณผ ์ปค๋„์ด ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์Šค๋ƒ…์ƒท์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. userspace. ์— /proc ์ปค๋„์€ ์ธํ„ฐ๋ŸฝํŠธ, ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ์Šค์ผ€์ค„๋Ÿฌ์™€ ๊ฐ™์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€, /proc/sys ๋ช…๋ น์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ์œ„์น˜์ž…๋‹ˆ๋‹ค. sysctl, ์‚ฌ์šฉ ๊ฐ€๋Šฅ userspace. ๊ฐœ๋ณ„ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ ๋ฐ ํ†ต๊ณ„๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. /proc/.

Linux์˜ ๊ฐ€์ƒ ํŒŒ์ผ ์‹œ์Šคํ…œ: ์™œ ํ•„์š”ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? 1 ๋ถ€

์—ฌ๊ธฐ์— /proc/meminfo ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ค‘์š”ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ๋นˆ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

ํ–‰๋™ /proc files๋Š” VFS ๋””์Šคํฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์–ผ๋งˆ๋‚˜ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ํ•œ์ชฝ์—๋Š” /proc/meminfo ๋ช…๋ น์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ •๋ณด ํฌํ•จ free. ๋ฐ˜๋ฉด์— ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค! ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? ์ƒํ™ฉ์€ ์œ ๋ช…ํ•œ ๊ธฐ์‚ฌ๋ฅผ ์—ฐ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์•„๋ฌด๋„ ๋ณด์ง€ ์•Š์„ ๋•Œ ๋‹ฌ์ด ์กด์žฌํ•ฉ๋‹ˆ๊นŒ? ํ˜„์‹ค๊ณผ ์–‘์ž ์ด๋ก "1985๋…„ ์ฝ”๋„ฌ ๋Œ€ํ•™๊ต ๋ฌผ๋ฆฌํ•™ ๊ต์ˆ˜ David Mermin์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค์€ ์š”์ฒญ์ด ์žˆ์„ ๋•Œ ์ปค๋„์ด ๋ฉ”๋ชจ๋ฆฌ ํ†ต๊ณ„๋ฅผ ์ˆ˜์ง‘ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. /proc, ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ๋กœ ํŒŒ์ผ /proc ์•„๋ฌด๋„ ๋ณด์ง€ ์•Š์„ ๋•Œ ์•„๋ฌด๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋งํ–ˆ๋“ฏ์ด ๋จธ๋ฏผ, "๊ธฐ๋ณธ์ ์ธ ์–‘์ž ๊ต๋ฆฌ๋Š” ์ธก์ •์ด ์ผ๋ฐ˜์ ์œผ๋กœ ์ธก์ •๋˜๋Š” ์†์„ฑ์˜ ๊ธฐ์กด ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค." (๊ทธ๋ฆฌ๊ณ  ๋‹ฌ์— ๋Œ€ํ•œ ์งˆ๋ฌธ์€ ์ˆ™์ œ๋กœ ์ƒ๊ฐํ•˜์„ธ์š”!)
๊ณตํ—ˆํ•ด ๋ณด์ด๋Š” procfs ์ •๋ณด๊ฐ€ ์—ญ๋™์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์™€ ์•ฝ๊ฐ„ ๋‹ค๋ฅธ ์ƒํ™ฉ sysfs. ํฌ๊ธฐ๊ฐ€ ์ตœ์†Œ XNUMX๋ฐ”์ดํŠธ์ธ ํŒŒ์ผ์ด ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€ ๋น„๊ตํ•ด ๋ด…์‹œ๋‹ค. /proc ๊ณผ /sys.

Linux์˜ ๊ฐ€์ƒ ํŒŒ์ผ ์‹œ์Šคํ…œ: ์™œ ํ•„์š”ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? 1 ๋ถ€

Procfs ์—๋Š” ํ•˜๋‚˜์˜ ํŒŒ์ผ, ์ฆ‰ ๋‚ด๋ณด๋‚ธ ์ปค๋„ ๊ตฌ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ถ€ํŒ…๋‹น ํ•œ ๋ฒˆ๋งŒ ์ƒ์„ฑํ•˜๋ฉด ๋˜๋ฏ€๋กœ ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค. ํ•œํŽธ, /sys ๋” ํฐ ํŒŒ์ผ์ด ๋งŽ์ด ์žˆ์œผ๋ฉฐ ๊ทธ ์ค‘ ๋งŽ์€ ํŒŒ์ผ์ด ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ํŒŒ์ผ sysfs ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŒŒ์ผ ์ฝ๊ธฐ์—์„œ ์–ป์€ ์ •๋ณด ํ…Œ์ด๋ธ”๊ณผ ๋‹ฌ๋ฆฌ ์ •ํ™•ํžˆ ํ•˜๋‚˜์˜ ์ˆซ์ž ๋˜๋Š” ๋ผ์ธ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. /proc/meminfo.

๊ณจ sysfs - ์ปค๋„์ด ํ˜ธ์ถœํ•˜๋Š” ์ฝ๊ธฐ/์“ฐ๊ธฐ ์†์„ฑ ์ œ๊ณต ยซkobjectsยป ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์—์„œ. ์œ ์ผํ•œ ๋ชฉํ‘œ kobjects ๋งํฌ ์นด์šดํŒ…: kobject์— ๋Œ€ํ•œ ๋งˆ์ง€๋ง‰ ๋งํฌ๊ฐ€ ์ œ๊ฑฐ๋˜๋ฉด ์‹œ์Šคํ…œ์€ ์ด์™€ ๊ด€๋ จ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , /sys ๋Œ€๋ถ€๋ถ„์˜ ์œ ๋ช…ํ•œ "์‚ฌ์šฉ์ž ๊ณต๊ฐ„์„ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ABI" ์–ด๋–ค ์ƒํ™ฉ์—์„œ๋„ ๋ˆ„๊ตฌ๋„ ํ•  ์ˆ˜ ์—†๋Š” ํ•ต์‹ฌ "๋ถ€์„œ์ง€๋‹ค". ์ด๊ฒƒ์€ sysfs์˜ ํŒŒ์ผ์ด ์ •์ ์ด๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋ถˆ์•ˆ์ •ํ•œ ๊ฐœ์ฒด์˜ ์ฐธ์กฐ ์นด์šดํŠธ์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ปค๋„์˜ ์•ˆ์ •์ ์ธ ABI๋Š” ๋‹ค์Œ์— ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. /sys, ํŠน์ • ์ˆœ๊ฐ„์— ์‹ค์ œ๋กœ ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. sysfs์—์„œ ํŒŒ์ผ ๊ถŒํ•œ์„ ๋‚˜์—ดํ•˜๋ฉด ์žฅ์น˜, ๋ชจ๋“ˆ, ํŒŒ์ผ ์‹œ์Šคํ…œ ๋“ฑ์— ๋Œ€ํ•ด ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ์„ค์ •์ด ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜๋Š”์ง€์— ๋Œ€ํ•œ ํ†ต์ฐฐ๋ ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑํ•˜๊ฑฐ๋‚˜ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋…ผ๋ฆฌ์  ๊ฒฐ๋ก ์€ procfs๋„ ์ปค๋„์˜ ์•ˆ์ •์ ์ธ ABI์˜ ์ผ๋ถ€๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„ ์  ์„œ๋ฅ˜ ๋น„์น˜.

Linux์˜ ๊ฐ€์ƒ ํŒŒ์ผ ์‹œ์Šคํ…œ: ์™œ ํ•„์š”ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? 1 ๋ถ€

์— ์žˆ๋Š” ํŒŒ์ผ sysfs ๊ฐ ์—”ํ„ฐํ‹ฐ์— ๋Œ€ํ•œ ํ•˜๋‚˜์˜ ํŠน์ • ์†์„ฑ์„ ์„ค๋ช…ํ•˜๊ณ  ์ฝ์„ ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ์“ธ ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ๋‘˜ ๋‹ค ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์˜ "0"์€ SSD๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

eBPF ๋ฐ bcc ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ VFS๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฒˆ์—ญ์˜ ๋‘ ๋ฒˆ์งธ ๋ถ€๋ถ„์„ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ท€ํ•˜์˜ ์˜๊ฒฌ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์œผ๋ฉฐ ์ „ํ†ต์ ์œผ๋กœ ๊ท€ํ•˜๋ฅผ ์ดˆ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ์˜คํ”ˆ ์›จ๋น„๋‚˜, 9์›” XNUMX์ผ์— ์šฐ๋ฆฌ ์„ ์ƒ๋‹˜์ด ๊ฐœ์ตœํ•ฉ๋‹ˆ๋‹ค - ๋ธ”๋ผ๋””๋ฏธ๋ฅด ๋“œ๋กœ์ฆˆ๋ฐ์ธ ํ‚ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€