Bawo ni gbogbo eniyan! A tẹsiwaju lati ṣe ifilọlẹ awọn ṣiṣan tuntun lori awọn iṣẹ ikẹkọ ti o nifẹ tẹlẹ, ati ni bayi a wa ni iyara lati kede pe a n bẹrẹ eto tuntun ti awọn iṣẹ ikẹkọ
Awọn ọna ṣiṣe faili foju ṣiṣẹ bi iru abstraction idan ti o fun laaye imoye Linux lati sọ pe “ohun gbogbo jẹ faili kan.”
Kini eto faili kan? Da lori awọn ọrọ ti oluranlọwọ Linux kutukutu ati onkọwe
Awọn ipilẹ Eto Faili
Ekuro Linux ni awọn ibeere kan fun nkan kan ti o le jẹ eto faili kan. O gbọdọ ṣe awọn ilana open()
, read()
и write()
fun jubẹẹlo ohun ti o ni awọn orukọ. Lati oju-ọna oju-ọna ohun
Ti a ba le ṣii, ka ati kọ si nkan kan, lẹhinna nkan yẹn ni a ka si faili kan, bi a ti le rii lati apẹẹrẹ ninu console loke.
Iṣẹlẹ VFS nikan ṣe afihan akiyesi ti o wọpọ si awọn eto Unix-bii pe “ohun gbogbo jẹ faili.” Ronu nipa bi o ṣe jẹ iyalẹnu pe apẹẹrẹ kekere loke pẹlu / dev/console fihan bi console ṣe n ṣiṣẹ gangan. Aworan naa fihan igba Bash ibaraenisepo. Fifiranṣẹ okun kan si console (ohun elo console foju) ṣafihan lori iboju foju kan. VFS ni o ni miiran, ani alejò-ini. Fun apẹẹrẹ, o gba ọ laaye lati wa nipasẹ
Awọn ọna ṣiṣe ti a faramọ pẹlu bii ext4, NFS, ati / proc ni awọn iṣẹ pataki mẹta ninu eto data C ti a pe read()
ọkan faili eto ati ki o si lo awọn ọna write ()
miiran faili eto fun data o wu.
Awọn itumọ ti awọn iṣẹ ti o jẹ ti awọn oriṣi VFS ipilẹ ni a rii ninu awọn faili naa fs/
ni pato faili awọn ọna šiše. Koko naa tun ni awọn nkan bii cgroups
, /dev
и tmpfs
, eyiti o nilo lakoko ilana bata ati nitorinaa ti ṣalaye ninu iwe-ipamọ ekuro init/
. Jọwọ ṣe akiyesi iyẹn cgroups
, /dev
и tmpfs
maṣe pe awọn iṣẹ "nla mẹta". file_operations
, ṣugbọn ka taara ati kọ si iranti.
Aworan ti o wa ni isalẹ fihan bi aaye olumulo ṣe n wọle si awọn oriṣiriṣi awọn ọna ṣiṣe faili ti o wọpọ sori awọn eto Linux. Awọn ikole bii pipes
, dmesg
и POSIX clocks
, eyiti o tun ṣe imuse eto naa file_operations
, wọle nipasẹ awọn VFS Layer.
VFS jẹ “apapọ ohun-ọṣọ” laarin awọn ipe eto ati awọn imuse ti awọn file_operations
, bi eleyi ext4
и procfs
. Awọn iṣẹ file_operations
le ṣe ajọṣepọ pẹlu boya awakọ ẹrọ tabi awọn ẹrọ iwọle iranti. tmpfs
, devtmpfs
и cgroups
maṣe lo file_operations
, ṣugbọn taara wọle si iranti.
Aye ti VFS n pese agbara lati tun lo koodu, nitori awọn ọna pataki ti o ni nkan ṣe pẹlu awọn ọna ṣiṣe faili ko ni lati tun-ṣe nipasẹ iru eto faili kọọkan. Atunlo koodu jẹ adaṣe lilo pupọ laarin awọn onimọ-ẹrọ sọfitiwia! Sibẹsibẹ, ti koodu atunlo naa ni ninu
/tmp: Atọka ti o rọrun
Ọna ti o rọrun lati rii pe awọn VFS wa lori eto ni lati tẹ mount | grep -v sd | grep -v :/
, eyi ti yoo fihan gbogbo awọn agesin (mounted
) awọn ọna ṣiṣe faili ti kii ṣe olugbe disk ati kii ṣe NFS, eyiti o jẹ otitọ lori ọpọlọpọ awọn kọnputa. Ọkan ninu awọn oke ti a ṣe akojọ (mounts
) VFS yoo laiseaniani jẹ /tmp
, otun?
Gbogbo eniyan mọ ibi ipamọ yẹn / tmp
lori media ti ara - irikuri!
Kini idi ti ko ṣe imọran lati fipamọ /tmp
lori media ti ara? Nitori awọn faili ni /tmp
jẹ igba diẹ ati awọn ẹrọ ipamọ losokepupo ju iranti nibiti a ti ṣẹda tmpfs. Pẹlupẹlu, media ti ara jẹ ifaragba diẹ sii lati wọ ati yiya nigba ti kọkọ ju iranti lọ. Nikẹhin, awọn faili inu / tmp le ni alaye ifura ninu, nitorina ṣiṣe wọn parẹ lori gbogbo atunbere jẹ ẹya ara ẹrọ.
Laanu, diẹ ninu awọn iwe afọwọkọ fifi sori pinpin Linux ṣẹda / tmp lori ẹrọ ibi ipamọ nipasẹ aiyipada. Ma ko despair ti o ba ti yi ṣẹlẹ si rẹ eto ju. Tẹle awọn ilana ti o rọrun diẹ pẹlu tmpfs
di inaccessible fun miiran ìdí. Ni awọn ọrọ miiran, eto kan pẹlu tmpfs nla ati awọn faili nla ninu rẹ le lo gbogbo iranti ati jamba. Imọran miiran: lakoko ṣiṣatunṣe faili kan /etc/fstab
, Ranti pe o gbọdọ pari pẹlu laini tuntun, bibẹẹkọ eto rẹ kii yoo bata.
/proc ati /sys
Yato si /tmp
VFS (awọn ọna ṣiṣe faili foju) ti o mọ julọ si awọn olumulo Linux jẹ /proc
и /sys
. (/dev
ti wa ni be ni pín iranti ati ki o ko ni file_operations
). Kini idi ti awọn paati meji wọnyi? Jẹ ká wo sinu yi oro.
procfs
ṣẹda aworan ti ipo ekuro ati awọn ilana ti o ṣakoso fun userspace
. awọn /proc
Ekuro n gbejade alaye nipa kini awọn ohun elo ti o ni, gẹgẹbi awọn idilọwọ, iranti foju, ati oluṣeto. Yato si, /proc/sys
- Eyi ni ibiti a ti tunto awọn paramita nipa lilo aṣẹ naa sysctl
, wa fun userspace
. Ipo ati awọn iṣiro ti awọn ilana kọọkan ni a fihan ni awọn ilana /proc/
.
o ti wa ni /proc/meminfo
jẹ faili ti o ṣofo ti o ni alaye ti o niyelori ninu.
Ihuwasi /proc
awọn faili fihan bi o yatọ VFS awọn ọna šiše faili disk le jẹ. Ni apa kan, /proc/meminfo
ni alaye ti o le wo pẹlu aṣẹ naa free
. Ni apa keji, o ṣofo! Bawo ni eyi ṣe ṣẹlẹ? Awọn ipo jẹ reminiscent ti awọn gbajumọ article ẹtọ /proc
, ati kosi ninu awọn faili /proc
ko si nkankan nigbati ko si ọkan ti wa ni nwa nibẹ. Bi mo ti wi
Ofo ti o han gbangba procfs
ṣe oye nitori alaye ti o wa ni agbara. Diẹ ti o yatọ ipo pẹlu sysfs
. Jẹ ki a ṣe afiwe iye awọn faili ti o kere ju baiti kan wa ninu /proc
ati ni /sys
.
Procfs
ni o ni ọkan faili, eyun awọn okeere ekuro iṣeto ni, eyi ti o jẹ ẹya sile niwon o nikan nilo lati wa ni ti ipilẹṣẹ ni kete ti fun bata. Ni apa keji, in /sys
ọpọlọpọ awọn faili ti o tobi ju lo wa, ọpọlọpọ eyiti o gba gbogbo oju-iwe iranti kan. Nigbagbogbo awọn faili sysfs
ni deede nọmba kan tabi okun, ko dabi awọn tabili alaye ti o gba nipasẹ awọn faili kika bii /proc/meminfo
.
Ero sysfs
- pese awọn ohun-ini kika ati kikọ ti ohun ti ekuro n pe «kobjects»
ni aaye olumulo. Awọn nikan ìlépa kobjects
ni a itọkasi kika: nigbati awọn ti o kẹhin tọka si a kobject ti paarẹ, awọn eto yoo pada sipo awọn oro ni nkan ṣe pẹlu ti o. Sibẹsibẹ, /sys
ṣe soke julọ ninu awọn gbajumọ
ABI iduroṣinṣin ekuro naa ṣe opin ohun ti o le han ninu /sys
, kuku ju ohun ti o wa nitootọ ni akoko yẹn pato. Awọn igbanilaaye faili kikojọ ni sysfs n pese oye sinu bii awọn aye atunto ti awọn ẹrọ, awọn modulu, awọn eto faili, ati bẹbẹ lọ. le ti wa ni tunto tabi ka. A ṣe ipinnu ọgbọn kan pe procfs tun jẹ apakan ti ABI iduroṣinṣin ti ekuro, botilẹjẹpe eyi ko sọ ni gbangba ni
Awọn faili sinu sysfs
ṣe apejuwe ohun-ini kan pato fun nkan kọọkan ati pe o le jẹ kika, kọ, tabi mejeeji. "0" ninu faili naa tọkasi pe SSD ko le yọkuro.
A yoo bẹrẹ apakan keji ti itumọ pẹlu bii o ṣe le ṣe atẹle VFS ni lilo eBPF ati awọn irinṣẹ bcc, ati ni bayi a n duro de awọn asọye rẹ ati pe a pe ọ ni aṣa.
orisun: www.habr.com