PROCFS
Da Wikipedia, l'enciclopedia libera.
Nei sistemi operativi Unix-like procfs (abbreviazione per process filesystem) e' uno pseudo-filesystem usato per accedere alle informazioni relative ai processi fornite dal kernel. Il filesystem si trova solitamente montato nella directory /proc
; poiché non e' un filesystem reale, esso non occupa spazio sul disco rigido ed una limitata quantita' di memoria.
procfs e' supportato nei sistemi Solaris, BSD e Linux; quest'ultimo vi ospita anche informazioni non direttamente correlate con i processi del kernel.
[modifica] Storia
La versione di procfs inclusa nell'ottava edizione di Unix venne implementata da Tom J. Killian, il quale presento' un documento intitolato Processes as Files allo USENIX nel giugno 1984. Esso venne realizzato per sostituire la chiamata di sistema ptrace usata tradizionalmente per tracciare i processi.
Roger Faulkner e Ron Gomes portarono suddetto codice nella quarta edizione del sistema System V e pubblicarono il documento The Process File System and Process Model in UNIX System V su USENIX nel gennaio 1991. Questa incarnazione di procfs supporto' la nascita di ps, ma i files dovevano comunque essere manipolati con le funzioni di read()
, write()
e ioctl()
.
In Plan 9 venne implementato un filesystem per i processi che supero' 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 se' 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, ai registri usati e allo stato corrente. Anche l'implementazione in Solaris 2.6 aveva directory separate per ogni processo, e includeva uno speciale file ctl che permetteva di controllare, tracciare e manipolare i processi.
[modifica] Linux
In Linux, /proc
contiene le informazioni relative ad ogni processo nella cartella /proc/PID
, ed include inoltre:
- Un link al processo corrente in
/proc/self
- Informazioni sull'hardware, sul kernel e sui moduli ad esso linkati
- L'accesso ai parametri modificabili dinamicamente nel kernel, in
/proc/sys
- Informazioni generiche sul sistema; ad esempio,
/proc/meminfo
include le statistiche sull'utilizzo della memoria
Il procfs gioca un importante ruolo nello scambio di informazioni tra il kernel mode e lo user mode. Ad esempio, la versione GNU del comando ps opera interamente in user mode, sfruttando procfs per ottenere le informazioni.
Nella versione 2.6 del kernel Linux buona parte dei files non relativi ai processi sono stati separati in un altro pseudo-filesystem chiamato SYSFS (e montato in /sys
).