Procfs

procfs  este un sistem de fișiere special utilizat în sistemele de operare asemănătoare UNIX . Vă permite să accesați informații din nucleu despre procesele de sistem. Este necesar pentru a rula comenzi precum ps , w , top . Este de obicei montat pe /proc. procfs creează o reprezentare pe două niveluri a spațiilor de proces. La nivelul superior, procesele sunt directoare numite în funcție de pid -ul lor . Tot la nivelul superior se află un link către directorul corespunzător procesului de efectuare a solicitării; poate avea un nume diferit pe sisteme de operare diferite ( curproc pe FreeBSD , self pe Linux ).

Istorie

Ediția a VIII-a UNIX

procfs a apărut pentru prima dată în cea de-a 8-a ediție a UNIX , lansată în 1985 și a fost menită să ofere o interfață de gestionare a proceselor care era mai convenabilă decât apelarea ptrace . A fost descris în detaliu de Tom Killian în Processes as Files în 1984. Fiecare proces era reprezentat de un fișier în care putea fi scris. Numărul de apeluri ioctl disponibile a fost 11. [1] [2]

System V versiunea 4

Acest sistem, lansat în 1990, a moștenit procfs de la UNIX 8, cu unele îmbunătățiri. Procesele erau încă reprezentate ca fișiere simple, dar erau deja disponibile 37 de apeluri ioctl . FS a devenit suficient pentru a construi utilități precum ps pe baza sa , dar a rămas incomod și slab extensibil. [unu]

Implementarea este detaliată în „The Process File System and Process Model in UNIX System V” a lui Roger Faulkner și Ron Gomez în 1991.

Planul 9

În 1992, a apărut prima versiune publică a sistemului de operare Plan 9 . Acesta a fost vârful dezvoltării procfs . Tot managementul proceselor a fost mutat aici. Procesele au devenit directoare în loc de fișiere. În loc de ioctl , s-au folosit comenzi text, iar controlul se putea face cu comenzile cat și ls . [3] Când se montează /proc de pe un alt computer printr-o rețea, un proces local ar putea interacționa cu un proces de la distanță ca și cum ar fi pe aceeași mașină.

Solaris 2.6

Solaris 2.6 a moștenit o mare parte din structura procfs a lui Plan 9 , cu toate acestea, toate fișierele aflate acolo erau binare, menite să fie utilizate de un program, nu de un om. [1] În general, sistemul de fișiere a devenit ceva mai primitiv în comparație cu cel din Planul 9, dar incomparabil mai avansat decât în ​​SVR4.

4.4BSD

A fost încă un pas înapoi în comparație cu Solaris. Numărul de fișiere din fiecare director a fost redus la 8 (deși a crescut ușor în versiunile ulterioare). Setul de comenzi disponibile a fost, de asemenea, redus semnificativ. A început să aibă loc o tranziție inversă, de la interfețele de fișiere la apelurile de sistem. [unu]

În versiunile moderne de FreeBSD , procfs este eliminat treptat [4] [5] .

Linux

Linux este oarecum în afara poveștii descrise mai sus. Încă de la început , procfs a reprezentat în el o interfață universală pentru obținerea de informații din kernel, și nu doar despre procese. Rădăcina conține fișiere (în mare parte text) și directoare care oferă o varietate de informații despre sistem.

În același timp, procfs aproape că nu își îndeplinește funcția inițială - managementul procesului . Nu există interfață pentru trimiterea comenzilor, sistemul de fișiere oferă doar informații detaliate despre procese (și în unele locuri vă permite să schimbați unele opțiuni, de exemplu, /proc/<pid>/oom_adj). [6]

Structura

*BSD

Fiecare director de nivel superior conține următoarele fișiere:

Suport pentru sistemul de operare

Link -uri

Surse

  1. 1 2 3 4 Un scurt istoric al /proc (link indisponibil) . Arhivat din original pe 2 martie 2012. 
  2. pagina de manual proc(4) (UNIX, ediția a 8-a) (downlink) . Arhivat din original pe 2 martie 2012. 
  3. pagina de manual proc(3) (Planul 9) (downlink) . Arhivat din original pe 2 martie 2012. 
  4. Ce se gătește pentru FreeBSD 8? (link indisponibil) . Arhivat din original pe 2 martie 2012. 
  5. De ce este procfs depreciat în favoarea procstat? (lista de corespondență freebsd-fs) (link descendent) . Arhivat din original pe 2 martie 2012. 
  6. pagina de manual proc(5) (Linux) (downlink) . Arhivat din original pe 2 martie 2012.