αα½ααααΈβα’αααβααΆααα’ααααααΆ! ααΎαααααααΎαααααΎαααΆαααααααααΈαααααΆαααααααα·ααααΆαααα’αααααΆαααααΆαααααα»αα’αααααααααα ααα½α
α αΎα α αΎαα₯α‘αΌαααα ααΎααααααΆαααααααΆαααΆααΎααααα»αα
αΆααααααΎααααααα·ααααΆααααΈ
ααααααααα―αααΆααα·αααα·ααααααΎααΆααααααααα’ααΌααΈααααααααααα’αα»ααααΆαα±ααααααααα·ααααΆααααΈαα»α αα·ααΆαααΆ "α’αααΈααααααααΆαααΊααΆα―αααΆα" α
ααΎααααααααα―αααΆαααΊααΆα’αααΈ? ααα’ααααΎααΆαααααααα’ααααα½αα
ααααααααΌα αα·αααΆα’ααααα·ααααααααΈαα»α
ααΌαααααΆαααααΉαααααααααααα―αααΆα
ααΊαααααΈαα»α
ααΆααααααΌαααΆαααΆααααΆαααααααΆααα’αααααΆααααα’αΆα
α
αΆαααα»αααΆααΆααααααααα―αααΆαα ααΆααααΌαααα’αα»αααααα·ααΈααΆααααα open()
, read()
ΠΈ write()
αααααΆααααααα»ααΆααααΆαααααααΆααααααα ααΆαααααααααααααααααα·αααααα»
ααααα·αααΎααΎαα’αΆα
ααΎα α’αΆα αα·αααααααα
ααΆααα’αααααΆαααα α’αααααΆααααααααΌαααΆαα
αΆαααα»αααΆααΆα―αααΆα ααΌα
αααααΎαα’αΆα
ααΎαααΈα§ααΆα ααααα
αααα»ααα»αααΌαααΆαααΎα
ααΆαα»ααΌα VFS ααααΆααααααΌααααααΆααααΆαααααααααΌα
Unix ααΆ "α’αααΈααααααααΆαααΊααΆα―αααΆα" α αα·αααΆααΎα
αααααααΆαααΆαααα§ααΆα ααα /dev/console αα·α
αα½α
ααΆαααΎαααα αΆαααΈααααααααα»αααΌααα·αααΆααααΎαααΆαα ααΌαααΆααααα αΆαααΈαααα Bash α’ααααααααα ααΆαααααΎαααααα
αα»αααΌα (α§ααααααα»αααΌααα·αααα·α) αααα αΆαααΆαα
ααΎα’αααααααα·αααα·αα VFS ααΆααααααααααααααα·ααααααααααΌααααΈααα
αααααα α§ααΆα αααααΆα’αα»ααααΆαα±ααα’ααααααααααααα
αααααααααααααααΆααααααΆααααΌα
ααΆ ext4, NFS, αα·α /proc ααΆααα»αααΆαααααΆααααΈαα
αααα»ααα
ααΆαααααααααα·αααααα C αααα α
ααΆ read()
ααααααααα―αααΆααα½αα αΎααααααΆααααααααΎαα·ααΈααΆααααα write ()
ααααααααα―αααΆααα½ααααααααααααααΆαααα·ααααααα·ααααααα
αα·ααααααα»αααΆααααααΆαααααα·αααα·αααααααααα VFS ααΌαααααΆαααΊαααα·ααα
αααα»αα―αααΆα fs/
ααΆαααααααααα―αααΆαααΆααααΆααα ααααΌαααααΆαα’αααααΆαααΌα
ααΆ cgroups
, /dev
ΠΈ tmpfs
αααααααΌαααΆαααΆαααΆααααα»αα’αα‘α»ααααααααΎαααΆαα
αΆααααααΎα α αΎαααΌα
ααααααααΌαααΆαααααααα
αααα»αααααααΊααα init/
. ααΆαβαααβαααααΆααβααΎαβααΆ cgroups
, /dev
ΠΈ tmpfs
αα»αα α
αα»αααΆαααΈαα file_operations
ααα»ααααα’αΆα αα·αααααααααααααΆαααα
αααα»αααΆαα
αα
αΆαα
ααααΆααααΆαααΆαααααααααα αΆαααΈααααααα userspace α
αΌαααααΎαααααααααααααααΆααααααααααα―αααΆααααααΆαααα‘αΎαααΆααΌαα
αα
ααΎααααααααααΈαα»α
α αα
ααΆαααααααααα·αααααΌαααΆααααα αΆα pipes
, dmesg
ΠΈ POSIX clocks
αααα’αα»αααααα
ααΆαααααααααααααα file_operations
α
αΌαααααΎααΆαααααααααΆαα VFS α
VFS ααΊααΆ "αααααΆαααα»α" αααΆαααΆαα α
αααααααα αα·αααΆαα’αα»ααααααΆααααΆαα file_operations
ααΌα
ααΆα ext4
ΠΈ procfs
. αα»αααΆα file_operations
α’αΆα
ααααΎα’ααααααααααΆαα½ααααααα·ααΈαααααΆα§ααααα α¬α§αααααα
αΌαααααΎα’αααα
αα
αΆαα tmpfs
, devtmpfs
ΠΈ cgroups
αα»αβααααΎ file_operations
ααα»ααααα
αΌαααααΎα’αααα
αα
αΆααααααααΆααα
α’αααα·ααΆααα VFS αααααααΌαα±ααΆααα½αααΎααααΈααααΎα‘αΎααα·αααΌαααΌα αααα ααα»ααΆαα·ααΈααΆαααααααΌαααααΆααααααααΆααααΆαα½αααααααααα―αααΆααα·αα
αΆαααΆα
αααααΌαα’αα»ααααα‘αΎααα·ααααααααααααααααααα―αααΆαααΈαα½αααααααα ααΆαααααΎααααΆααααΌαα‘αΎααα·αααΊααΆααΆαα’αα»ααααααΌαα
αααα»αα
αααααα·ααααααααααα·ααΈ! ααααααΆαααΆααααα ααααα·αααΎααΌααααα’αΆα
ααααΎα‘αΎααα·αααΆαααΆα
/tmp: αααααΉαααΆαααα
αααααααΆαααΆααααα½ααααα»αααΆαααααΎαααΆ VFS ααΆαααααααΆααα
ααΎααααααααααΊααΆαααΆααααα
αΌα mount | grep -v sd | grep -v :/
αααααΉααααα αΆαααΆαααααααΆααα’αα (mounted
) ααααααααα―αααΆαααααα·ααααααΆ disk-resident αα·α non-NFS αααααΆααΆααα·ααα
ααΎαα»αααααΌαααααΆαα
αααΎαα αα½αβαααα»αβα
ααααβαααααΈβαααα (mounts
) VFS α
αααΆααααΆααΉα /tmp
ααααα?
α’αααβααΆααβααααΆβααΉαβααΆβααΆαβαααα»αβαααα / tmp
αα
ααΎα§ααααααααα»αααΆαααΆα - αααα½α!
α ααα»α’αααΈααΆαααΆααΆαα·ααα½αα±ααα
αααααααΆαα»α /tmp
αα
ααΎααααααααααααααααααΆαααΆαααΆα? αααααΆαααα―αααΆααα
αααα»α /tmp
ααΊααΆα§αααααααααααα’αΆαααα α αΎαα§ααααααααα»αααΊααΊαααΆαα’αααα
αα
αΆαααα tmpfs ααααΌαααΆααααααΎαα ααΆαααααα
ααα ααααααααααααααααααΆαααΌαααααααΊααΆαααΉαααΆαααα
ααααααααααΆααααΎααΆαααΆαα
αα
αΆαα ααΆα
α»αααααα α―αααΆααα
αααα»α /tmp α’αΆα
ααΆαααααααΆααααΎα ααΌα
ααααααΆαααααΎα±αααα½αααΆααΆαααα
αααα
αΆααααααΎαα‘αΎααα·αααΊααΆαα»αααΆαααααΆαααα½αα
ααΆα’αα»αα ααααααΈαααα‘αΎαααΆαα
ααα
αΆαααΈαα»α
αα½αα
ααα½ααααααΎα /tmp αα
ααΎα§ααααααααα»αααΆαααααΆαααΎαα αα»αα’αααααααΉα ααααα·αααΎααΏααααααΎαα‘αΎαα
ααααααααααααααααα’ααααααααα α’αα»ααααααΆαααΆαααααΆαααΆαααααα½αα
ααα½αααΆαα½α tmpfs
ααααΆαααΆαα·αα’αΆα
ααααΎααΆααααααΆαααααααααααααααααα αααααΆααα·αααα αααααααααααααΆα tmpfs αααα αα·αα―αααΆααααα
ααΎααΆα’αΆα
α’ααα’αααα
αα
αΆα αα·αααΆααα ααααααΆααααα½ααα½ααααα αααααααααα½αα―αααΆα /etc/fstab
ααΌαα
αΆαααΆααΆααααΌααααααα
ααααααααααΆααααααΈ ααΎαα·αααΌα
ααααααααααααααααααα’αααααΉααα·αα
αΆααααααΎαααα
/proc αα·α /sys
αααα
ααΈ /tmp
, VFS (ααααααααα―αααΆααα·αααα·α) ααααααΆααααα»αα
ααααα’αααααααΎααααΆααααΈαα»α
/proc
ΠΈ /sys
, (/dev
ααααα
αααα»αααΆαα
αα
αΆααα½α αα·ααα·αααΆα file_operations
) α ααα»α’αααΈααΆαααΆαααΆαααΆαα»ααΆααααΈαααα? α
αΌαααΎααα·αα·αααααΎααααα αΆαααα
procfs
αααααΎαααΌαααααααΊααα αα·αααααΎαααΆααααααΆαααα½ααα·αα·ααα userspace
α ααα /proc
ααΊαααααααα»αααααααααΆαα’αααΈα’αααΈαααααΆααΆα ααΌα
ααΆααΆαααααΆα α’αααα
αα
αΆααα·αααα·α αα·ααααααα·ααΈααααααααα αααα
ααΈααα /proc/sys
ααΊααΆααααααααααααΆαααΆααααααααααααα
ααΆααααααααααΆαα½αααΆααααααααΆ sysctl
α’αΆα
ααααΎααΆααααααΆαα userspace
. ααααΆαααΆα αα·ααααα·αα·ααααααΎαααΆαααΈαα½ααααααΌαααΆααααα αΆααα
αααα»ααα /proc/
.
ααΆααΊααΆααΆα /proc/meminfo
ααΊβααΆβα―αααΆαβαααβαααβααΆαβααααααΆαβααβααΆαβαααααα
α₯αα·ααΆαα /proc
α―αααΆααααα αΆαααΈαααααααααααααααα―αααΆα VFS ααΆααααααααααΆα’αΆα
ααΆαα αα
ααααΆαα /proc/meminfo
ααΆαααααααΆααααα’αΆα
ααΎαααΆααααααααΎααΆααααααααΆ free
. αααααΆααααααΆααα! ααΎβααΆβααααΎαααΆαβαααΆαβααΌα
ααααα
? ααααΆαααΆαααΊααΉαααΎααααα’αααααααααααΈααααΆααααααΆαα
αααααΎα /proc
α αΎαααΆααΆααα·ααα
αααα»αα―αααΆα /proc
αα·αααΆαα’αααΈαα
ααααααααααΆαααααΆααααΆαααααα»αααααΎαα ααΌα
αααααΆααα·ααΆα
α αΆααααΌα
ααΆααα procfs
ααΆααααβαααααβααααααΆαβααΆαβααΆαααααα ααααΆαααΆααα»αααααΆααααα·α
ααΆαα½α sysfs
. α
αΌαααΎαααααααααα
ααα½αα―αααΆααααααΆαααα ααααΆαα αα
ααΆαααα½ααα /proc
αα·ααα
αααα»α /sys
.
Procfs
ααΆαα―αααΆααα½α αααααΊααΆαααααααα
ααΆααααααααααΊααααααααΆαααΆαα
αα αααααΆααααΈααΎαααααα½α αααααααΆααααΌαααΆααααααΎαααααααααα»ααααααααααΆααααΆαα
αΆααααααΎαα αααααΆαααααα
αααα»α /sys
ααΆαα―αααΆααααααΆα
αααΎα αααααΆαα
αααΎααααααααααΆααααΌαααα’αααα
αα
αΆαα ααΆααααααΆα―αααΆα sysfs
ααΆαααα α¬αααααΆααααΆααααΆαααα½α αα·αααΌα
ααΆααΆαααααααΆααααααα½αααΆαααΈααΆαα’αΆαα―αααΆαααΌα
ααΆ /proc/meminfo
.
ααααα
sysfs
- ααααααααααααααααααα·α’αΆα/αααααααα’αααΈαααααΊαααα α
Β«kobjectsΒ»
αα
αααα»ααααααα’αααααααΎααααΆααα ααααα
αααα½αααα kobjects
ααααΌαααΆαααΆαααααα αα
αααααααααααααΆααα
α»αααααααα
ααΆαα kobject ααααΌαααΆαααα
αα ααααααααααΉαααααΆαααααΆααααααααΆααααΆαα½αααΆα αααΆαβααΆβααβααα /sys
αααααΎαααΆαααααΈααααΆαααΆαα
αααΎα
ABI αααααααΆαααααααΊααααααααααΌαα’αααΈαααα’αΆα
αααα αΆααα
αααα»α /sys
αα·ααααααΆα’αααΈαααααΆαααααααΆααα·αααααΆαααα
αααααΆααααΆαααααααα ααΆαα
α»ααααααΈααΆαα’αα»ααααΆαα―αααΆααα
αααα»α sysfs αααααααΌαααΆααααααΉαα’αααΈααααααααααα
ααΆαααααααααααααΆααα§ααααα αααΌαα»α ααααααααα―αααΆαααα α’αΆα
ααααΌαααΆαααααααα
ααΆααααααααα¬α’αΆαα ααΆαααααα·ααααΆαα‘αΌααΈααααΊααΆ procfs ααααΆααααααα ABI αααααααΆαααααααΊαααααααα αααααΈααΆααΆαα·αααααΌαααΆααααααΆαααααΆαα
αααΆαααα
αααα»α
α―αααΆααα
αααα»α sysfs
αα·αααααΆα’αααΈαααααααααααααα·ααΆααααΆαααα½ααααααΆααα’αααααΆαααΈαα½αα α αΎαα’αΆα
α’αΆαααΆα αααααααΆα α¬ααΆααααΈαα "0" αα
αααα»αα―αααΆαααΆααααααΆ SSD αα·αα’αΆα
ααα
ααααΆαααα
α
αΌαα
αΆααααααΎααααααααΈααΈαααααΆαααααααααΆαα½αααΉααααααααα½ααα·αα·ααα VFS αααααααΎα§ααααα eBPF αα·α bcc α αΎαα₯α‘αΌααααααΎααααα»ααααα
αΆαααα·αααααααααα’ααα α αΎαααΆαααααααΈα’ααααΎαα’αααα±αα
ααααα: www.habr.com