X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=system.tex;h=310cd85d9236dbb81af68763d52ab5bdae5a3887;hp=64ac8c9e36897a252f6b8e66c21ba7534509f716;hb=5af27a7a0ed59f8684593f0c2b300b81576351b0;hpb=c21ecd755b45e99ed8b1524e03444bf189bfcc06 diff --git a/system.tex b/system.tex index 64ac8c9..310cd85 100644 --- a/system.tex +++ b/system.tex @@ -10,7 +10,7 @@ e degli errori. -\section{La lettura delle caratteristiche del sistema} +\section{Capacità e caratteristiche del sistema} \label{sec:sys_characteristics} In questa sezione tratteremo le varie modalità con cui un programma può @@ -21,11 +21,11 @@ l'architettura hardware, l'implementazione del kernel e delle librerie, le opzioni di configurazione. La definizione di queste caratteristiche ed il tentativo di provvedere dei -meccanismi generali che i programmi potessero usare per ricavarle è uno degli +meccanismi generali che i programmi possono usare per ricavarle è uno degli aspetti più complessi e controversi con cui le diverse standardizzazioni si sono dovute confrontare, spesso con risultati spesso tutt'altro che chiari. -Proveremo comunque a dare una descrizione dei principali metodi previsti dai -vari standard per ricavare sia le caratteristiche specifiche del sistema, che +Daremo comunque una descrizione dei principali metodi previsti dai vari +standard per ricavare sia le caratteristiche specifiche del sistema, che quelle della gestione dei file. @@ -388,19 +388,20 @@ riportate in \tabref{tab:sys_file_macro}. \begin{table}[htb] \centering \footnotesize - \begin{tabular}[c]{|l|r|p{8cm}|} + \begin{tabular}[c]{|l|r|l|} \hline \textbf{Macro}&\textbf{Valore}&\textbf{Significato}\\ \hline \hline - \macro{NAME\_MAX}& 14 & lunghezza in byte di un nome di file. \\ - \macro{PATH\_MAX}& 256 & lunghezza in byte di pathname.\\ - \macro{PIPE\_BUF}&4096 & byte scrivibili atomicamente in una pipe\\ \macro{LINK\_MAX} &8 & numero massimo di link a un file\\ - \macro{MAX\_CANON}&255 & spazio disponibile nella coda di input - canonica del terminale\\ + \macro{NAME\_MAX}& 14 & lunghezza in byte di un nome di file. \\ + \macro{PATH\_MAX}& 256 & lunghezza in byte di un pathname.\\ + \macro{PIPE\_BUF}&4096 & byte scrivibili atomicamente in una pipe + (vedi \secref{sec:ipc_pipes}).\\ + \macro{MAX\_CANON}&255 & dimensione di una riga di terminale in modo + canonico (vedi \secref{sec:term_design}).\\ \macro{MAX\_INPUT}&255 & spazio disponibile nella coda di input - del terminale\\ + del terminale (vedi \secref{sec:term_design}).\\ \hline \end{tabular} \caption{Macro per i limiti sulle caratteristiche dei file.} @@ -416,21 +417,20 @@ analoghe di \tabref{tab:sys_posix1_general}. \begin{table}[htb] \centering \footnotesize - \begin{tabular}[c]{|l|r|p{8cm}|} + \begin{tabular}[c]{|l|r|l|} \hline \textbf{Macro}&\textbf{Valore}&\textbf{Significato}\\ \hline \hline - \textbf{Macro}&\textbf{Valore}&\textbf{Significato}\\ - \macro{\_POSIX\_LINK\_MAX} &8 & numero massimo di link a un file\\ - \macro{\_POSIX\_MAX\_CANON}&255 & spazio disponibile nella coda di input - canonica del terminale\\ - \macro{\_POSIX\_MAX\_INPUT}&255 & spazio disponibile nella coda di input - del terminale\\ + \macro{\_POSIX\_LINK\_MAX} &8 & numero massimo di link a un file.\\ \macro{\_POSIX\_NAME\_MAX}& 14 & lunghezza in byte di un nome di file. \\ - \macro{\_POSIX\_PATH\_MAX}& 256 & lunghezza in byte di pathname.\\ + \macro{\_POSIX\_PATH\_MAX}& 256 & lunghezza in byte di un pathname.\\ \macro{\_POSIX\_PIPE\_BUF}& 512 & byte scrivibili atomicamente in una - pipe\\ + pipe.\\ + \macro{\_POSIX\_MAX\_CANON}&255 & dimensione di una riga di + terminale in modo canonico.\\ + \macro{\_POSIX\_MAX\_INPUT}&255 & spazio disponibile nella coda di input + del terminale.\\ % \macro{\_POSIX\_MQ\_OPEN\_MAX}& 8& \\ % \macro{\_POSIX\_MQ\_PRIO\_MAX}& 32& \\ % \macro{\_POSIX\_FD\_SETSIZE}& 16 & \\ @@ -569,8 +569,6 @@ sistema l'implementazione è specifica di Linux; il suo prototipo è: \begin{functions} \headdecl{unistd.h} -\headdecl{linux/unistd.h} -\headdecl{linux/sysctl.h} \funcdecl{int sysctl(int *name, int nlen, void *oldval, size\_t *oldlenp, void *newval, size\_t newlen)} @@ -579,13 +577,13 @@ Legge o scrive uno dei parametri di sistema. \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di errore, nel qual caso \var{errno} assumerà uno dei valori: \begin{errlist} - \item[\macro{EPERM}] il processo non ha il permesso di accedere ad uno dei - componenti nel cammino specificato per il parametro, o non ha il permesso - di accesso al parametro nella modalità scelta. + \item[\macro{EPERM}] non si ha il permesso di accedere ad uno dei componenti + nel cammino specificato per il parametro, o di accedere al parametro nella + modalità scelta. \item[\macro{ENOTDIR}] non esiste un parametro corrispondente al nome \param{name}. - \item[\macro{EFAULT}] si è specificato \param{oldlenp} zero quando - \param{oldval} è non nullo. +% \item[\macro{EFAULT}] si è specificato \param{oldlenp} zero quando +% \param{oldval} è non nullo. \item[\macro{EINVAL}] o si è specificato un valore non valido per il parametro che si vuole impostare o lo spazio provvisto per il ritorno di un valore non è delle giuste dimensioni. @@ -593,14 +591,19 @@ Legge o scrive uno dei parametri di sistema. quando non si è specificato sufficiente spazio per ricevere il valore di un parametro. \end{errlist} + ed inoltre \macro{EFAULT}. } \end{functions} I parametri a cui la funzione permettere di accedere sono organizzati in -maniera gerarchica all'interno un albero; per accedere ad uno di essi occorre -specificare un cammino attraverso i vari nodi dell'albero, in maniera analoga -a come avviene per la risoluzione di un pathname (da cui l'uso alternativo del -filesystem \file{/proc}, che vedremo dopo). +maniera gerarchica all'interno un albero;\footnote{si tenga presente che + includendo solo \file{unistd.h}, saranno definiti solo i parametri generici; + dato che ce ne sono molti specifici dell'implementazione, nel caso di Linux + occorrerà includere anche i file \file{linux/unistd.h} e + \file{linux/sysctl.h}.} per accedere ad uno di essi occorre specificare un +cammino attraverso i vari nodi dell'albero, in maniera analoga a come avviene +per la risoluzione di un pathname (da cui l'uso alternativo del filesystem +\file{/proc}, che vedremo dopo). Ciascun nodo dell'albero è identificato da un valore intero, ed il cammino che arriva ad identificare un parametro specifico è passato alla funzione