Kia ora katoa! Kei te whakarewa tonu matou i nga rerenga hou mo nga akoranga kua arohaina e koe, inaianei kei te tere matou ki te panui kei te timata matou i tetahi huinga akoranga hou.
Ko nga punaha konae mariko he momo tangohanga makutu e taea ai e te whakaaro o Linux te kii "he konae nga mea katoa."
He aha te punaha konae? I runga i nga kupu a tetahi o nga kaikoha tuatahi me nga kaituhi o Linux
Nga Taketake o te punaha konae
Kei te kernel Linux etahi whakaritenga mo tetahi hinonga ka kiia he punaha konae. Me whakatinana i nga tikanga open()
, read()
и write()
mo nga mea tohe e whai ingoa ana. Mai i te tirohanga ahanoa
Mena ka taea e tatou te whakatuwhera, te panui me te tuhi ki tetahi hinonga, ka kiia taua hinonga he konae, ka kitea mai i te tauira o te papatohu i runga ake nei.
Ko te ahuatanga o te VFS e whakaatu noa ana i te tirohanga rite Unix "he konae nga mea katoa". Whakaarohia he aha te ahua o te tauira iti /dev/console i runga ake nei e whakaatu ana me pehea te mahi a te papatohu. Ko te pikitia e whakaatu ana i tetahi huihuinga Bash tauwhitiwhiti. Ko te tuku aho ki te papatohu (te taputapu papatohu mariko) ka whakaatu i runga i te mata mariko. Kei a VFS etahi atu, tae noa ki nga taonga ke. Hei tauira, ka taea e koe te rapu ma te
Ko nga punaha mohio penei i te ext4, NFS, me /proc e toru nga mahi nui i roto i te hanganga raraunga C e kiia nei. read()
kotahi te punaha konae katahi ka whakamahi i te tikanga write ()
tetahi atu punaha konae mo te whakaputanga raraunga.
Ko nga whakamaramatanga mahi no nga momo turanga VFS kei roto i nga konae fs/
kei roto etahi punaha konae. Kei roto ano i te matua nga hinonga penei cgroups
, /dev
и tmpfs
, e hiahiatia ana i te wa o te mahi whawhai, na reira kua tautuhia i roto i te raarangi-roto o te kernel init/
. A tapao na cgroups
, /dev
и tmpfs
kaua e kiia nga mahi "toru nui". file_operations
, engari tika te panui me te tuhi ki te mahara.
Ko te hoahoa i raro nei e whakaatu ana me pehea te uru o te mokowākaiwhakamahi ki nga momo punaha konae e mau ana i runga i nga punaha Linux. Ko nga hanganga kaore i whakaatuhia pipes
, dmesg
и POSIX clocks
, e whakatinana ana hoki i te hanganga file_operations
, ka uru atu ma te paparanga VFS.
Ko te VFS he "paparanga takai" i waenga i nga waea punaha me nga whakatinanatanga o etahi file_operations
, penei ext4
и procfs
. Nga Mahi file_operations
Ka taea te taunekeneke ki nga taraiwa taputapu, ki nga taputapu uru mahara ranei. tmpfs
, devtmpfs
и cgroups
kaua e whakamahia file_operations
, engari uru tika ki te mahara.
Ko te noho o te VFS he whai waahi ki te whakamahi ano i te waehere, na te mea ko nga tikanga taketake e pa ana ki nga punaha konae kaore e tika kia whakatinanahia e ia momo punaha konae. Ko te whakamahi ano i te waehere he mahi noa i waenga i nga miihini rorohiko! Heoi, mena kei roto i te waehere ka taea te whakamahi
/tmp: He tohu ngawari
Ko te huarahi ngawari ki te mohio kei te noho a VFS i runga i tetahi punaha ko te pato mount | grep -v sd | grep -v :/
, ka whakaatu i nga mea katoa e mau ana (mounted
) nga punaha konae ehara i te noho-kopae me te kore-NFS, he pono ki te nuinga o nga rorohiko. Ko tetahi o nga rarangi kua tohua (mounts
) Ka kore e ruarua te VFS /tmp
, tika?
E mohio ana te katoa ki taua rokiroki / tmp
i runga i te reo tinana - te haurangi!
He aha i kore ai e pai ki te penapena /tmp
i runga i te pāpāho tinana? No te mea ko nga konae kei roto /tmp
he rangitahi me nga taputapu rokiroki he puhoi ake i te mahara i hangaia ai nga tmpfs. I tua atu, he pai ake te kakahu o te hunga pāpāho tinana i te tuhirua i te mahara. Ka mutu, kei roto i nga konae /tmp nga korero tairongo, no reira he mea tino nui kia ngaro atu i ia whakaara ano.
Heoi ano, ko etahi o nga tuhinga whakaurunga tohatoha Linux ka waihanga /tmp i runga i te taputapu rokiroki ma te taunoa. Kaua e pouri mena kua pa tenei ki to punaha. Whaia etahi tohutohu ngawari me te tmpfs
ka kore e waatea mo etahi atu kaupapa. I etahi atu kupu, ko te punaha me nga tmpfs nui me nga konae nui kei runga ka ngaro te mahara me te pakaru. Ko tetahi atu tohu: i te wa e whakatika ana i tetahi konae /etc/fstab
, maharahia me mutu ki te raina hou, mena ka kore to punaha e pupuhi.
/proc me /sys
haunga /tmp
, VFS (pūnaha kōnae mariko) e tino waia ana ki nga kaiwhakamahi Linux /proc
и /sys
. (/dev
noho i roto i te mahara tahi me te kore e whai file_operations
). He aha enei waahanga e rua? Kia titiro tatou ki tenei take.
procfs
ka hanga he whakaahua o te kakano me nga tukanga e tirotirohia ana e ia userspace
. Ko te /proc
ka taia e te kernel nga korero mo nga mea e waatea ana, penei i te haukoti, te mahara mariko, me te kaihōtaka. I tua atu, /proc/sys
Ko te waahi i whirihorahia ai nga tawhā me te whakahau sysctl
, wātea mo userspace
. Ko te mana me nga tatauranga o nga tukanga takitahi ka whakaatuhia ki nga raarangi /proc/
.
ko te reira /proc/meminfo
he konae putua kei roto tonu nga korero nui.
Te whanonga /proc
Ko nga konae e whakaatu ana he pehea te rereke o nga punaha konae kōpae VFS. I tetahi taha, /proc/meminfo
kei roto nga korero ka taea te tiro me te whakahau free
. I tetahi atu taha, he kau! Me pehea te mahi? Kei te maumahara te ahuatanga ki te tuhinga rongonui i tapaina /proc
, me te tino kei roto i nga konae /proc
kare he mea karekau he titiro. Ka rite ki te korero
Te ahua korekore procfs
ka whai tikanga na te mea he hihiri nga korero kei reira. He ahuatanga paku rereke me sysfs
. Kia whakatauritea te maha o nga konae kei roto i te kotahi paita te rahi /proc
Tuhinga o mua /sys
.
Procfs
he kotahi te konae, ara ko te whirihoranga kernel i kaweake, he mea kee na te mea me hanga kotahi noa mo ia peera. I tetahi atu ringa, i roto i /sys
he maha nga konae nui ake, he maha nga waahanga ka mau i te wharangi mahara. Ko te tikanga ko nga konae sysfs
kotahi tonu te nama, rarangi ranei, kaore i rite ki nga ripanga korero i whiwhi mai i nga konae panui penei i te /proc/meminfo
.
Whāinga sysfs
- whakarato i nga ahuatanga panui/tuhi o ta te kernel e karanga ana «kobjects»
i roto i te mokowāmahi. Ko te whainga anake kobjects
kei te tatau hono: ina tangohia te hono whakamutunga ki tetahi kobject, ka whakahokia e te punaha nga rauemi e hono ana ki a ia. Heoi ano, /sys
hanga ake te nuinga o te rongonui
Ko te ABI pumau o te kernel ka whakawhāiti i ngā mea ka puta ki roto /sys
, ehara i te mea e mau ana i tera wa. Ko te raarangi whakaaetanga konae i roto i te sysfs he maarama me pehea te whirihora i nga tautuhinga mo nga taputapu, nga waahanga, nga punaha konae, aha atu. ka taea te whirihora, te panui ranei. Ko te whakatau arorau ko nga procfs tetahi waahanga o te ABI pumau o te kernel, ahakoa kaore i te tino korerohia i roto
Kōnae kei roto sysfs
whakaahuahia tetahi taonga motuhake mo ia hinonga ka taea te panui, te tuhi, te rua ranei. "0" i roto i te konae te tikanga kaore e taea te tango i te SSD.
Me timata te waahanga tuarua o te whakamaori me pehea te aro turuki i te VFS ma te whakamahi i nga taputapu eBPF me te bcc, a inaianei kei te tatari matou mo o korero me te tono mai i a koe kia
Source: will.com