X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=system.tex;h=664c26afc4bc375b48f00bbfa8e42135b19e5e43;hp=e69639be2fae01f47e4ee8ea13a34a865f5b15e6;hb=50b469ec4e7bba4d52eaaa51edd77b18967079c2;hpb=46f04a7875f34640b75aab2d5163ea86afe1bf71 diff --git a/system.tex b/system.tex index e69639b..664c26a 100644 --- a/system.tex +++ b/system.tex @@ -1,6 +1,6 @@ %% system.tex %% -%% Copyright (C) 2000-2009 Simone Piccardi. Permission is granted to +%% Copyright (C) 2000-2010 Simone Piccardi. Permission is granted to %% copy, distribute and/or modify this document under the terms of the GNU Free %% Documentation License, Version 1.1 or any later version published by the %% Free Software Foundation; with the Invariant Sections being "Un preambolo", @@ -528,9 +528,9 @@ fig.~\ref{fig:sys_utsname}, solo definendo \macro{\_GNU\_SOURCE}. \label{fig:sys_utsname} \end{figure} -In generale si tenga presente che le dimensioni delle stringe di una -\struct{utsname} non è specificata, e che esse sono sempre terminate con NUL; -il manuale delle \acr{glibc} indica due diverse dimensioni, +In generale si tenga presente che le dimensioni delle stringhe di una +struttura \struct{utsname} non è specificata, e che esse sono sempre terminate +con NUL; il manuale delle \acr{glibc} indica due diverse dimensioni, \const{\_UTSNAME\_LENGTH} per i campi standard e \const{\_UTSNAME\_DOMAIN\_LENGTH} per quello specifico per il nome di dominio; altri sistemi usano nomi diversi come \const{SYS\_NMLN} o \const{\_SYS\_NMLN} @@ -559,6 +559,7 @@ lettura. Affronteremo questi argomenti in questa sezione, insieme alle funzioni che si usano per il controllo di altre caratteristiche generali del sistema, come quelle per la gestione dei filesystem e di utenti e gruppi. +% TODO ristrutturare e aggiungere \func{prctl} \subsection{La funzione \func{sysctl} ed il filesystem \file{/proc}} \label{sec:sys_sysctl} @@ -661,8 +662,8 @@ inclusa nei sorgenti del kernel, nella directory \file{Documentation/sysctl}. Ma oltre alle informazioni ottenibili da \func{sysctl} dentro \file{proc} sono disponibili moltissime altre informazioni, fra cui ad esempio anche quelle -fornite da \func{uname} (vedi sez.~\ref{sec:sys_config}) che sono mantenute -nei file \procrelfile{/proc/sys/kernel}{ostype}, +fornite da \func{uname} (vedi sez.~\ref{sec:sys_uname}) che sono mantenute nei +file \procrelfile{/proc/sys/kernel}{ostype}, \procrelfile{/proc/sys/kernel}{hostname}, \procrelfile{/proc/sys/kernel}{osrelease}, \procrelfile{/proc/sys/kernel}{version} e @@ -922,9 +923,16 @@ semplice invocare direttamente il programma \cmd{mount}, per cui ne tralasceremo la trattazione, rimandando al manuale delle \acr{glibc} \cite{glibc} per la documentazione completa. +% TODO scrivere relativamente alle varie funzioni (getfsent e getmntent &C) +% TODO documentare swapon e swapoff (man 2 ...) + + +% TODO documentare keyctl ???? +% (fare sezione dedicata ????) +%\subsection{La gestione delle chiavi} +%\label{sec:keyctl_management} -% TODO scrivere relativamente alle varie funzioni (getfsent e getmntent &C) \subsection{La gestione delle informazioni su utenti e gruppi} \label{sec:sys_user_group} @@ -1643,12 +1651,13 @@ Nello specificare un limite, oltre a fornire dei valori specifici, si pu anche usare la costante \const{RLIM\_INFINITY} che permette di sbloccare l'uso di una risorsa; ma si ricordi che solo un processo con i privilegi di amministratore\footnote{per essere precisi in questo caso quello che serve è - la \itindex{capabilities} \textit{capability} \const{CAP\_SYS\_RESOURCE}.} -può innalzare un limite al di sopra del valore corrente del limite massimo ed -usare un valore qualsiasi per entrambi i limiti. Si tenga conto infine che -tutti i limiti vengono ereditati dal processo padre attraverso una \func{fork} -(vedi sez.~\ref{sec:proc_fork}) e mantenuti per gli altri programmi eseguiti -attraverso una \func{exec} (vedi sez.~\ref{sec:proc_exec}). + la \itindex{capabilities} \textit{capability} \const{CAP\_SYS\_RESOURCE} + (vedi sez.~\ref{sec:proc_capabilities}).} può innalzare un limite al di +sopra del valore corrente del limite massimo ed usare un valore qualsiasi per +entrambi i limiti. Si tenga conto infine che tutti i limiti vengono ereditati +dal processo padre attraverso una \func{fork} (vedi sez.~\ref{sec:proc_fork}) +e mantenuti per gli altri programmi eseguiti attraverso una \func{exec} (vedi +sez.~\ref{sec:proc_exec}). \subsection{Le risorse di memoria e processore} @@ -1804,6 +1813,10 @@ minimo indicato dal secondo valore (sempre in percentuale di spazio disco libero). Infine l'ultimo valore indica la frequenza in secondi con cui deve essere controllata detta percentuale. +% TODO trattare quote disco +% vedi man quotactl +%\section{La gestione delle quote disco} +%\label{sec:disk_quota} @@ -1823,10 +1836,10 @@ gestione di data e ora. Storicamente i sistemi unix-like hanno sempre mantenuto due distinti tipi di dati per la misure dei tempi all'interno del sistema: essi sono -rispettivamente chiamati \itindend{calendar~time} \textit{calendar time} e +rispettivamente chiamati \itindex{calendar~time} \textit{calendar time} e \itindex{process~time} \textit{process time}, secondo le definizioni: \begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}} -\item[\textit{calendar time}] \itindend{calendar~time} detto anche +\item[\textit{calendar time}] \itindex{calendar~time} detto anche \textsl{tempo di calendario}. È il numero di secondi dalla mezzanotte del primo gennaio 1970, in tempo universale coordinato (o UTC), data che viene usualmente indicata con 00:00:00 Jan, 1 1970 (UTC) e chiamata \textit{the @@ -1851,7 +1864,7 @@ rispettivamente chiamati \itindend{calendar~time} \textit{calendar time} e obsoleto. \end{basedescript} -In genere si usa il \itindend{calendar~time} \textit{calendar time} per +In genere si usa il \itindex{calendar~time} \textit{calendar time} per esprimere le date dei file e le informazioni analoghe che riguardano i cosiddetti \textsl{tempi di orologio}, che vengono usati ad esempio per i demoni che compiono lavori amministrativi ad ore definite, come \cmd{cron}. @@ -1899,7 +1912,7 @@ del comando \cmd{time}. \itindbeg{process~time} Di norma tutte le operazioni del sistema fanno sempre riferimento al -\itindend{calendar~time} \textit{calendar time}, l'uso del \textit{process +\itindex{calendar~time} \textit{calendar time}, l'uso del \textit{process time} è riservato a quei casi in cui serve conoscere i tempi di esecuzione di un processo (ad esempio per valutarne l'efficienza). In tal caso infatti fare ricorso al \textit{calendar time} è inutile in quanto il tempo può essere @@ -1977,7 +1990,10 @@ lo stato di terminazione di tutti i suoi figli, questi processi \itindbeg{calendar~time} Come anticipato in sez.~\ref{sec:sys_unix_time} il \textit{calendar time} è -mantenuto dal kernel in una variabile di tipo \type{time\_t}, che usualmente +mantenuto dal kernel in una variabile di tipo \type{time\_t},\footnote{in + realtà il kernel usa una rappresentazione interna di che fornisce una + precisione molto maggiore, e consente per questo anche di usare + rappresentazioni diverse del \textit{calendar time}.} che usualmente corrisponde ad un tipo elementare (in Linux è definito come \ctyp{long int}, che di norma corrisponde a 32 bit). Il valore corrente del \textit{calendar time}, che indicheremo come \textsl{tempo di sistema}, può essere ottenuto @@ -2033,30 +2049,19 @@ sono: \errval{EPERM}.} \end{functions} -Queste funzioni utilizzano una struttura di tipo \struct{timeval}, la cui -definizione, insieme a quella della analoga \struct{timespec}, è riportata in -fig.~\ref{fig:sys_timeval_struct}. Le \acr{glibc} infatti forniscono queste due -rappresentazioni alternative del \textit{calendar time} che rispetto a -\type{time\_t} consentono rispettivamente precisioni del microsecondo e del -nanosecondo.\footnote{la precisione è solo teorica, la precisione reale della - misura del tempo dell'orologio di sistema non dipende dall'uso di queste - strutture.} - -\begin{figure}[!htb] - \footnotesize \centering - \begin{minipage}[c]{15cm} - \includestruct{listati/timeval.h} - \end{minipage} - \normalsize - \caption{Le strutture \structd{timeval} e \structd{timespec} usate per una - rappresentazione ad alta risoluzione del \textit{calendar time}.} - \label{fig:sys_timeval_struct} -\end{figure} +Si noti come queste funzioni utilizzino per indicare il tempo una struttura di +tipo \struct{timeval}, la cui definizione si è già vista in +fig.~\ref{fig:sys_timeval_struct}, questa infatti permette una espressione +alternativa dei valori del \textit{calendar time}, con una precisione, +rispetto a \type{time\_t}, fino al microsecondo.\footnote{la precisione è solo + teorica, la precisione reale della misura del tempo dell'orologio di sistema + non dipende dall'uso di queste strutture.} Come nel caso di \func{stime} anche \func{settimeofday} (la cosa continua a valere per qualunque funzione che vada a modificare l'orologio di sistema, quindi anche per quelle che tratteremo in seguito) può essere utilizzata solo -da un processo coi privilegi di amministratore. +da un processo coi privilegi di amministratore.\footnote{più precisamente la + capabitity \const{CAP\_SYS\_TIME}.} Il secondo argomento di entrambe le funzioni è una struttura \struct{timezone}, che storicamente veniva utilizzata per specificare appunto