procfs

Material iz Vikipedii -- svobodnoi entsiklopedii
Pereiti k navigatsii Pereiti k poisku

procfs -- spetsial'naia failovaia sistema, ispol'zuemaia v UNIX-podobnykh operatsionnykh sistemakh. Pozvoliaet poluchit' dostup k informatsii iz iadra o sistemnykh protsessakh. Neobkhodima dlia vypolneniia takikh komand kak ps, w, top. Obychno eio montiruiut na /proc. procfs sozdaiot dvukhurovnevoe predstavlenie prostranstv protsessov. Na verkhnem urovne protsessy predstavliaiut soboi katalogi, imenovannye v sootvetstvii s ikh pid. Takzhe na verkhnem urovne raspolagaetsia ssylka na katalog, sootvetstvuiushchuiu protsessu, vypolniaiushchemu zapros; ona mozhet imet' razlichnoe imia v razlichnykh OS (curproc vo FreeBSD, self v Linux).

Istoriia

[pravit' | pravit' kod]
V razdele ne khvataet ssylok na istochniki (sm. rekomendatsii po poisku).
Informatsiia dolzhna byt' proveriaema, inache ona mozhet byt' udalena. Vy mozhete otredaktirovat' stat'iu, dobaviv ssylki na avtoritetnye istochniki v vide snosok. (12 maia 2011)

8-ia redaktsiia UNIX

[pravit' | pravit' kod]

Vpervye procfs poiavilas' v vyshedshei v 1985 godu 8-i redaktsii UNIX i byla prizvana predostavit' interfeis dlia upravleniia protsessami, bolee udobnyi, chem vyzov ptrace. Ona byla podrobno opisana Tomom Killianom v rabote <> (<>) v 1984 godu. Kazhdyi protsess byl predstavlen failom, v kotoryi mogla proizvodit'sia zapis'. Kolichestvo imeiushchikhsia vyzovov ioctl ravnialos' 11.[1][2]

System V release 4

[pravit' | pravit' kod]

Dannaia sistema, vyshedshaia v 1990 godu, unasledovala procfs iz UNIX 8, s nekotorymi usovershenstvovaniiami. Protsessy po-prezhnemu predstavlialis' prostymi failami, no byli dostupny uzhe 37 vyzovov ioctl. FS stala dostatochnoi dlia postroeniia na eio baze utilit napodobie ps, no ostavalas' neudobnoi i plokho rasshiriaemoi.[1]

Realizatsiia podrobno opisana v rabote Rodzhera Folknera i Rona Gomesa <> v 1991 godu.

Plan 9

[pravit' | pravit' kod]

V 1992 godu vyshel pervyi publichnyi reliz OS Plan 9. Eto byl pik razvitiia procfs. Vsio upravlenie protsessami bylo pereneseno siuda. Protsessy stali katalogami vmesto failov. Vmesto ioctl stali ispol'zovat'sia tekstovye komandy, i upravlenie moglo proizvodit'sia komandami cat i ls.[3] Pri montirovanii /proc s drugogo komp'iutera cherez set' lokal'nyi protsess mog vzaimodeistvovat' s udalionnym tak, kak budto oni nakhodilis' na odnoi mashine.

Solaris 2.6

[pravit' | pravit' kod]

Solaris 2.6 vo mnogom unasledoval strukturu procfs ot Plan 9, odnako vse raspolozhennye tam faily byli dvoichnymi, prednaznachennymi dlia ispol'zovaniia programmoi, a ne chelovekom.[1] V tselom failovaia sistema stala neskol'ko primitivnee po sravneniiu s takovoi v Plan 9, no nesravnimo bolee razvitoi po sravneniiu s SVR4.

4.4 BSD

[pravit' | pravit' kod]

