Procfs
procfs on erityinen tiedostojärjestelmä, jota käytetään UNIX - tyyppisissä käyttöjärjestelmissä. Mahdollistaa ytimen tietojen tarkastelemisen järjestelmäprosesseista. Tarvitaan suorittamaan komentoja, kuten ps , w , top . Se asennetaan yleensä /proc. procfs luo kaksitasoisen esityksen prosessitiloista. Ylimmällä tasolla prosessit ovat hakemistoja , jotka on nimetty niiden pid :n mukaan . Ylimmällä tasolla on myös linkki pyynnön tekevää prosessia vastaavaan hakemistoon; sillä voi olla eri nimi eri käyttöjärjestelmissä ( curproc FreeBSD :ssä, itse Linuxissa ) .
Historia
UNIX 8th edition
procfs ilmestyi ensimmäisen kerran UNIX :n 8. painoksessa , joka julkaistiin vuonna 1985, ja sen tarkoituksena oli tarjota prosessinhallintaliittymä, joka oli kätevämpi kuin ptracen kutsuminen . Tom Killian kuvasi sen yksityiskohtaisesti Prosessit tiedostoina vuonna 1984. Jokaista prosessia edusti tiedosto, johon voitiin kirjoittaa. Käytettävissä olevien ioctl - puhelujen määrä oli 11. [1] [2]
System V julkaisu 4
Tämä vuonna 1990 julkaistu järjestelmä peri UNIX 8:n procfs -toiminnot muutamilla parannuksilla. Prosessit esitettiin edelleen yksinkertaisina tiedostoina, mutta käytettävissä oli jo 37 ioctl- kutsua . FS:stä tuli sen perusteella riittävä rakentamaan apuohjelmia, kuten ps , mutta pysyi hankalana ja huonosti laajennettavana. [yksi]
Toteutus on kuvattu yksityiskohtaisesti Roger Faulknerin ja Ron Gomezin teoksessa "The Process File System and Process Model in UNIX System V" vuonna 1991.
Suunnitelma 9
Vuonna 1992 Plan 9 -käyttöjärjestelmän ensimmäinen julkinen julkaisu julkaistiin . Tämä oli procfs - kehityksen huippu . Kaikki prosessinhallinta on siirretty tänne. Prosesseista on tullut hakemistoja tiedostojen sijaan. Ioctl :n sijaan käytettiin tekstikomentoja, ja ohjaus onnistui cat- ja ls-komennoilla . [3] Kun /proc asennetaan toisesta tietokoneesta verkon kautta, paikallinen prosessi voi olla vuorovaikutuksessa etäprosessin kanssa ikään kuin ne olisivat samassa koneessa.
Solaris 2.6
Solaris 2.6 peri suuren osan Plan 9 :n procfs- rakenteesta , mutta kaikki siellä olevat tiedostot olivat binaarisia, jotka oli tarkoitettu ohjelman, ei ihmisen, käytettäväksi. [1] Yleisesti ottaen tiedostojärjestelmästä on tullut hieman primitiivisempi kuin Plan 9:ssä, mutta verrattomasti kehittyneempää kuin SVR4:ssä.
4.4BSD
Se oli askel taaksepäin Solarikseen verrattuna. Kussakin hakemistossa olevien tiedostojen määrä on vähennetty 8:aan (tosin myöhemmissä julkaisuissa hieman lisätty). Saatavilla olevien komentojen joukkoa on myös vähennetty merkittävästi. Alkoi tapahtua käänteinen siirtyminen tiedostoliitännöistä järjestelmäkutsuihin. [yksi]
Nykyaikaisissa FreeBSD :n versioissa procfs poistetaan käytöstä [4] [5] .
Linux
Linux on hieman poissa yllä kuvatusta tarinasta. Alusta alkaen procfs edusti siinä universaalia käyttöliittymää tiedon saamiseksi ytimestä, eikä vain prosesseista. Päähakemisto sisältää tiedostoja (enimmäkseen tekstiä) ja hakemistoja, jotka tarjoavat erilaisia tietoja järjestelmästä.
Samaan aikaan procfs ei läheskään suorita alkuperäistä tehtäväänsä - prosessinhallintaa . Komentojen lähettämiseen ei ole käyttöliittymää, tiedostojärjestelmä antaa vain yksityiskohtaista tietoa prosesseista (ja joissain paikoissa sen avulla voit muuttaa joitain vaihtoehtoja, esim. /proc/<pid>/oom_adj). [6]
Rakenne
*BSD
Jokainen ylimmän tason hakemisto sisältää seuraavat tiedostot:
- ctl on vain kirjoitustiedosto, joka tukee monia toimintoja, jotka kirjoitetaan siihen merkkijonoina:
- liitä - Pysäyttää kohdeprosessin ja valmistelee kutsuprosessin kohteen virheenkorjausta varten.
- irrota - jatkaa kohdeprosessin suorittamista ja poistaa sen virheenkorjausprosessin hallinnasta (jälkimmäisen ei tarvitse olla kutsuprosessi).
- run - Jatkaa kohdeprosessin suorittamista, kunnes signaali vastaanotetaan, keskeytyspiste saavutetaan tai kohdeprosessi päättyy.
- vaihe - suorittaa yhden kohdeohjelman komennon ilman muita signaaleja.
- odota - odottaa, että kohdeprosessi saavuttaa vakaan tilan, valmiina virheenkorjaukseen. Kohdeprosessin on oltava tässä tilassa, ennen kuin muut komennot sallitaan.
- dbregs ovat virheenkorjausrekistereitä, jotka vastaavat struct dbregs-elementtejä kohteessa <kone/reg.h>. dbregs on tällä hetkellä käytössä vain i386-arkkitehtuurissa.
- etype on suoritettavan tiedoston tyyppi, jota tiedosto käyttää .
- tiedosto on symbolinen linkki tiedostoon, josta prosessiteksti luettiin. Tätä voidaan käyttää prosessin tunnustaulukon avaamiseen tai uuden kopion käynnistämiseen prosessista. Jos tiedostoa ei löydy, kohdesuunta on "tuntematon".
- fpregs ovat liukulukurekistereitä, jotka vastaavat <kone/reg.h>:n rakennetta fpregs. fpregs on käytössä vain koneissa, joissa on erilaisia yleis- ja liukulukurekistereitä.
- kartta on prosessin virtuaalimuistikartta.
- mem on prosessin täydellinen virtuaalimuistikuva. Voit viitata vain prosessissa olevaan osoitteeseen. Tämän tiedoston lukeminen ja kirjoittaminen muuttaa prosessia. Tekstiosaan kirjoittaminen koskee vain tätä prosessia (muutokset eivät vaikuta tämän prosessin muihin kopioihin).
- huomautus - käytetään signaalin lähettämiseen prosessiin. Ei sovellettavissa.
- notepg - käytetään signaalin lähettämiseen prosessiryhmälle. Ei sovellettavissa.
- regs - Mahdollistaa luku- ja kirjoitusoikeudet useisiin prosessirekistereihin. Tämä tiedosto sisältää struct regs -binääritietorakenteen, joka on kuvattu kohdassa <machine/reg.h>. regs on kirjoitettavissa vain, kun prosessi on pysäytetty.
- rlimit on vain luku -tiedosto, joka sisältää nykyisen ja enimmäiskoon. Jokaisella rivillä on muoto rlimit current max, jossa -1 tarkoittaa ääretöntä.
- status - prosessin tila. Tiedosto on vain luku -tilassa ja sisältää yhden rivin, joka koostuu välilyönneillä erotetuista kentistä:
- komennon nimi
- prosessin tunnus
- pääprosessin tunnus
- prosessiryhmän tunnus
- istunnon tunniste
- hallitun päätteen pää, molli tai -1, -1 muuten
- prosessilippujen luettelo: ctty jos tämä on hallittu pääte, sldr jos prosessi hallitsee istuntoa, noflags jos mitään yllä olevista lipuista ei ole asetettu
- prosessin aloitusaika sekunteina ja mikrosekunteina pilkulla erotettuna
- käyttäjän aika sekunteina ja mikrosekunteina pilkulla erotettuna
- järjestelmän aika sekunteina ja mikrosekunteina pilkulla erotettuna
- viestin odotusaika
- prosessilippu, joka koostuu todellisesta käyttäjätunnuksesta ja ryhmien luettelosta (joista ensimmäinen elementti on todellinen ryhmätunnus), erotettuna pilkulla
- sen isännän nimi, jossa prosessi on käynnissä, tai "-", jos prosessi on käynnissä toistaiseksi
Käyttöjärjestelmän tuki
Linkit
Lähteet
- ↑ 1 2 3 4 Lyhyt /proc historia (linkki ei ole käytettävissä) . Arkistoitu alkuperäisestä 2. maaliskuuta 2012. (määrätön)
- ↑ proc(4) manuaalisivu (UNIX, 8. painos) (downlink) . Arkistoitu alkuperäisestä 2. maaliskuuta 2012. (määrätön)
- ↑ proc(3) manuaalisivu (suunnitelma 9) (downlink) . Arkistoitu alkuperäisestä 2. maaliskuuta 2012. (määrätön)
- ↑ Mitä FreeBSD 8 valmistaa? (linkki ei saatavilla) . Arkistoitu alkuperäisestä 2. maaliskuuta 2012. (määrätön)
- ↑ Miksi procfs on poistettu käytöstä procstatin hyväksi? (freebsd-fs-postituslista) (downlink) . Arkistoitu alkuperäisestä 2. maaliskuuta 2012. (määrätön)
- ↑ proc(5) manuaalisivu (Linux) (downlink) . Arkistoitu alkuperäisestä 2. maaliskuuta 2012. (määrätön)