เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ virtual เปƒเบ™ Linux: เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเบกเบฑเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปเบฅเบฐเป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”? เบžเบฒเบเบ—เบต 1

เบชเบฐเบšเบฒเบเบ”เบตเบ—เบธเบเบ„เบปเบ™! เบžเบงเบเป€เบฎเบปเบฒเบชเบทเบšเบ•เปเปˆเป€เบ›เบตเบ”เบชเบฒเบเปƒเปเปˆเปƒเบ™เบซเบผเบฑเบเบชเบนเบ”เบ—เบตเปˆเบ—เปˆเบฒเบ™เบฎเบฑเบเปเบฅเป‰เบง, เปเบฅเบฐเบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบเบณเบฅเบฑเบ‡เบฎเบตเบšเบฎเป‰เบญเบ™เบ›เบฐเบเบฒเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบเบณเบฅเบฑเบ‡เป€เบฅเบตเปˆเบกเบซเบผเบฑเบเบชเบนเบ”เปƒเปเปˆ. "เบœเบนเป‰เป€เบšเบดเปˆเบ‡เปเบเบ‡เบฅเบฐเบšเบปเบš Linux", เป€เบŠเบดเปˆเบ‡เบˆเบฐเป€เบ›เบตเบ”เบ•เบปเบงเปƒเบ™เบ—เป‰เบฒเบเป€เบ”เบทเบญเบ™เป€เบกเบชเบฒ. เบชเบดเปˆเบ‡เบžเบดเบกเปƒเปเปˆเบˆเบฐเบ–เบทเบเบญเบธเบ—เบดเบ”เปƒเบซเป‰เบเบฑเบšเป€เบซเบ”เบเบฒเบ™เบ™เบตเป‰. เบ”เป‰เบงเบเบงเบฑเบ”เบชเบฐเบ”เบธเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰ เบญเปˆเบฒเบ™เบ—เบตเปˆเบ™เบตเป‰.

เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ virtual เป€เบฎเบฑเบ”เป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ abstraction magical เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ›เบฑเบ”เบŠเบฐเบเบฒเบ‚เบญเบ‡ Linux เป€เบงเบปเป‰เบฒเบงเปˆเบฒ "เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เป„เบŸเบฅเปŒ."

เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ virtual เปƒเบ™ Linux: เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเบกเบฑเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปเบฅเบฐเป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”? เบžเบฒเบเบ—เบต 1

เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเปเบกเปˆเบ™เบซเบเบฑเบ‡? เบญเบตเบ‡เบ•เบฒเบกเบ„เปเบฒเป€เบงเบปเป‰เบฒเบ‚เบญเบ‡เบœเบนเป‰เบ›เบฐเบเบญเบšเบชเปˆเบงเบ™เปเบฅเบฐเบœเบนเป‰เบ‚เบฝเบ™ Linux เบ•เบปเป‰เบ™ Robert เบฎเบฑเบ, "เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเปเบกเปˆเบ™เบเบฒเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปเบšเบšเบฅเบณเบ”เบฑเบšเบ—เบตเปˆเบ›เบฐเบเบญเบšเบ•เบฒเบกเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบชเบฐเป€เบžเบฒเบฐ." เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ„เปเบฒเบ™เบดเบเบฒเบกเบ™เบตเป‰เปƒเบŠเป‰เป„เบ”เป‰เบ”เบตเป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™เบเบฑเบš VFAT (เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เป„เบŸเบฅเปŒ virtual), Git เปเบฅเบฐ Cassandra (เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™ NoSQL). เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบชเบดเปˆเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบ›เบฑเบ™ "เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ"?

เบžเบทเป‰เบ™เบ–เบฒเบ™เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ

Linux kernel เบกเบตเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบชเปเบฒเบฅเบฑเบšเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบงเปˆเบฒเป€เบ›เบฑเบ™เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ. เบกเบฑเบ™เบ•เป‰เบญเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบงเบดเบ—เบตเบเบฒเบ™ open(), read() ะธ write() เบชเปเบฒเบฅเบฑเบšเบงเบฑเบ”เบ–เบธเบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเบกเบตเบŠเบทเปˆ. เบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบงเบฑเบ”เบ–เบธ เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เปเบเบผเบก, kernel เบเปเบฒเบ™เบปเบ”เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ—เบปเปˆเบงเป„เบ›เป€เบ›เบฑเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ—เบตเปˆเบšเปเปˆเบกเบตเบ•เบปเบงเบ•เบปเบ™, เปเบฅเบฐเบชเบฒเบกเบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ™เบตเป‰เบ–เบทเบเบ–เบทเบงเปˆเบฒเป€เบ›เบฑเบ™ "virtual" เปเบฅเบฐเบšเปเปˆเบกเบตเบ„เปเบฒเบ™เบดเบเบฒเบกเบชเบฐเป€เบžเบฒเบฐ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เปเบกเปˆเบ™เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ virtual (VFS).

เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ virtual เปƒเบ™ Linux: เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเบกเบฑเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปเบฅเบฐเป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”? เบžเบฒเบเบ—เบต 1

เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ”, เบญเปˆเบฒเบ™เปเบฅเบฐเบ‚เบฝเบ™เป„เบ›เบซเบฒเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เปƒเบ”เบซเบ™เบถเปˆเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบ™เบฑเป‰เบ™เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป€เบ›เบฑเบ™เป„เบŸเบฅเปŒ, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เบˆเบฒเบเบ•เบปเบงเบขเปˆเบฒเบ‡เปƒเบ™ console เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡.
เบ›เบฐเบเบปเบ”เบเบฒเบ™ VFS เบžเบฝเบ‡เปเบ•เปˆเบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบเบฒเบ™เบชเบฑเบ‡เป€เบเบ”เบเบฒเบ™เบ—เบปเปˆเบงเป„เบ›เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบท Unix เบงเปˆเบฒ "เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เป„เบŸเบฅเปŒ." เบ„เบดเบ”เบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เปเบ›เบเบ—เบตเปˆเบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบเบฑเบš /dev/console เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒ console เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”. เบฎเบนเบšเบžเบฒเบšเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบเบญเบ‡เบ›เบฐเบŠเบธเบก Bash เปเบšเบšเป‚เบ•เป‰เบ•เบญเบš. เบเบฒเบ™เบชเบปเปˆเบ‡เบชเบฐเบ•เบฃเบดเบ‡เป„เบ›เบซเบฒเบ„เบญเบ™เป‚เบŠเบ™ (เบญเบธเบ›เบฐเบเบญเบ™เบ„เบญเบ™เป‚เบŠเบ™เบชเบฐเป€เปเบทเบญเบ™) เบชเบฐเปเบ”เบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เปœเป‰เบฒเบˆเปเบชเบฐเป€เปเบทเบญเบ™. VFS เบกเบตเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบญเบทเปˆเบ™, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ„เบปเบ™เปเบ›เบเบซเบ™เป‰เบฒ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบฑเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเป‚เบ”เบ เบฅเบฒเบง.

เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบšเป€เบŠเบฑเปˆเบ™ ext4, NFS, เปเบฅเบฐ / proc เบกเบตเบชเบฒเบกเบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™ C เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ. file_operations. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบšเบฒเบ‡เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ‚เบฐเบซเบเบฒเบ เปเบฅเบฐเบฅเบปเบšเบฅเป‰เบฒเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ VFS เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡. เบ”เบฑเปˆเบ‡เบ—เบตเปˆ Robert Love เบšเบฑเบ™เบ—เบถเบเป„เบงเป‰, เบเบฒเบ™เบšเปเปˆเบกเบตเบ•เบปเบงเบ•เบปเบ™เบ‚เบญเบ‡ VFS เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰ Linux เบชเบฒเบกเบฒเบ”เบ„เบฑเบ”เบฅเบญเบเป„เบŸเบฅเปŒเป„เบ›เบซเบฒเบซเบผเบทเบˆเบฒเบเบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบกเบซเบผเบทเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบ•เบปเบงเบ•เบปเบ™เป€เบŠเบฑเปˆเบ™เบ—เปเปˆเป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฑเบ‡เบงเบปเบ™เบเปˆเบฝเบงเบเบฑเบšเบฎเบนเบšเปเบšเบšเบ‚เปเป‰เบกเบนเบ™เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ. เปƒเบ™เบ”เป‰เบฒเบ™เบœเบนเป‰เปƒเบŠเป‰ (เบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰), เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เป‚เบ—เบฅเบฐเบšเบปเบš, เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบฑเบ”เบฅเบญเบเบˆเบฒเบเป„เบŸเบฅเปŒเป„เบ›เบซเบฒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™ kernel เป‚เบ”เบเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™. read() เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบซเบ™เบถเปˆเบ‡เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ™เปเบฒเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™ write () เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบญเบทเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ‚เปเป‰เบกเบนเบ™.

