+La prima funzionalità si può ottenere includendo gli opportuni header file che
+contengono le costanti necessarie definite come macro di preprocessore, per la
+seconda invece sono ovviamente necessarie delle funzioni. La situazione è
+complicata dal fatto che ci sono molti casi in cui alcuni di questi limiti
+sono fissi in un'implementazione mentre possono variare in un altra: tutto
+questo crea una ambiguità che non è sempre possibile risolvere in maniera
+chiara. In generale quello che succede è che quando i limiti del sistema sono
+fissi essi vengono definiti come macro di preprocessore nel file
+\headfile{limits.h}, se invece possono variare, il loro valore sarà ottenibile
+tramite la funzione \func{sysconf} (che esamineremo a breve).
+
+\begin{table}[htb]
+ \centering
+ \footnotesize
+ \begin{tabular}[c]{|l|r|l|}
+ \hline
+ \textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\
+ \hline
+ \hline
+ \constd{MB\_LEN\_MAX}& 16 & Massima dimensione di un
+ carattere esteso.\\
+ \constd{CHAR\_BIT} & 8 & Numero di bit di \ctyp{char}.\\
+ \constd{UCHAR\_MAX}& 255 & Massimo di \ctyp{unsigned char}.\\
+ \constd{SCHAR\_MIN}& -128 & Minimo di \ctyp{signed char}.\\
+ \constd{SCHAR\_MAX}& 127 & Massimo di \ctyp{signed char}.\\
+ \constd{CHAR\_MIN} & 0 o -128 & Minimo di \ctyp{char}.\footnotemark\\
+ \constd{CHAR\_MAX} & 127 o 255 & Massimo di \ctyp{char}.\footnotemark\\
+ \constd{SHRT\_MIN} & -32768 & Minimo di \ctyp{short}.\\
+ \constd{SHRT\_MAX} & 32767 & Massimo di \ctyp{short}.\\
+ \constd{USHRT\_MAX}& 65535 & Massimo di \ctyp{unsigned short}.\\
+ \constd{INT\_MAX} & 2147483647 & Minimo di \ctyp{int}.\\
+ \constd{INT\_MIN} &-2147483648 & Minimo di \ctyp{int}.\\
+ \constd{UINT\_MAX} & 4294967295 & Massimo di \ctyp{unsigned int}.\\
+ \constd{LONG\_MAX} & 2147483647 & Massimo di \ctyp{long}.\\
+ \constd{LONG\_MIN} &-2147483648 & Minimo di \ctyp{long}.\\
+ \constd{ULONG\_MAX}& 4294967295 & Massimo di \ctyp{unsigned long}.\\
+ \hline
+ \end{tabular}
+ \caption{Costanti definite in \headfile{limits.h} in conformità allo standard
+ ANSI C.}
+ \label{tab:sys_ansic_macro}
+\end{table}
+
+\footnotetext[1]{il valore può essere 0 o \const{SCHAR\_MIN} a seconda che il
+ sistema usi caratteri con segno o meno.}
+
+\footnotetext[2]{il valore può essere \const{UCHAR\_MAX} o \const{SCHAR\_MAX}
+ a seconda che il sistema usi caratteri con segno o meno.}
+
+Lo standard ANSI C definisce dei limiti che sono tutti fissi, pertanto questo
+saranno sempre disponibili al momento della compilazione. Un elenco, ripreso
+da \headfile{limits.h}, è riportato in tab.~\ref{tab:sys_ansic_macro}. Come si
+può vedere per la maggior parte questi limiti attengono alle dimensioni dei
+dati interi, che sono in genere fissati dall'architettura hardware, le
+analoghe informazioni per i dati in virgola mobile sono definite a parte, ed
+accessibili includendo \headfiled{float.h}.
+
+\begin{table}[htb]
+ \centering
+ \footnotesize
+ \begin{tabular}[c]{|l|r|l|}
+ \hline
+ \textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\
+ \hline
+ \hline
+ \constd{LLONG\_MAX} & 9223372036854775807& Massimo di \ctyp{long long}.\\
+ \constd{LLONG\_MIN} &-9223372036854775808& Minimo di \ctyp{long long}.\\
+ \constd{ULLONG\_MAX}&18446744073709551615& Massimo di \ctyp{unsigned long
+ long}.\\
+ \hline
+ \end{tabular}
+ \caption{Macro definite in \headfile{limits.h} in conformità allo standard
+ ISO C90.}
+ \label{tab:sys_isoc90_macro}
+\end{table}
+
+Lo standard prevede anche un'altra costante, \constd{FOPEN\_MAX}, che può non
+essere fissa e che pertanto non è definita in \headfile{limits.h}, essa deve
+essere definita in \headfile{stdio.h} ed avere un valore minimo di 8. A questi
+valori lo standard ISO C90 ne aggiunge altri tre, relativi al tipo \ctyp{long
+ long} introdotto con il nuovo standard, i relativi valori sono in
+tab.~\ref{tab:sys_isoc90_macro}.
+
+Ovviamente le dimensioni dei vari tipi di dati sono solo una piccola parte
+delle caratteristiche del sistema; mancano completamente tutte quelle che
+dipendono dalla implementazione dello stesso. Queste, per i sistemi unix-like,
+sono state definite in gran parte dallo standard POSIX.1, che tratta anche i
+limiti relativi alle caratteristiche dei file che vedremo in
+sez.~\ref{sec:sys_file_limits}.
+
+\begin{table}[htb]
+ \centering
+ \footnotesize
+ \begin{tabular}[c]{|l|r|p{8cm}|}
+ \hline
+ \textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\
+ \hline
+ \hline
+ \constd{ARG\_MAX} &131072& Dimensione massima degli argomenti
+ passati ad una funzione della famiglia
+ \func{exec}.\\
+ \constd{CHILD\_MAX} & 999& Numero massimo di processi contemporanei
+ che un utente può eseguire.\\
+ \constd{OPEN\_MAX} & 256& Numero massimo di file che un processo
+ può mantenere aperti in contemporanea.\\
+ \constd{STREAM\_MAX}& 8& Massimo numero di stream aperti per
+ processo in contemporanea.\\
+ \constd{TZNAME\_MAX}& 6& Dimensione massima del nome di una
+ \textit{timezone} (vedi
+ sez.~\ref{sec:sys_time_base})).\\
+ \constd{NGROUPS\_MAX}& 32& Numero di gruppi supplementari per
+ processo (vedi sez.~\ref{sec:proc_access_id}).\\
+ \constd{SSIZE\_MAX}&32767& Valore massimo del tipo \type{ssize\_t}.\\
+ \hline
+ \end{tabular}
+ \caption{Costanti per i limiti del sistema.}
+ \label{tab:sys_generic_macro}
+\end{table}
+
+Purtroppo la sezione dello standard che tratta questi argomenti è una delle
+meno chiare, tanto che Stevens, in \cite{APUE}, la porta come esempio di
+``\textsl{standardese}''. Lo standard prevede che ci siano 13 macro che
+descrivono le caratteristiche del sistema: 7 per le caratteristiche generiche,
+riportate in tab.~\ref{tab:sys_generic_macro}, e 6 per le caratteristiche dei
+file, riportate in tab.~\ref{tab:sys_file_macro}.
+
+\begin{table}[htb]
+ \centering
+ \footnotesize
+ \begin{tabular}[c]{|l|r|p{8cm}|}
+ \hline
+ \textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\
+ \hline
+ \hline
+ \macrod{\_POSIX\_ARG\_MAX} & 4096& Dimensione massima degli argomenti
+ passati ad una funzione della famiglia
+ \func{exec}.\\
+ \macrod{\_POSIX\_CHILD\_MAX} & 6& Numero massimo di processi
+ contemporanei che un utente può
+ eseguire.\\
+ \macrod{\_POSIX\_OPEN\_MAX} & 16& Numero massimo di file che un processo
+ può mantenere aperti in
+ contemporanea.\\
+ \macrod{\_POSIX\_STREAM\_MAX}& 8& Massimo numero di stream aperti per
+ processo in contemporanea.\\
+ \macrod{\_POSIX\_TZNAME\_MAX}& 6& Dimensione massima del nome di una
+ \textit{timezone}
+ (vedi sez.~\ref{sec:sys_date}). \\
+ \macrod{\_POSIX\_RTSIG\_MAX} & 8& Numero massimo di segnali
+ \textit{real-time} (vedi
+ sez.~\ref{sec:sig_real_time}).\\
+ \macrod{\_POSIX\_NGROUPS\_MAX}& 0& Numero di gruppi supplementari per
+ processo (vedi
+ sez.~\ref{sec:proc_access_id}).\\
+ \macrod{\_POSIX\_SSIZE\_MAX} &32767& Valore massimo del tipo
+ \type{ssize\_t}.\\
+ % \macrod{\_POSIX\_AIO\_LISTIO\_MAX}&2& \\
+ % \macrod{\_POSIX\_AIO\_MAX} & 1& \\
+ \hline
+ \end{tabular}
+ \caption{Macro dei valori minimi di alcune caratteristiche generali del
+ sistema per la conformità allo standard POSIX.1.}
+ \label{tab:sys_posix1_general}
+\end{table}
+
+Lo standard dice che queste macro devono essere definite in
+\headfile{limits.h} quando i valori a cui fanno riferimento sono fissi, e
+altrimenti devono essere lasciate indefinite, ed i loro valori dei limiti
+devono essere accessibili solo attraverso \func{sysconf}. In realtà queste
+vengono sempre definite ad un valore generico. Si tenga presente poi che
+alcuni di questi limiti possono assumere valori molto elevati (come
+\const{CHILD\_MAX}), e non è pertanto il caso di utilizzarli per allocare
+staticamente della memoria.
+
+A complicare la faccenda si aggiunge il fatto che POSIX.1 prevede una serie di
+altre costanti (il cui nome inizia sempre con \code{\_POSIX\_}) che
+definiscono i valori minimi le stesse caratteristiche devono avere, perché una
+implementazione possa dichiararsi conforme allo standard, alcuni dei questi
+valori sono riportati in tab.~\ref{tab:sys_posix1_general}.
+
+In genere questi valori non servono a molto, la loro unica utilità è quella di
+indicare un limite superiore che assicura la portabilità senza necessità di
+ulteriori controlli. Tuttavia molti di essi sono ampiamente superati in tutti
+i sistemi POSIX in uso oggigiorno. Per questo è sempre meglio utilizzare i
+valori ottenuti da \func{sysconf}.
+
+\begin{table}[htb]
+ \centering
+ \footnotesize
+ \begin{tabular}[c]{|l|p{8cm}|}
+ \hline
+ \textbf{Macro}&\textbf{Significato}\\
+ \hline
+ \hline
+ \macrod{\_POSIX\_JOB\_CONTROL}& Il sistema supporta il
+ \textit{job control} (vedi
+ sez.~\ref{sec:sess_job_control}).\\
+ \macrod{\_POSIX\_SAVED\_IDS} & Il sistema supporta gli identificatori del
+ gruppo \textit{saved} (vedi
+ sez.~\ref{sec:proc_access_id})
+ per il controllo di accesso dei processi.\\
+ \macrod{\_POSIX\_VERSION} & Fornisce la versione dello standard POSIX.1
+ supportata nel formato YYYYMML (ad esempio
+ 199009L).\\
+ \hline
+ \end{tabular}
+ \caption{Alcune macro definite in \headfile{limits.h} in conformità allo
+ standard POSIX.1.}
+ \label{tab:sys_posix1_other}
+\end{table}
+
+Oltre ai precedenti valori e a quelli relativi ai file elencati in
+tab.~\ref{tab:sys_posix1_file}, che devono essere obbligatoriamente definiti,
+lo standard POSIX.1 ne prevede molti altri. La lista completa si trova
+dall'header file \file{bits/posix1\_lim.h}, da non usare mai direttamente (è
+incluso automaticamente all'interno di \headfile{limits.h}). Di questi vale la
+pena menzionarne alcune macro di uso comune, riportate in
+tab.~\ref{tab:sys_posix1_other}, che non indicano un valore specifico, ma
+denotano la presenza di alcune funzionalità nel sistema, come il supporto del
+\textit{job control} o degli identificatori del gruppo \textit{saved}.
+
+Oltre allo standard POSIX.1, anche lo standard POSIX.2 definisce una serie di
+altre costanti. Siccome queste sono principalmente attinenti a limiti relativi
+alle applicazioni di sistema presenti, come quelli su alcuni parametri delle
+espressioni regolari o del comando \cmd{bc}, non li tratteremo esplicitamente,
+se ne trova una menzione completa nell'header file \file{bits/posix2\_lim.h},
+e alcuni di loro sono descritti nella pagina di manuale di \func{sysconf} e
+nel manuale della \acr{glibc}.
+
+Quando uno dei limiti o delle caratteristiche del sistema può variare, per non
+dover essere costretti a ricompilare un programma tutte le volte che si
+cambiano le opzioni con cui è compilato il kernel, o alcuni dei parametri
+modificabili al momento dell'esecuzione, è necessario ottenerne il valore
+attraverso la funzione \funcd{sysconf}, cui prototipo è:
+
+\begin{funcproto}{
+\fhead{unistd.h}
+\fdecl{long sysconf(int name)}
+\fdesc{Restituisce il valore di un parametro di sistema.}
+}
+
+{La funzione ritorna in caso di successo il valore del parametro richiesto, o
+ 1 se si tratta di un'opzione disponibile, 0 se l'opzione non è disponibile e
+ $-1$ per un errore, nel qual caso però \var{errno} non viene impostata.}
+\end{funcproto}
+
+La funzione prende come argomento un intero che specifica quale dei limiti si
+vuole conoscere. Uno specchietto contenente i principali valori disponibili in
+Linux è riportato in tab.~\ref{tab:sys_sysconf_par}, l'elenco completo è
+contenuto in \file{bits/confname.h}, ed una lista più esaustiva, con le
+relative spiegazioni, si può trovare nel manuale della \acr{glibc}.
+
+\begin{table}[htb]
+ \centering
+ \footnotesize
+ \begin{tabular}[c]{|l|l|p{8cm}|}
+ \hline
+ \textbf{Parametro}&\textbf{Macro sostituita} &\textbf{Significato}\\
+ \hline
+ \hline
+ \texttt{\_SC\_ARG\_MAX} & \const{ARG\_MAX}&
+ La dimensione massima degli argomenti passati
+ ad una funzione della famiglia \func{exec}.\\
+ \texttt{\_SC\_CHILD\_MAX} & \const{CHILD\_MAX}&
+ Il numero massimo di processi contemporanei
+ che un utente può eseguire.\\
+ \texttt{\_SC\_OPEN\_MAX} & \const{OPEN\_MAX}&
+ Il numero massimo di file che un processo può
+ mantenere aperti in contemporanea.\\
+ \texttt{\_SC\_STREAM\_MAX}& \const{STREAM\_MAX}&
+ Il massimo numero di stream che un processo
+ può mantenere aperti in contemporanea. Questo
+ limite è previsto anche dallo standard ANSI C,
+ che specifica la macro \const{FOPEN\_MAX}.\\
+ \texttt{\_SC\_TZNAME\_MAX}& \const{TZNAME\_MAX}&
+ La dimensione massima di un nome di una
+ \texttt{timezone} (vedi
+ sez.~\ref{sec:sys_date}).\\
+ \texttt{\_SC\_NGROUPS\_MAX}&\const{NGROUP\_MAX}&
+ Massimo numero di gruppi supplementari che
+ può avere un processo (vedi
+ sez.~\ref{sec:proc_access_id}).\\
+ \texttt{\_SC\_SSIZE\_MAX} & \const{SSIZE\_MAX}&
+ Valore massimo del tipo di dato
+ \type{ssize\_t}.\\
+ \texttt{\_SC\_CLK\_TCK} & \const{CLK\_TCK} &
+ Il numero di \textit{clock tick} al secondo,
+ cioè l'unità di misura del
+ \textit{process time} (vedi
+ sez.~\ref{sec:sys_unix_time}).\\
+ \texttt{\_SC\_JOB\_CONTROL}&\macro{\_POSIX\_JOB\_CONTROL}&
+ Indica se è supportato il \textit{job
+ control} (vedi
+ sez.~\ref{sec:sess_job_control}) in stile
+ POSIX.\\
+ \texttt{\_SC\_SAVED\_IDS} & \macro{\_POSIX\_SAVED\_IDS}&
+ Indica se il sistema supporta i
+ \textit{saved id} (vedi
+ sez.~\ref{sec:proc_access_id}).\\
+ \texttt{\_SC\_VERSION} & \macro{\_POSIX\_VERSION} &
+ Indica il mese e l'anno di approvazione
+ della revisione dello standard POSIX.1 a cui
+ il sistema fa riferimento, nel formato
+ YYYYMML, la revisione più recente è 199009L,
+ che indica il Settembre 1990.\\
+ \hline
+ \end{tabular}
+ \caption{Parametri del sistema leggibili dalla funzione \func{sysconf}.}
+ \label{tab:sys_sysconf_par}
+\end{table}
+
+In generale ogni limite o caratteristica del sistema per cui è definita una
+macro, sia dagli standard ANSI C e ISO C90, che da POSIX.1 e POSIX.2, può
+essere ottenuto attraverso una chiamata a \func{sysconf}. Il nome della
+costante da utilizzare come valore dell'argomento \param{name} si otterrà
+aggiungendo \code{\_SC\_} ai nomi delle costanti definite dai primi due
+standard (quelle di tab.~\ref{tab:sys_generic_macro}), o sostituendolo a
+\code{\_POSIX\_} per le costanti definite dagli altri due standard (quelle di
+tab.~\ref{tab:sys_posix1_general}).
+
+In linea teorica si dovrebbe fare uso di \func{sysconf} solo quando la
+relativa costante di sistema non è definita, quindi con un codice analogo al
+seguente:
+\includecodesnip{listati/get_child_max.c}
+ma in realtà con Linux queste costanti sono comunque definite, indicando però
+un limite generico che non è detto sia corretto; per questo motivo è sempre
+meglio usare i valori restituiti da \func{sysconf}.
+
+
+\subsection{Limiti e caratteristiche dei file}
+\label{sec:sys_file_limits}
+
+Come per le caratteristiche generali del sistema anche per i file esistono una
+serie di limiti (come la lunghezza del nome del file o il numero massimo di
+link) che dipendono sia dall'implementazione che dal filesystem in uso. Anche
+in questo caso lo standard prevede alcune macro che ne specificano il valore,
+riportate in tab.~\ref{tab:sys_file_macro}.
+
+\begin{table}[htb]
+ \centering
+ \footnotesize
+ \begin{tabular}[c]{|l|r|l|}
+ \hline
+ \textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\
+ \hline
+ \hline
+ \constd{LINK\_MAX} &8 & Numero massimo di link a un file.\\
+ \constd{NAME\_MAX}& 14 & Lunghezza in byte di un nome di file. \\
+ \constd{PATH\_MAX}& 256 & Lunghezza in byte di un \textit{pathname}.\\
+ \constd{PIPE\_BUF}&4096 & Byte scrivibili atomicamente in una \textit{pipe}
+ (vedi sez.~\ref{sec:ipc_pipes}).\\
+ \constd{MAX\_CANON}&255 & Dimensione di una riga di terminale in modo
+ canonico (vedi sez.~\ref{sec:term_io_design}).\\
+ \constd{MAX\_INPUT}&255 & Spazio disponibile nella coda di input
+ del terminale (vedi
+ sez.~\ref{sec:term_io_design}).\\
+ \hline
+ \end{tabular}
+ \caption{Costanti per i limiti sulle caratteristiche dei file.}
+ \label{tab:sys_file_macro}
+\end{table}
+
+Come per i limiti di sistema, lo standard POSIX.1 detta una serie di valori
+minimi anche per queste caratteristiche, che ogni sistema che vuole essere
+conforme deve rispettare. Le relative macro sono riportate in
+tab.~\ref{tab:sys_posix1_file} e per esse vale lo stesso discorso fatto per le
+analoghe di tab.~\ref{tab:sys_posix1_general}.
+
+\begin{table}[htb]
+ \centering
+ \footnotesize
+ \begin{tabular}[c]{|l|r|l|}
+ \hline
+ \textbf{Macro}&\textbf{Valore}&\textbf{Significato}\\
+ \hline
+ \hline
+ \macrod{\_POSIX\_LINK\_MAX} &8 & Numero massimo di link a un file.\\
+ \macrod{\_POSIX\_NAME\_MAX}& 14 & Lunghezza in byte di un nome di file.\\
+ \macrod{\_POSIX\_PATH\_MAX}& 256 & Lunghezza in byte di un
+ \textit{pathname}.\\
+ \macrod{\_POSIX\_PIPE\_BUF}& 512 & Byte scrivibili atomicamente in una
+ \textit{pipe}.\\
+ \macrod{\_POSIX\_MAX\_CANON}&255 & Dimensione di una riga di
+ terminale in modo canonico.\\
+ \macrod{\_POSIX\_MAX\_INPUT}&255 & Spazio disponibile nella coda di input
+ del terminale.\\
+% \macrod{\_POSIX\_MQ\_OPEN\_MAX}& 8& \\
+% \macrod{\_POSIX\_MQ\_PRIO\_MAX}& 32& \\
+% \macrod{\_POSIX\_FD\_SETSIZE}& 16 & \\
+% \macrod{\_POSIX\_DELAYTIMER\_MAX}& 32 & \\
+ \hline
+ \end{tabular}
+ \caption{Costanti dei valori minimi delle caratteristiche dei file per la
+ conformità allo standard POSIX.1.}
+ \label{tab:sys_posix1_file}
+\end{table}
+
+Tutti questi limiti sono definiti in \headfile{limits.h}; come nel caso
+precedente il loro uso è di scarsa utilità in quanto ampiamente superati in
+tutte le implementazioni moderne. In generale i limiti per i file sono molto
+più soggetti ad essere variabili rispetto ai limiti generali del sistema; ad
+esempio parametri come la lunghezza del nome del file o il numero di link
+possono variare da filesystem a filesystem.
+
+Per questo motivo quando si ha a che fare con limiti relativi ai file questi
+devono essere sempre controllati con la funzione \funcd{pathconf}, il cui
+prototipo è:
+
+\begin{funcproto}{
+\fhead{unistd.h}
+\fdecl{long pathconf(char *path, int name)}
+\fdesc{Restituisce il valore di un parametro dei file.}
+}
+
+{La funzione ritorna il valore del parametro richiesto in caso di successo e
+ $-1$ per un errore, nel qual caso \var{errno} viene impostata ad uno degli
+ errori possibili relativi all'accesso a \param{path}.}
+\end{funcproto}
+
+La funzione richiede che si specifichi il limite che si vuole controllare con
+l'argomento \param{name}, per il quale si deve usare la relativa costante
+identificativa, il cui nome si ottiene da quelle descritte in
+tab.~\ref{tab:sys_file_macro} e tab.~\ref{tab:sys_posix1_file} con la stessa
+convenzione già vista con \func{sysconf}, ma un questo caso con l'uso del
+suffisso ``\texttt{\_PC\_}''.
+
+In questo caso la funzione richiede anche un secondo argomento \param{path}
+che specifichi a quale file si fa riferimento, dato che il valore del limite
+cercato può variare a seconda del filesystem su cui si trova il file. Una
+seconda versione della funzione, \funcd{fpathconf}, opera su un file
+descriptor invece che su un \textit{pathname}, il suo prototipo è:
+
+\begin{funcproto}{
+\fhead{unistd.h}
+\fdecl{long fpathconf(int fd, int name)}
+\fdesc{Restituisce il valore di un parametro dei file.}
+}
+
+{È identica a \func{pathconf} solo che utilizza un file descriptor invece di
+ un \textit{pathname}; pertanto gli errori restituiti in \var{errno} cambiano
+ di conseguenza.}
+\end{funcproto}
+\noindent ed il suo comportamento è identico a quello di \func{pathconf} a
+parte quello di richiedere l'indicazione di un file descriptor
+nell'argomento \param{fd}.
+
+
+
+\subsection{I parametri del kernel ed il filesystem \texttt{/proc}}
+\label{sec:sys_sysctl}
+
+Tradizionalmente la funzione che permette la lettura ed l'impostazione dei
+parametri del sistema è \funcm{sysctl}. Si tratta di una funzione derivata da
+BSD4.4 ed introdotta su Linux a partire dal kernel 1.3.57, ma oggi il suo uso
+è totalmente deprecato. Una \textit{system call} \funcm{\_sysctl} continua ad
+esistere, ma non dispone più di una interfaccia nella \acr{glibc} ed il suo
+utilizzo può essere effettuato solo tramite \func{syscall}, ma di nuovo questo
+viene sconsigliato in quanto la funzionalità non è più mantenuta e molto
+probabilmente sarà rimossa nel prossimo futuro. Per questo motivo eviteremo di
+trattarne i particolari.
+
+Lo scopo di \funcm{sysctl} era quello di fornire ai programmi una modalità per
+modificare i parametri di sistema. Questi erano organizzati in maniera
+gerarchica all'interno di un albero e per accedere a ciascuno di essi
+occorreva specificare un percorso attraverso i vari nodi dell'albero, in
+maniera analoga a come avviene per la risoluzione di un \textit{pathname}.
+
+I parametri accessibili e modificabili attraverso questa funzione sono
+moltissimi, dipendendo anche dallo stato corrente del kernel, ad esempio dai
+moduli che sono stati caricati nel sistema. Inoltre non essendo standardizzati
+i loro nomi possono variare da una versione di kernel all'altra, alcuni esempi
+di questi parametri sono:
+\begin{itemize*}
+\item il nome di dominio
+\item i parametri del meccanismo di \textit{paging}.
+\item il filesystem montato come radice
+\item la data di compilazione del kernel
+\item i parametri dello stack TCP
+\item il numero massimo di file aperti
+\end{itemize*}