Eto byl eshchio odin shag nazad po sravneniiu s Solaris. Kolichestvo failov v kazhdom kataloge umen'shilos' do 8 (khotia v bolee pozdnikh relizakh slegka uvelichilos'). Nabor dostupnykh komand takzhe sushchestvenno sokratilsia. Stal proiskhodit' obratnyi perekhod, ot failovykh interfeisov k sistemnym vyzovam.[1]

V sovremennykh versiiakh FreeBSD procfs postepenno likvidiruetsia[4][5].

Linux

[pravit' | pravit' kod]

Linux neskol'ko vybivaetsia iz opisannoi vyshe istorii. S samogo poiavleniia procfs predstavliala v niom universal'nyi interfeis polucheniia informatsii ot iadra, a ne tol'ko o protsessakh. V korne soderzhatsia faily (v osnovnom, tekstovye) i katalogi, predostavliaiushchie samye raznoobraznye svedeniia o sisteme.

V to zhe vremia svoiu pervonachal'nuiu funktsiiu -- upravlenie protsessami -- procfs pochti ne vypolniaet. Interfeis otpravki komand otsutstvuet, failovaia sistema lish' predostavliaet podrobnuiu informatsiiu o protsessakh (i koe-gde pozvoliaet izmenit' nekotorye optsii, naprimer, /proc//oom_adj).[6]

Struktura

[pravit' | pravit' kod]

*BSD

[pravit' | pravit' kod]

Kazhdyi katalog verkhnego urovnia soderzhit sleduiushchie faily:

  • ctl -- fail tol'ko dlia zapisi, podderzhivaiushchii mnozhestvo operatsii, kotorye zapisyvaiutsia v nego v vide strok:
    • attach -- ostanavlivaet tselevoi protsess i podgotavlivaet vyzyvaiushchii ego protsess dlia vypolneniia otladki tselevogo.
    • detach -- prodolzhaet vypolnenie tselevogo protsessa i snimaet ego iz-pod kontrolia protsessa-otladchika (poslednii ne obiazan byt' vyzyvaiushchim protsessom).
    • run -- prodolzhaet vypolnenie tselevogo protsessa do postupleniia signala, dostizheniia tochki ostanova ili zaversheniia tselevogo protsessa.
    • step -- vypolniaet odnu komandu tselevoi programmy, ne generiruia inykh signalov.
    • wait -- ozhidaet kogda tselevoi protsess dostignet stabil'nogo sostoianiia, gotovogo dlia otladki. Tselevoi protsess dolzhen byt' v etom sostoianii do togo kak budut razresheny drugie komandy.
  • dbregs -- otladochnye registry, sootvetstvuiushchie struct dbregs v . dbregs seichas primeniaetsia lish' v arkhitekture i386.
  • etype -- tip vypolniaemogo faila k kotoromu idet obrashchenie v file.
  • file -- simvol'naia ssylka na fail, iz kotorogo chitalsia tekst protsessa. Eto mozhet ispol'zovat'sia dlia polucheniia dostupa k tablitse identifikatorov protsessa ili dlia zapuska novoi kopii protsessa. Esli fail ne naiden, to tselevoe napravlenie prinimaet znachenie <>.
  • fpregs -- registry s plavaiushchei zapiatoi, sootvetstvuiushchie struct fpregs v . fpregs ispol'zuetsia tol'ko na mashinakh s razlichnymi mnozhestvami universal'nykh registrov i registrov s plavaiushchei zapiatoi.
  • map -- karta virtual'noi pamiati protsessa.
  • mem -- polnyi obraz virtual'noi pamiati protsessa. Mozhno obratit'sia lish' k tomu adresu, kotoryi sushchestvuet v protsesse. Chtenie i zapis' v etot fail izmeniaiut protsess. Zapis' v tekstovyi segment primeniaetsia lish' dlia etogo protsessa (izmeneniia ne povliiaiut na drugie kopii etogo protsessa).
  • note -- ispol'zuetsia dlia otpravki signala protsessu. Ne primeniaetsia.
  • notepg -- ispol'zuetsia dlia otpravki signala gruppe protsessov. Ne primeniaetsia.
  • regs -- pozvoliaet dostup na chtenie i zapis' k mnozhestvu registrov protsessa. Dannyi fail soderzhit strukturu dvoichnykh dannykh struct regs opisannuiu v . regs dostupen na zapis' tol'ko kogda protsess ostanovlen.
  • rlimit -- fail, dostupnyi tol'ko na chtenie, soderzhashchii tekushchii i maksimal'nyi razmer. Kazhdaia stroka imeet format rlimit current max, gde -1 oboznachaet beskonechnost'.
  • status -- status protsessa. Fail dostupen tol'ko dlia chteniia i soderzhit edinstvennuiu stroku, sostoiashchuiu iz polei, razdelionnykh probelami:
    • imia komandy
    • id protsessa
    • id roditel'skogo protsessa
    • id gruppy protsessa
    • id sessii
    • major, minor upravliaemogo terminala, ili -1, -1 v inom sluchae
    • spisok flagov protsessa: ctty esli eto upravliaemyi terminal, sldr esli protsess upravliaet sessiei, noflags esli ni odin iz vysheperechislennykh flagov ne ustanovlen
    • vremia zapuska protsessa v sekundakh i mikrosekundakh, razdelionnykh zapiatoi
    • vremia pol'zovatelia v sekundakh i mikrosekundakh, razdelionnykh zapiatoi
    • sistemnoe vremia v sekundakh i mikrosekundakh, razdelionnykh zapiatoi
    • vremia ozhidaniia soobshcheniia
    • mandat protsessa, sostoiashchii iz id fakticheskogo pol'zovatelia i spiska grupp (pervyi element kotorogo iavliaetsia id fakticheskoi gruppy), razdelionnykh zapiatoi
    • imia khosta, v predelakh kotorogo zapushchen protsess, ili <<->> esli protsess zapushchen bez ogranichenii

Podderzhka operatsionnymi sistemami

[pravit' | pravit' kod]

Primechaniia

[pravit' | pravit' kod]
  1. | 1 2 3 4 A brief history of /proc . Arkhivirovano iz originala 2 marta 2012 goda.
  2. | proc(4) manual page (UNIX, 8th edition) . Arkhivirovano iz originala 2 marta 2012 goda.
  3. | proc(3) manual page (Plan 9) . Arkhivirovano iz originala 2 marta 2012 goda.
  4. | What's cooking for FreeBSD 8? Arkhivirovano iz originala 2 marta 2012 goda.
  5. | Why is procfs deprecated in favor of procstat? (freebsd-fs mailing list) . Arkhivirovano iz originala 2 marta 2012 goda.
  6. | proc(5) manual page (Linux) . Arkhivirovano iz originala 2 marta 2012 goda.

Ssylki

[pravit' | pravit' kod]
  • <> (rus.) -- perevod na russkii iazyk stat'i pro procfs.
Diskovye
Opticheskie diski
Flesh-pamiat'/SSD
Klasternye
Raspredelionnye
(setevye)
Spetsial'nye
Psevdo- i virtual'nye
Shifrovannye
Istochnik -- https://ru.wikipedia.org/w/index.php?title=Procfs&oldid=149840229