+Dato che fin dall'inizio i parametri erano organizzati in una struttura
+albero, è parso naturale rimappare questa organizzazione utilizzando il
+filesystem \file{/proc}. Questo è un filesystem virtuale, generato
+direttamente dal kernel, che non fa riferimento a nessun dispositivo fisico,
+ma presenta in forma di file i dati di alcune delle strutture interne del
+kernel stesso. Il suo utilizzo principale, come denuncia il nome stesso, è
+quello di fornire una interfaccia per ricavare i dati dei processi (venne
+introdotto a questo scopo su BSD), ma nel corso del tempo il suo uso è stato
+ampliato.
+
+In particolare l'albero dei valori di \func{sysctl} viene presentato in forma
+di una gerarchia di file e directory a partire dalla directory
+\file{/proc/sys}, cosicché è possibile accedere al valore di un parametro del
+kernel tramite il \textit{pathname} ad un file sotto \file{/proc/sys}
+semplicemente leggendone il contenuto, così come si può modificare un
+parametro scrivendo sul file ad esso corrispondente.
+
+Il kernel si occupa di generare al volo il contenuto ed i nomi dei file
+corrispondenti ai vari parametri che sono presenti, e questo ha il grande
+vantaggio di rendere accessibili gli stessi ad un qualunque comando di shell e
+di permettere la navigazione dell'albero in modo da riconoscere quali
+parametri sono presenti senza dover cercare un valore all'interno di una
+pagina di manuale.
+
+Inizialmente l'uso del filesystem \file{/proc} serviva soltanto a replicare,
+con altrettante corrispondenze ai file presenti in \file{/proc/sys}, i valori
+dei parametri usati da \func{sysctl}, ma vista la assoluta naturalità
+dell'interfaccia, e la sua maggiore efficienza, nelle versioni più recenti del
+kernel questa è diventata la modalità canonica per modificare i parametri del
+kernel, evitando di dover ricorrere all'uso di una \textit{system call}
+specifica che prima o poi verrà eliminata.
+
+Nonostante la semplificazione nella gestione ottenuta con l'uso di
+\file{/proc/sys} resta il problema generale di conoscere il significato di
+ciascuno degli innumerevoli parametri che vi si trovano. Purtroppo la
+documentazione degli stessi spesso risulta incompleta e non aggiornata, ma
+buona parte di quelli può importanti sono descritti dalla documentazione
+inclusa nei sorgenti del kernel, nella directory \file{Documentation/sysctl}.
+
+Ma oltre alle informazioni che sostituiscono quelle ottenibili dalla ormai
+deprecata \func{sysctl} dentro \file{proc} sono disponibili moltissime altre
+informazioni, fra cui ad esempio anche quelle fornite dalla funzione
+\funcd{uname},\footnote{con Linux ci sono in realtà 3 \textit{system call}
+ diverse per le dimensioni delle stringe restituite, le prime due usano
+ rispettivamente delle lunghezze di 9 e 65 byte, la terza usa anch'essa 65
+ byte, ma restituisce anche l'ultimo campo, \var{domainname}, con una
+ lunghezza di 257 byte, la \acr{glibc} provvede a mascherare questi dettagli
+ usando la versione più recente disponibile.} il cui prototipo è:
+
+\begin{funcproto}{
+\fhead{sys/utsname.h}
+\fdecl{int uname(struct utsname *info)}
+\fdesc{Restituisce informazioni generali sul sistema.}
+}
+
+{La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual
+ caso \var{errno} può assumere solo il valore \errval{EFAULT}.}
+\end{funcproto}
+
+La funzione, che viene usata dal comando \cmd{uname}, restituisce una serie di
+informazioni relative al sistema nelle stringhe che costituiscono i campi
+della struttura \struct{utsname} (la cui definizione è riportata in
+fig.~\ref{fig:sys_utsname}) che viene scritta nel buffer puntato
+dall'argomento \param{info}.
+
+\begin{figure}[!ht!b]