เบ„เปเบฒเบ™เบดเบเบฒเบกเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ” VFS เบžเบทเป‰เบ™เบ–เบฒเบ™เปเบกเปˆเบ™เบžเบปเบšเป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™เป„เบŸเบฅเปŒ fs/*.c เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ kernel, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบเปˆเบญเบ fs/ เบกเบตเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบชเบฐเป€เบžเบฒเบฐ. เบซเบผเบฑเบเบเบฑเบ‡เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เป€เบŠเบฑเปˆเบ™: cgroups, /dev ะธ tmpfs, เป€เบŠเบดเปˆเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™ boot เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบถเปˆเบ‡เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™ subdirectory kernel init/. เบเบฐเบฅเบธเบ™เบฒเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ cgroups, /dev ะธ tmpfs เบขเปˆเบฒเป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ "เบชเบฒเบกเปƒเบซเบเปˆ". file_operations, เปเบ•เปˆเป‚เบ”เบเบเบปเบ‡เบญเปˆเบฒเบ™เปเบฅเบฐเบ‚เบฝเบ™เปƒเบชเปˆเบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒ.
เปเบœเบ™เบงเบฒเบ”เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเบ•เบดเบ”เบขเบนเปˆเบ—เบปเปˆเบงเป„เบ›เปƒเบ™เบฅเบฐเบšเบปเบš Linux. เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เป€เบŠเบฑเปˆเบ™: pipes, dmesg ะธ POSIX clocks, เป€เบŠเบดเปˆเบ‡เบเบฑเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ file_operations, เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป‚เบ”เบเบœเปˆเบฒเบ™เบŠเบฑเป‰เบ™ VFS.

เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ virtual เปƒเบ™ Linux: เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเบกเบฑเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปเบฅเบฐเป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”? เบžเบฒเบเบ—เบต 1

VFS เปเบกเปˆเบ™ "เบŠเบฑเป‰เบ™ wrapper" เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป‚เบ—เบฅเบฐเบšเบปเบšเปเบฅเบฐเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡ file_operations, เป€เบŠเบฑเปˆเบ™โ€‹เบงเปˆเบฒ ext4 ะธ procfs. เบŸเบฑเบ‡เบŠเบฑเบ™ file_operations เบชเบฒเบกเบฒเบ”เป‚เบ•เป‰เบ•เบญเบšเบเบฑเบšเป„เบ”เป€เบงเบตเบญเบธเบ›เบฐเบเบญเบ™ เบซเบผเบทเบญเบธเบ›เบฐเบเบญเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณ. tmpfs, devtmpfs ะธ cgroups เบขเปˆเบฒเปƒเบŠเป‰ file_operations, เปเบ•เปˆเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเป‚เบ”เบเบเบปเบ‡.
เบเบฒเบ™เบกเบตเบขเบนเปˆเบ‚เบญเบ‡ VFS เบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เบ„เบทเบ™เปƒเบซเบกเปˆ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบงเบดเบ—เบตเบเบฒเบ™เบซเบผเบฑเบเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เบทเบ™เปƒเบซเบกเปˆเป‚เบ”เบเปเบ•เปˆเบฅเบฐเบ›เบฐเป€เบžเบ”เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ. เบเบฒเบ™เปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เบ„เบทเบ™เปƒเบซเบกเปˆเปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเปƒเบŠเป‰เบเบฑเบ™เบขเปˆเบฒเบ‡เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡เปƒเบ™เบšเบฑเบ™เบ”เบฒเบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบŠเบญเบšเปเบง! เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ–เป‰เบฒเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเปƒเบŠเป‰เบ„เบทเบ™เป„เบ”เป‰เบ›เบฐเบเบญเบšเบ”เป‰เบงเบ เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบฎเป‰เบฒเบเปเบฎเบ‡, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบชเบทเบšเบ—เบญเบ”เบงเบดเบ—เบตเบเบฒเบ™เบ—เบปเปˆเบงเป„เบ›เบ—เบปเบ™เบ—เบธเบเบˆเบฒเบเบžเบงเบเป€เบ‚เบปเบฒ.

/tmp: เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ‡เปˆเบฒเบเป†

เบงเบดเบ—เบตเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบˆเบฐเบเบงเบ”เบžเบปเบšเบงเปˆเบฒ VFSs เบกเบตเบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบšเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเป„เบ› mount | grep -v sd | grep -v :/, เป€เบŠเบดเปˆเบ‡โ€‹เบˆเบฐโ€‹เบชเบฐโ€‹เปเบ”เบ‡โ€‹เปƒเบซเป‰โ€‹เป€เบซเบฑเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ” mounted (mounted) เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเบšเปเปˆเบขเบนเปˆเปƒเบ™เปเบœเปˆเบ™เปเบฅเบฐเบšเปเปˆเปเบกเปˆเบ™ NFS, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบชเปˆเบงเบ™เปƒเบซเบเปˆ. เบซเบ™เบถเปˆเบ‡โ€‹เปƒเบ™โ€‹เบšเบฑเบ™โ€‹เบŠเบตโ€‹เบฅเบฒเบโ€‹เบŠเบทเปˆ mounts (mounts) VFS เปเบ™เปˆเบ™เบญเบ™เบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™ /tmp, เบชเบดเบ”?

เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ virtual เปƒเบ™ Linux: เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเบกเบฑเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปเบฅเบฐเป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”? เบžเบฒเบเบ—เบต 1

เบ—เบธเบเบ„เบปเบ™เบฎเบนเป‰เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบ™เบฑเป‰เบ™ / tmp on เบชเบทเปˆเบกเบงเบ™เบŠเบปเบ™เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบ - เบšเป‰เบฒ! เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™.

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบกเบฑเบ™เบˆเบถเปˆเบ‡เบšเปเปˆเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ /tmp เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบชเบทเปˆโ€‹เบกเบงเบ™โ€‹เบŠเบปเบ™โ€‹เบ—เบฒเบ‡โ€‹เบ”เป‰เบฒเบ™โ€‹เบฎเปˆเบฒเบ‡โ€‹เบเบฒเบโ€‹? เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเป„เบŸเบฅเปŒเปƒเบ™ /tmp เปเบกเปˆเบ™เบŠเบปเปˆเบงเบ„เบฒเบง เปเบฅเบฐเบญเบธเบ›เบฐเบเบญเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปเบกเปˆเบ™เบŠเป‰เบฒเบเบงเปˆเบฒเปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณเบ—เบตเปˆ tmpfs เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™. เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบชเบทเปˆเบ—เบฒเบ‡เบเบฒเบเบฐเบžเบฒเบšเปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบญเปˆเบญเบ™เป„เบซเบงเบ•เปเปˆเบเบฒเบ™เบชเบงเบกเปƒเบชเปˆเปเบฅเบฐเบเบฒเบ™เบˆเบตเบเบ‚เบฒเบ”เป€เบกเบทเปˆเบญเบ‚เบฝเบ™เบ—เบฑเบšเบซเบผเบฒเบเบเบงเปˆเบฒเบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒ. เบชเบธเบ”เบ—เป‰เบฒเบ, เป„เบŸเบฅเปŒเปƒเบ™ /tmp เบญเบฒเบ”เบˆเบฐเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบฅเบฐเบญเบฝเบ”เบญเปˆเบญเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเบกเบฑเบ™เบซเบฒเบเป„เบ›เปƒเบ™เบ—เบธเบเป† reboot เป€เบ›เบฑเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™.

เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบšเบฒเบ‡เบ•เบปเบงเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เปเบˆเบเบขเบฒเบ Linux เบชเป‰เบฒเบ‡ / tmp เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบขเปˆเบฒ เปเบปเบ” เบซเบงเบฑเบ‡เบ–เป‰เบฒเบชเบดเปˆเบ‡เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบทเป‰เบ™เบเบฑเบšเบฅเบฐเบšเบปเบšเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบ„เบทเบเบฑเบ™. เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบญเบเบเบฑเบš Arch Wikiเบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบ™เบตเป‰โ€‹, เปเบฅเบฐโ€‹เบˆเบทเปˆโ€‹เบˆเปเบฒโ€‹เป„เบงเป‰โ€‹เบงเปˆเบฒโ€‹เบซเบ™เปˆเบงเบโ€‹เบ„เบงเบฒเบกโ€‹เบˆเปเบฒโ€‹เบ—เบตเปˆโ€‹เป„เบ”เป‰โ€‹เบˆเบฑเบ”โ€‹เบชเบฑเบ™โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹ tmpfs เบเบฒเบเป€เบ›เบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบญเบทเปˆเบ™เป†. เปƒเบ™เบ„เปเบฒเบชเบฑเบšเบ•เปˆเบฒเบ‡เป†เบญเบทเปˆเบ™เป†, เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบกเบต tmpfs เบเบฑเบเปƒเบซเบเปˆเปเบฅเบฐเป„เบŸเบฅเปŒเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบขเบนเปˆเปƒเบ™เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐ crash. เบ„เบณเปƒเบšเป‰เบญเบทเปˆเบ™: เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเปเบเป‰เป„เบ‚เป„เบŸเบฅเปŒ /etc/fstab, เบˆเบปเปˆเบ‡เบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒเบกเบฑเบ™เบ•เป‰เบญเบ‡เบชเบดเป‰เบ™เบชเบธเบ”เบ”เป‰เบงเบเบชเบฒเบเปƒเบซเบกเปˆ, เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบฅเบฐเบšเบปเบšเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆ boot.

/proc เปเบฅเบฐ /sys

เบ™เบญเบเบˆเบฒเบ /tmpVFS (เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ virtual) เบ—เบตเปˆเบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบšเบœเบนเป‰เปƒเบŠเป‰ Linux เบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ” /proc ะธ /sys. (/dev เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™เปเบฅเบฐเบšเปเปˆเบกเบต file_operations). เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบชเบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ™เบตเป‰? เบ‚เปเปƒเบซเป‰เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบšเบฑเบ™เบซเบฒเบ™เบตเป‰.

procfs เบชเป‰เบฒเบ‡เบžเบฒเบšเบซเบเปเป‰เบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡ kernel เปเบฅเบฐเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบตเปˆเบกเบฑเบ™เบ„เบงเบšเบ„เบธเบกเบชเปเบฒเบฅเบฑเบš userspace. เบเบฒเบ™ /proc kernel เบชเบปเปˆเบ‡เบญเบญเบเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบญเปเบฒเบ™เบงเบเบ„เบงเบฒเบกเบชเบฐเบ”เบงเบเบ—เบตเปˆเบกเบฑเบ™เบกเบต, เป€เบŠเบฑเปˆเบ™: เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡, เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ virtual, เปเบฅเบฐเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒ. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, /proc/sys - เบ™เบตเป‰เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบเปเบฒเบซเบ™เบปเบ”เบ„เปˆเบฒเป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ sysctl, เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบš userspace. เบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบšเปเบฅเบฐเบชเบฐเบ–เบดเบ•เบดเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™เปเบกเปˆเบ™เบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต /proc/.

เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ virtual เปƒเบ™ Linux: เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเบกเบฑเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปเบฅเบฐเป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”? เบžเบฒเบเบ—เบต 1

เบกเบฑเบ™เป€เบ›เบฑเบ™ /proc/meminfo เป€เบ›เบฑเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเป€เบ›เบปเปˆเบฒเบซเบงเปˆเบฒเบ‡เปเบ•เปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบกเบตเบ„เบธเบ™เบ„เปˆเบฒ.

เบžเบถเบ”เบ•เบดเบเปเบฒ /proc เป„เบŸเบฅเปŒเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ VFS disk เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปเบ™เบงเปƒเบ”. เปƒเบ™เบ”เป‰เบฒเบ™เบซเบ™เบถเปˆเบ‡, /proc/meminfo เบกเบตเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เป„เบ”เป‰เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡ free. เปƒเบ™เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก, เบกเบฑเบ™เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ! เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปเบ™เบงเปƒเบ”? เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เปเบกเปˆเบ™ reminiscent เบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบกเบ—เบตเปˆเบกเบตเบŠเบทเปˆเบชเบฝเบ‡เบ—เบตเปˆเบกเบตเบซเบปเบงเบ‚เปเป‰ โ€œเบ”เบงเบ‡เป€เบ”เบทเบญเบ™เบกเบตเบขเบนเปˆเบšเปเป€เบกเบทเปˆเบญเบšเปเปˆเบกเบตเปƒเบœเป€เบšเบดเปˆเบ‡เบกเบฑเบ™เบšเป? เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡เปเบฅเบฐเบ—เบดเบ”เบชเบฐเบ”เบต quantum", เบ‚เบฝเบ™เป‚เบ”เบเบชเบฒเบ”เบชเบฐเบ”เบฒเบˆเบฒเบ™ David Mermin เบกเบฐเบซเบฒเบงเบดเบ—เบฐเบเบฒเป„เบฅ Cornell เปƒเบ™เบ›เบต 1985. เบ„เบงเบฒเบกเบˆเบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ kernel เป€เบเบฑเบšเบเปเบฒเบชเบฐเบ–เบดเบ•เบดเบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰ /proc, เปเบฅเบฐเบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบงเปƒเบ™เป„เบŸเบฅเปŒ /proc เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เป€เบกเบทเปˆเบญเบšเปเปˆเบกเบตเปƒเบœเป€เบšเบดเปˆเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบงเบปเป‰เบฒ เป€เบกเบตเบกเบดเบ™, "เบ„เปเบฒเบชเบญเบ™ quantum เบžเบทเป‰เบ™เบ–เบฒเบ™เบเปˆเบฒเบงเบงเปˆเบฒเบเบฒเบ™เบงเบฑเบ”เปเบ—เบเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เบšเปเปˆเป„เบ”เป‰เป€เบ›เบตเบ”เป€เบœเบตเบเบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเบ‚เบญเบ‡เบŠเบฑเบšเบชเบดเบ™เบ—เบตเปˆเบ–เบทเบเบงเบฑเบ”เปเบ—เบ." (เปเบฅเบฐเบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบ„เปเบฒเบ–เบฒเบกเบเปˆเบฝเบงเบเบฑเบšเบ”เบงเบ‡เบˆเบฑเบ™เป€เบ›เบฑเบ™เบงเบฝเบเบšเป‰เบฒเบ™!)
เบ„เบงเบฒเบกเบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒเบ—เบตเปˆเบ›เบฒเบเบปเบ”เบ‚เบทเป‰เบ™ procfs เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเป€เบžเบฒเบฐเบงเปˆเบฒเบ‚เปเป‰เบกเบนเบ™เบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง. เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบเบเบฑเบš sysfs. เปƒเบซเป‰เบชเบปเบกเบ—เบฝเบšเบงเปˆเบฒเบกเบตเบˆเบฑเบเป„เบŸเบฅเปŒเบขเปˆเบฒเบ‡เปœเป‰เบญเบเปœเบถเปˆเบ‡เป„เบšเบ•เปŒ /proc เปเบฅเบฐเปƒเบ™ /sys.

เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ virtual เปƒเบ™ Linux: เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเบกเบฑเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปเบฅเบฐเป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”? เบžเบฒเบเบ—เบต 1

Procfs เบกเบตเป„เบŸเบฅเปŒเบซเบ™เบถเปˆเบ‡, เบ„เบทเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ kernel เบ—เบตเปˆเบ–เบทเบเบชเบปเปˆเบ‡เบญเบญเบ, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡เบ•เปเปˆเบเบฒเบ™ boot. เปƒเบ™เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก, เปƒเบ™ /sys เบกเบตเบซเบผเบฒเบเป„เบŸเบฅเปŒเบ—เบตเปˆเปƒเบซเบเปˆเบเบงเปˆเบฒ, เบซเบผเบฒเบเป†เป„เบŸเบฅเปŒเปƒเบŠเป‰เป€เบงเบฅเบฒเป€เบ–เบดเบ‡เปœเป‰เบฒเบ„เบงเบฒเบกเบˆเบณเบ—เบฑเบ‡เปเบปเบ”. เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเป„เบŸเบฅเปŒ sysfs เบกเบตเบ•เบปเบงเป€เบฅเบ เบซเบผเบทเบชเบฐเบ•เบฃเบดเบ‡เบญเบฑเบ™เปเบ™เปˆเบ™เบญเบ™, เบšเปเปˆเบ„เบทเบเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบˆเบฒเบเบเบฒเบ™เบญเปˆเบฒเบ™เป„เบŸเบฅเปŒเป€เบŠเบฑเปˆเบ™ /proc/meminfo.

เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ sysfs - เปƒเบซเป‰เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป„เบ”เป‰ เปเบฅเบฐเบ‚เบฝเบ™เป„เบ”เป‰เบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆ kernel เป€เบญเบตเป‰เบ™เบงเปˆเบฒ ยซkobjectsยป เปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰. เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ”เบฝเบง kobjects เปเบกเปˆเบ™เบเบฒเบ™เบ™เบฑเบšเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡: เป€เบกเบทเปˆเบญเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡ kobject เบ–เบทเบเบฅเบถเบš, เบฅเบฐเบšเบปเบšเบˆเบฐเบŸเบทเป‰เบ™เบŸเบนเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบกเบฑเบ™. เปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก, /sys เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบ–เบดเบ‡เบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบชเบฝเบ‡ "ABI เบชเบฐเบ–เบฝเบ™เบฅเบฐเบžเบฒเบšเบชเปเบฒเบฅเบฑเบšเบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰" เบซเบผเบฑเบ, เป€เบŠเบดเปˆเบ‡เบšเปเปˆเบกเบตเปƒเบœเบชเบฒเบกเบฒเบ”, เบžเบฒเบเปƒเบ•เป‰เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เปƒเบ”เบเปเปˆเบ•เบฒเบก, "เปเบ•เบ". เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเป„เบŸเบฅเปŒเปƒเบ™ sysfs เปเบกเปˆเบ™เบ„เบปเบ‡เบ—เบตเปˆ, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบกเบเบฑเบšเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบเบฒเบ™เบ™เบฑเบšเบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบšเปเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡.
ABI เบ„เบปเบ‡เบ—เบตเปˆเบ‚เบญเบ‡ kernel เบˆเปเบฒเบเบฑเบ”เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™ /sys, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบเปˆเบงเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ. เบฅเบฒเบเบŠเบทเปˆเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เป„เบŸเบฅเปŒเปƒเบ™ sysfs เบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ‚เบญเบ‡เบญเบธเบ›เบฐเบเบญเบ™, เป‚เบกเบ”เบนเบ™, เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบซเบผเบทเบญเปˆเบฒเบ™. เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเบซเบผเบธเบšเบขเปˆเบฒเบ‡เบกเบตเป€เบซเบ”เบœเบปเบ™เบงเปˆเบฒ procfs เบเบฑเบ‡เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡ ABI เบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบ‚เบญเบ‡ kernel, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบฅเบฐเบšเบธเบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เปƒเบ™. เป€เบญเบเบฐเบชเบฒเบ™.

เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ virtual เปƒเบ™ Linux: เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเบกเบฑเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปเบฅเบฐเป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”? เบžเบฒเบเบ—เบต 1

เป„เบŸเบฅเปŒเปƒเบ™ sysfs เบญเบฐโ€‹เบ—เบดโ€‹เบšเบฒเบโ€‹เบŠเบฑเบšโ€‹เบชเบดเบ™โ€‹เบชเบฐโ€‹เป€เบžเบฒเบฐโ€‹เปƒเบ”โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เปเบ•เปˆโ€‹เบฅเบฐโ€‹เบซเบปเบงโ€‹เบซเบ™เปˆเบงเบโ€‹เปเบฅเบฐโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบญเปˆเบฒเบ™โ€‹เป„เบ”เป‰โ€‹, เบ‚เบฝเบ™โ€‹เป„เบ”เป‰โ€‹, เบซเบผเบทโ€‹เบ—เบฑเบ‡โ€‹เบชเบญเบ‡โ€‹. A "0" เปƒเบ™เป„เบŸเบฅเปŒเบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒ SSD เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒเบญเบญเบเป„เบ”เป‰.

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบžเบฒเบเบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เปเบ›เบžเบฒเบชเบฒเบ”เป‰เบงเบเบงเบดเบ—เบตเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก VFS เป‚เบ”เบเปƒเบŠเป‰ eBPF เปเบฅเบฐ bcc tools, เปเบฅเบฐเบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบฅเปเบ–เป‰เบฒเบ„เปเบฒเบ„เบดเบ”เป€เบซเบฑเบ™เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ เปเบฅเบฐเป€เบŠเบตเบ™เป€เบˆเบปเป‰เบฒเบกเบฒเบ•เบฒเบกเบ›เบฐเป€เบžเบ™เบต. เป€เบ›เบตเบ” webinar, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป‚เบ”เบเบ„เบนเบญเบฒเบˆเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบงเบฑเบ™เบ—เบต 9 เป€เบกเบชเบฒ - Vladimir Drozdetsky.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™