Neisistemi operativiUnix-likeprocfs (abbreviazione perprocessfile system) è uno pseudo-filesystem usato per accedere alle informazioni relative ai processi fornite dalkernel. Il filesystem si trova solitamente montato nelladirectory/proc
; poiché non è un filesystem reale, esso non occupa spazio suldisco rigido ed una limitata quantità dimemoria.
procfs è supportato nei sistemiSolaris,BSD eLinux; quest'ultimo vi ospita anche informazioni non direttamente correlate con i processi del kernel.
La versione di procfs inclusa nell'ottava edizione di Unix venne implementata daTom J. Killian, il quale presentò un documento intitolatoProcesses as Files alloUSENIX nel giugno1984. Esso venne realizzato per sostituire lachiamata di sistemaptrace usata tradizionalmente per tracciare i processi.
Roger Faulkner eRon Gomes portarono suddetto codice nella quarta edizione del sistemaSystem V e pubblicarono il documentoThe Process File System and Process Model in UNIX System V su USENIX nel gennaio1991. Questa incarnazione di procfs supportò la nascita dips, ma i file dovevano comunque essere manipolati con le funzioni diread()
,write()
eioctl()
.
InPlan 9 venne implementato un filesystem per i processi che superò il sistema adottato in Unix: mentre in quest'ultimo le operazioni rivolte ad un processo dovevano essere applicate al singolo file che lo rappresentava, in Plan 9 ogni tipo di operazione aveva un file a sé dedicato, facendo divenire /proc una vera e propria parte del filesystem.
La versione 4.4 di BSD implementava/proc
come un insieme di sottodirectory per ogni processo, permettendo di accedere alle informazioni relative all'utilizzo di memoria, airegistri usati e allo stato corrente. Anche l'implementazione in Solaris 2.6 aveva directory separate per ogni processo, e includeva uno speciale filectl che permetteva di controllare, tracciare e manipolare i processi.
In Linux,/proc
contiene le informazioni relative ad ogni processo nella cartella/proc/PID
, ed include inoltre:
/proc/self
/proc/sys
/proc/meminfo
include le statistiche sull'utilizzo della memoriaIl procfs gioca un importante ruolo nello scambio di informazioni tra ilkernel mode e louser mode. Ad esempio, la versioneGNU del comando ps opera interamente in user mode, sfruttando procfs per ottenere le informazioni.
Nella versione 2.6 del kernel Linux buona parte dei file non relativi ai processi sono stati separati in un altro pseudo-filesystem chiamatoSYSFS (e montato in/sys
).