Aloha kākou! Ke hoʻomau nei mākou i ka hoʻomaka ʻana i nā kahawai hou no nā papa āu i aloha ai a i kēia manawa ke wikiwiki nei mākou e hoʻolaha e hoʻomaka ana mākou i kahi papa papa hou.
Hoʻohana ʻia nā ʻōnaehana faila ma ke ʻano he ʻano abstraction kupua e hiki ai i ka philosophy o Linux ke ʻōlelo "he faila nā mea āpau."
He aha ka waihona waihona? Ma muli o nā ʻōlelo a kekahi o nā mea kōkua mua a me nā mea kākau o Linux
Nā kumu waihona waihona
Loaʻa i ka Linux kernel kekahi mau koi no kahi hui i hiki ke manaʻo ʻia he ʻōnaehana faila. Pono e hoʻokō i nā ʻano hana open()
, read()
и write()
no nā mea hoʻomau i loaʻa nā inoa. Mai kahi manaʻo hoʻohālikelike
Inā hiki iā mākou ke wehe, heluhelu, a kākau i kahi hui, a laila ua manaʻo ʻia kēlā hui he faila, e like me kā mākou e ʻike ai mai ka laʻana ma ka console ma luna.
Hōʻike wale ka VFS i ka nānā ʻana e like me Unix "he faila nā mea āpau". E noʻonoʻo i ke ʻano o kēlā ʻano liʻiliʻi / dev / console ma luna e hōʻike ana i ka hana maoli o ka console. Hōʻike ke kiʻi i kahi hālāwai Bash interactive. ʻO ka hoʻouna ʻana i kahi kaula i ka console (mea hoʻohana virtual console) e hōʻike iā ia ma ka pale virtual. Loaʻa i ka VFS kekahi mau waiwai ʻē aʻe. No ka laʻana, hiki iā ʻoe ke ʻimi ma
ʻO nā ʻōnaehana maʻamau e like me ext4, NFS, a me / proc he ʻekolu mau hana koʻikoʻi i loko o kahi hoʻolālā data C i kapa ʻia. read()
hoʻokahi waihona waihona a laila hoʻohana i ke ʻano write ()
ʻōnaehana waihona ʻē aʻe no ka hoʻopuka ʻikepili.
Aia nā wehewehe hana e pili ana i nā ʻano VFS kumu i nā faila fs/
loaʻa i kekahi ʻōnaehana waihona. Aia i loko o ke kumu nā mea e like me cgroups
, /dev
и tmpfs
, i koi ʻia i ka wā o ke kaʻina hana boot a no laila ua wehewehe ʻia ma ka subdirectory kernel init/
. E hoʻomaopopo i kēlā cgroups
, /dev
и tmpfs
mai kāhea i nā hana "nui ʻekolu". file_operations
, akā heluhelu pololei a kākau i ka hoʻomanaʻo.
Hōʻike ke kiʻikuhi ma lalo nei i ke komo ʻana o ka mea hoʻohana i nā ʻano waihona waihona like ʻole i kau ʻia ma nā ʻōnaehana Linux. Hōʻike ʻole ʻia nā hale pipes
, dmesg
и POSIX clocks
, ka mea i hoʻokō i ka hale file_operations
, loaʻa ma o ka papa VFS.
ʻO VFS kahi "wrapper layer" ma waena o nā kelepona ʻōnaehana a me nā hoʻokō o kekahi file_operations
e like me ext4
и procfs
. Nā hana file_operations
hiki ke launa pū me nā mea hoʻokele a i ʻole nā mea hoʻomanaʻo. tmpfs
, devtmpfs
и cgroups
mai hoohana file_operations
, akā komo pololei i ka hoʻomanaʻo.
Hāʻawi ka noho ʻana o VFS i ka hiki ke hoʻohana hou i ke code, no ka mea, ʻaʻole pono e hoʻokō hou ʻia nā ʻano kumu e pili ana i nā ʻōnaehana faila e kēlā me kēia ʻano o ka ʻōnaehana faila. He hana maʻamau ka hoʻohana hou ʻana o ke code ma waena o nā ʻenekini polokalamu! Eia naʻe, inā loaʻa i ka code reusable
/tmp: Hōʻike maʻalahi
ʻO kahi ala maʻalahi e ʻike ai aia ʻo VFS ma kahi ʻōnaehana ʻo ke kākau ʻana mount | grep -v sd | grep -v :/
, e hōʻike ana i nā mea i kau ʻia (mounted
) nā ʻōnaehana waihona ʻaʻole noho disk a me NFS ʻole, ʻoiaʻiʻo ma ka hapa nui o nā kamepiula. ʻO kekahi o nā mea i helu ʻia (mounts
) VFS e kanalua /tmp
, akau?
Ua ʻike nā kānaka a pau i kēlā waihona / tmp
ma ke kino kino - pupule!
No ke aha i makemake ʻole ai e mālama /tmp
ma nā pāpaho kino? No ka mea, aia nā faila i loko /tmp
ʻOi aku ka lohi ma mua o ka hoʻomanaʻo kahi i hana ʻia ai nā tmpfs. Eia kekahi, ʻoi aku ka maʻalahi o ka hoʻopaʻa ʻana i ke kino ma mua o ka hoʻomanaʻo. ʻO ka mea hope loa, hiki i nā faila i /tmp ke loaʻa i ka ʻike koʻikoʻi, no laila e nalo iā lākou i kēlā me kēia reboot he mea nui.
ʻO ka mea pōʻino, hoʻokumu kekahi mau palapala hoʻonohonoho Linux i ka /tmp ma ka hāmeʻa mālama ma ka paʻamau. Mai hopohopo inā hiki kēia i kāu ʻōnaehana pū kekahi. E hahai i kekahi mau kuhikuhi maʻalahi me tmpfs
lilo ʻole no nā kumu ʻē aʻe. I nā huaʻōlelo ʻē aʻe, hiki i kahi ʻōnaehana me kahi tmpfs nunui a me nā faila nui ma luna ona hiki ke pau i ka hoʻomanaʻo a hāʻule. ʻO kekahi manaʻo: ʻoiai e hoʻoponopono ana i kahi faila /etc/fstab
, E hoʻomanaʻo pono e hoʻopau me kahi laina hou, inā ʻaʻole e hoʻomaka kāu ʻōnaehana.
/proc a me /sys
Ma waho aʻe /tmp
, VFS (virtual file system) i kamaʻāina loa i nā mea hoʻohana Linux /proc
и /sys
. (/dev
noho ma ka hoʻomanaʻo like ʻana a ʻaʻole loaʻa file_operations
). No ke aha kēia mau ʻāpana ʻelua? E nānā kākou i kēia pilikia.
procfs
hana i kahi kiʻi o ka kernel a me nā kaʻina hana e nānā ai userspace
. ka /proc
paʻi ka kernel i ka ʻike e pili ana i nā mea i loaʻa iā ia, e like me nā interrupts, virtual memory, a me ka mea hoʻonohonoho. Eia kekahi, /proc/sys
kahi i hoʻonohonoho ʻia ai nā ʻāpana me ke kauoha sysctl
, loaʻa no userspace
. Hōʻike ʻia ke kūlana a me nā ʻikepili o nā kaʻina hana pākahi ma nā papa kuhikuhi /proc/
.
he mea /proc/meminfo
he waihona ʻole i loaʻa naʻe ka ʻike waiwai.
Nā hana /proc
Hōʻike nā faila i ke ʻano o nā ʻōnaehana faila disk VFS. Ma kekahi aoao, /proc/meminfo
loaʻa ka ʻike i hiki ke nānā ʻia me ke kauoha free
. Ma kekahi ʻaoʻao, ua kaʻawale! Pehea e hana ai? Hoʻomanaʻo ke kūlana i ka ʻatikala kaulana i kapa ʻia /proc
, a i loko o nā faila /proc
ʻaʻohe mea ke nānā ʻole. E like me ka olelo
Me he mea ʻole procfs
kūpono no ka mea he dynamic ka ʻike ma laila. He kūlana ʻokoʻa iki me sysfs
. E hoʻohālikelike kākou i ka nui o nā faila i loko o hoʻokahi paita ka nui /proc
a i /sys
.
Procfs
he hoʻokahi faila, ʻo ia ka hoʻonohonoho kernel i lawe ʻia, ʻokoʻa ia no ka mea pono e hana ʻia i hoʻokahi manawa no kēlā me kēia pahu. Ma kekahi ʻaoʻao, in /sys
nui nā faila nui, nui ka nui o ia mau mea e lawe i kahi ʻaoʻao holoʻokoʻa o ka hoʻomanaʻo. Nā faila maʻamau sysfs
hoʻokahi helu a laina paha, ʻaʻole like me nā papa ʻike i loaʻa mai ka heluhelu ʻana i nā faila e like me /proc/meminfo
.
Holomua sysfs
- hāʻawi i nā waiwai heluhelu/kākau i ka mea i kapa ʻia e ka kernel «kobjects»
i loko o ka mea hoʻohana. ʻO ka pahuhopu wale nō kobjects
ka helu ʻana: ke wehe ʻia ka ʻōlelo hope loa i kahi kobject, e hoʻihoʻi ka ʻōnaehana i nā kumuwaiwai pili me ia. Eia naʻe, /sys
hana i ka hapa nui o nā mea kaulana
Hoʻopili ka ABI paʻa o ka kernel i ka mea hiki ke ʻike ʻia i loko /sys
, ʻaʻole ka mea i loaʻa i kēlā manawa. Hāʻawi ka papa inoa i nā ʻae faila ma sysfs i ka ʻike pehea e hoʻonohonoho ʻia ai nā hoʻonohonoho no nā polokalamu, modules, filesystems, etc. hiki ke hoʻonohonoho a heluhelu paha. ʻO ka hopena kūpono, ʻo ka procfs kekahi ʻāpana o ka ABI paʻa o ka kernel, ʻoiai ʻaʻole i hōʻike ʻia kēia ma
Nā waihona i loko sysfs
wehewehe i hoʻokahi waiwai no kēlā me kēia hui a hiki ke heluhelu, kākau ʻia, a i ʻole nā mea ʻelua. "0" i loko o ka faila ʻaʻole hiki ke wehe ʻia ka SSD.
E hoʻomaka kākou i ka ʻāpana ʻelua o ka unuhi me ka nānā ʻana iā VFS me ka hoʻohana ʻana i nā mea hana eBPF a me bcc, a ke kali nei mākou i kāu mau manaʻo a kono aku iā ʻoe e
Source: www.habr.com