X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=prochand.tex;h=df04b61f1d8b7991327fb2e8bb87655bd2abc73b;hb=b0791722f0c81dc696b6396dfdc63e000468a6a7;hp=1ac1ff840771d2b79f4773f06a5aa433ed29d406;hpb=3df183084e018a511962a5bac04fe4f8dffa4008;p=gapil.git diff --git a/prochand.tex b/prochand.tex index 1ac1ff8..df04b61 100644 --- a/prochand.tex +++ b/prochand.tex @@ -155,7 +155,8 @@ periodico secondo la frequenza specificata dalla costante \const{HZ},\footnote{fino al kernel 2.4 il valore usuale di questa costante era 100, per tutte le architetture eccetto l'alpha, per la quale era 1000, nel 2.6 è stato portato a 1000 su tutte le architetture; occorre fare - attenzione a non confondere questo valore con quello dei clock tick (vedi + attenzione a non confondere questo valore con quello dei + \itindex{clock~tick} \textit{clock tick} (vedi sez.~\ref{sec:sys_unix_time}).} definita in \file{asm/param.h}, ed il cui valore è espresso in Hertz.\footnote{a partire dal kernel 2.6.21 è stato introdotto (a cura di Ingo Molnar) un meccanismo completamente diverso, @@ -914,18 +915,18 @@ sono riportate anche le costanti definite per indicare alcuni di essi. \textbf{Valore} & \textbf{Costante} &\textbf{Significato}\\ \hline \hline - $<-1$& -- & attende per un figlio il cui + $<-1$& -- & Attende per un figlio il cui \itindex{process~group} \textit{process group} (vedi sez.~\ref{sec:sess_proc_group}) è uguale al valore assoluto di \param{pid}. \\ - $-1$&\const{WAIT\_ANY} & attende per un figlio qualsiasi, usata in + $-1$&\const{WAIT\_ANY} & Attende per un figlio qualsiasi, usata in questa maniera senza specificare nessuna opzione è equivalente a \func{wait}.\\ - $ 0$&\const{WAIT\_MYPGRP}&attende per un figlio il cui + $ 0$&\const{WAIT\_MYPGRP}&Attende per un figlio il cui \itindex{process~group} \textit{process group} (vedi sez.~\ref{sec:sess_proc_group}) è uguale a quello del processo chiamante. \\ - $>0$& -- & attende per un figlio il cui \acr{pid} è uguale + $>0$& -- & Attende per un figlio il cui \acr{pid} è uguale al valore di \param{pid}.\\ \hline \end{tabular} @@ -957,10 +958,10 @@ valore nullo anzich \textbf{Macro} & \textbf{Descrizione}\\ \hline \hline - \const{WNOHANG} & la funzione ritorna immediatamente anche se non è + \const{WNOHANG} & La funzione ritorna immediatamente anche se non è terminato nessun processo figlio. \\ - \const{WUNTRACED} & ritorna anche se un processo figlio è stato fermato. \\ - \const{WCONTINUED}& ritorna anche quando un processo figlio che era stato + \const{WUNTRACED} & Ritorna anche se un processo figlio è stato fermato. \\ + \const{WCONTINUED}& Ritorna anche quando un processo figlio che era stato fermato ha ripreso l'esecuzione.\footnotemark \\ \hline \end{tabular} @@ -1055,36 +1056,36 @@ presente che queste macro prendono come parametro la variabile di tipo \textbf{Macro} & \textbf{Descrizione}\\ \hline \hline - \macro{WIFEXITED(s)} & condizione vera (valore non nullo) per un processo + \macro{WIFEXITED(s)} & Condizione vera (valore non nullo) per un processo figlio che sia terminato normalmente. \\ - \macro{WEXITSTATUS(s)} & restituisce gli otto bit meno significativi dello + \macro{WEXITSTATUS(s)} & Restituisce gli otto bit meno significativi dello stato di uscita del processo (passato attraverso \func{\_exit}, \func{exit} o come valore di ritorno di \func{main}); può essere valutata solo se \val{WIFEXITED} ha restituito un valore non nullo.\\ - \macro{WIFSIGNALED(s)} & condizione vera se il processo figlio è terminato + \macro{WIFSIGNALED(s)} & Condizione vera se il processo figlio è terminato in maniera anomala a causa di un segnale che non è stato catturato (vedi sez.~\ref{sec:sig_notification}).\\ - \macro{WTERMSIG(s)} & restituisce il numero del segnale che ha causato + \macro{WTERMSIG(s)} & Restituisce il numero del segnale che ha causato la terminazione anomala del processo; può essere valutata solo se \val{WIFSIGNALED} ha restituito un valore non nullo.\\ - \macro{WCOREDUMP(s)} & vera se il processo terminato ha generato un + \macro{WCOREDUMP(s)} & Vera se il processo terminato ha generato un file di \itindex{core~dump} \textit{core dump}; può essere valutata solo se \val{WIFSIGNALED} ha restituito un valore non nullo.\footnotemark \\ - \macro{WIFSTOPPED(s)} & vera se il processo che ha causato il ritorno di + \macro{WIFSTOPPED(s)} & Vera se il processo che ha causato il ritorno di \func{waitpid} è bloccato; l'uso è possibile solo con \func{waitpid} avendo specificato l'opzione \const{WUNTRACED}.\\ - \macro{WSTOPSIG(s)} & restituisce il numero del segnale che ha bloccato + \macro{WSTOPSIG(s)} & Restituisce il numero del segnale che ha bloccato il processo; può essere valutata solo se \val{WIFSTOPPED} ha restituito un valore non nullo. \\ - \macro{WIFCONTINUED(s)}& vera se il processo che ha causato il ritorno è + \macro{WIFCONTINUED(s)}& Vera se il processo che ha causato il ritorno è stato riavviato da un \const{SIGCONT}.\footnotemark \\ \hline @@ -1149,14 +1150,14 @@ primo, quale processo o quale gruppo di processi selezionare. \textbf{Macro} & \textbf{Descrizione}\\ \hline \hline - \const{P\_PID} & indica la richiesta di attendere per un processo figlio + \const{P\_PID} & Indica la richiesta di attendere per un processo figlio il cui \acr{pid} corrisponda al valore dell'argomento \param{id}.\\ - \const{P\_PGID}& indica la richiesta di attendere per un processo figlio + \const{P\_PGID}& Indica la richiesta di attendere per un processo figlio appartenente al \textit{process group} (vedi sez.~\ref{sec:sess_proc_group}) il cui \acr{pgid} corrisponda al valore dell'argomento \param{id}.\\ - \const{P\_ALL} & indica la richiesta di attendere per un processo figlio + \const{P\_ALL} & Indica la richiesta di attendere per un processo figlio generico, il valore dell'argomento \param{id} viene ignorato.\\ \hline @@ -1186,15 +1187,15 @@ nuovo riceverne lo stato. \textbf{Macro} & \textbf{Descrizione}\\ \hline \hline - \const{WEXITED} & ritorna quando un processo figlio è terminato. \\ - \const{WNOHANG} & ritorna immediatamente anche se non c'è niente da - notificare. \\ - \const{WSTOPPED} & ritorna quando un processo figlio è stato fermato. \\ - \const{WCONTINUED}& ritorna quando un processo figlio che era stato - fermato ha ripreso l'esecuzione. \\ - \const{WNOWAIT} & lascia il processo ancora in attesa di ricezione, così + \const{WEXITED} & Ritorna quando un processo figlio è terminato.\\ + \const{WNOHANG} & Ritorna immediatamente anche se non c'è niente da + notificare.\\ + \const{WSTOPPED} & Ritorna quando un processo figlio è stato fermato.\\ + \const{WCONTINUED}& Ritorna quando un processo figlio che era stato + fermato ha ripreso l'esecuzione.\\ + \const{WNOWAIT} & Lascia il processo ancora in attesa di ricezione, così che una successiva chiamata possa di nuovo riceverne - lo stato. \\ + lo stato.\\ \hline \end{tabular} \caption{Costanti che identificano i bit dell'argomento \param{options} @@ -1471,8 +1472,8 @@ condivise, viene lanciato il \textit{linker} dinamico \cmd{/lib/ld.so} prima del programma per caricare le librerie necessarie ed effettuare il link dell'eseguibile. Se il programma è in formato ELF per caricare le librerie dinamiche viene usato l'interprete indicato nel segmento \const{PT\_INTERP}, -in genere questo è \file{/lib/ld-linux.so.1} per programmi collegati con le -\acr{libc5}, e \file{/lib/ld-linux.so.2} per programmi collegati con le +in genere questo è \sysfile{/lib/ld-linux.so.1} per programmi collegati con le +\acr{libc5}, e \sysfile{/lib/ld-linux.so.2} per programmi collegati con le \acr{glibc}. Infine nel caso il file sia uno script esso deve iniziare con una linea nella @@ -1516,16 +1517,18 @@ Come accennato in sez.~\ref{sec:intro_multiuser} il modello base\footnote{in realtà già esistono estensioni di questo modello base, che lo rendono più flessibile e controllabile, come le \itindex{capabilities} \textit{capabilities} illustrate in sez.~\ref{sec:proc_capabilities}, le ACL - per i file o il \itindex{Mandatory~Access~Control~(MAC)} \textit{Mandatory - Access Control} di SELinux; inoltre basandosi sul lavoro effettuato con + per i file (vedi sez.~\ref{sec:file_ACL}) o il + \itindex{Mandatory~Access~Control~(MAC)} \textit{Mandatory Access Control} + di \index{SELinux} SELinux; inoltre basandosi sul lavoro effettuato con SELinux, a partire dal kernel 2.5.x, è iniziato lo sviluppo di una - infrastruttura di sicurezza, il \textit{Linux Security Modules}, o LSM, in - grado di fornire diversi agganci a livello del kernel per modularizzare - tutti i possibili controlli di accesso.} di sicurezza di un sistema -unix-like è fondato sui concetti di utente e gruppo, e sulla separazione fra -l'amministratore (\textsl{root}, detto spesso anche \textit{superuser}) che -non è sottoposto a restrizioni, ed il resto degli utenti, per i quali invece -vengono effettuati i vari controlli di accesso. + infrastruttura di sicurezza, i \itindex{Linux~Security~Modules} + \textit{Linux Security Modules}, o LSM, in grado di fornire diversi agganci + a livello del kernel per modularizzare tutti i possibili controlli di + accesso.} di sicurezza di un sistema unix-like è fondato sui concetti di +utente e gruppo, e sulla separazione fra l'amministratore (\textsl{root}, +detto spesso anche \textit{superuser}) che non è sottoposto a restrizioni, ed +il resto degli utenti, per i quali invece vengono effettuati i vari controlli +di accesso. Abbiamo già accennato come il sistema associ ad ogni utente e gruppo due identificatori univoci, lo user-ID ed il group-ID; questi servono al kernel per @@ -1562,27 +1565,27 @@ tab.~\ref{tab:proc_uid_gid}. \hline \hline \acr{uid} & \textit{real} & \textsl{user-ID reale} - & indica l'utente che ha lanciato il programma\\ + & Indica l'utente che ha lanciato il programma.\\ \acr{gid} & '' &\textsl{group-ID reale} - & indica il gruppo principale dell'utente che ha lanciato - il programma \\ + & Indica il gruppo principale dell'utente che ha lanciato + il programma.\\ \hline \acr{euid} & \textit{effective} &\textsl{user-ID effettivo} - & indica l'utente usato nel controllo di accesso \\ + & Indica l'utente usato nel controllo di accesso.\\ \acr{egid} & '' & \textsl{group-ID effettivo} - & indica il gruppo usato nel controllo di accesso \\ + & Indica il gruppo usato nel controllo di accesso.\\ -- & -- & \textsl{group-ID supplementari} - & indicano gli ulteriori gruppi cui l'utente appartiene \\ + & Indicano gli ulteriori gruppi cui l'utente appartiene.\\ \hline -- & \textit{saved} & \textsl{user-ID salvato} - & è una copia dell'\acr{euid} iniziale\\ + & È una copia dell'\acr{euid} iniziale.\\ -- & '' & \textsl{group-ID salvato} - & è una copia dell'\acr{egid} iniziale \\ + & È una copia dell'\acr{egid} iniziale.\\ \hline \acr{fsuid} & \textit{filesystem} &\textsl{user-ID di filesystem} - & indica l'utente effettivo per l'accesso al filesystem \\ + & Indica l'utente effettivo per l'accesso al filesystem. \\ \acr{fsgid} & '' & \textsl{group-ID di filesystem} - & indica il gruppo effettivo per l'accesso al filesystem \\ + & Indica il gruppo effettivo per l'accesso al filesystem.\\ \hline \end{tabular} \caption{Identificatori di utente e gruppo associati a ciascun processo con @@ -1721,12 +1724,12 @@ il programma, effettuare il lavoro che non necessita di privilegi aggiuntivi, ed eventualmente tornare indietro. Come esempio per chiarire l'uso di queste funzioni prendiamo quello con cui -viene gestito l'accesso al file \file{/var/log/utmp}. In questo file viene +viene gestito l'accesso al file \sysfile{/var/log/utmp}. In questo file viene registrato chi sta usando il sistema al momento corrente; chiaramente non può essere lasciato aperto in scrittura a qualunque utente, che potrebbe falsificare la registrazione. Per questo motivo questo file (e l'analogo -\file{/var/log/wtmp} su cui vengono registrati login e logout) appartengono ad -un gruppo dedicato (\acr{utmp}) ed i programmi che devono accedervi (ad +\sysfile{/var/log/wtmp} su cui vengono registrati login e logout) appartengono +ad un gruppo dedicato (\acr{utmp}) ed i programmi che devono accedervi (ad esempio tutti i programmi di terminale in X, o il programma \cmd{screen} che crea terminali multipli su una console) appartengono a questo gruppo ed hanno il bit \acr{sgid} impostato. @@ -1740,8 +1743,8 @@ situazione degli identificatori \textsl{group-ID salvato} &=& \textrm{\acr{utmp}} \end{eqnarray*} in questo modo, dato che il \textsl{group-ID effettivo} è quello giusto, il -programma può accedere a \file{/var/log/utmp} in scrittura ed aggiornarlo. A -questo punto il programma può eseguire una \code{setgid(getgid())} per +programma può accedere a \sysfile{/var/log/utmp} in scrittura ed aggiornarlo. +A questo punto il programma può eseguire una \code{setgid(getgid())} per impostare il \textsl{group-ID effettivo} a quello dell'utente (e dato che il \textsl{group-ID reale} corrisponde la funzione avrà successo), in questo modo non sarà possibile lanciare dal terminale programmi che modificano detto file, @@ -1754,7 +1757,7 @@ in tal caso infatti la situazione degli identificatori sarebbe: \end{eqnarray*} e ogni processo lanciato dal terminale avrebbe comunque \acr{gid} come \textsl{group-ID effettivo}. All'uscita dal terminale, per poter di nuovo -aggiornare lo stato di \file{/var/log/utmp} il programma eseguirà una +aggiornare lo stato di \sysfile{/var/log/utmp} il programma eseguirà una \code{setgid(utmp)} (dove \var{utmp} è il valore numerico associato al gruppo \acr{utmp}, ottenuto ad esempio con una precedente \func{getegid}), dato che in questo caso il valore richiesto corrisponde al \textsl{group-ID salvato} la @@ -1765,7 +1768,7 @@ funzione avr \textsl{group-ID effettivo} &=& \textrm{\acr{utmp}} \\ \textsl{group-ID salvato} &=& \textrm{\acr{utmp} (invariato)} \end{eqnarray*} -consentendo l'accesso a \file{/var/log/utmp}. +consentendo l'accesso a \sysfile{/var/log/utmp}. Occorre però tenere conto che tutto questo non è possibile con un processo con i privilegi di amministratore, in tal caso infatti l'esecuzione di una @@ -2055,7 +2058,7 @@ un utente specifico, si pu \end{functions} La funzione esegue la scansione del database dei gruppi (usualmente -\file{/etc/groups}) cercando i gruppi di cui è membro l'utente \param{user} +\conffile{/etc/group}) cercando i gruppi di cui è membro l'utente \param{user} con cui costruisce una lista di gruppi supplementari, a cui aggiunge anche \param{group}, infine imposta questa lista per il processo corrente usando \func{setgroups}. Si tenga presente che sia \func{setgroups} che @@ -2109,12 +2112,12 @@ eseguibili,\footnote{una descrizione sommaria di questa funzionalit ma non essendo implementata non ne tratteremo qui.} in modo da poter stabilire quali capacità possono essere utilizzate quando viene messo in esecuzione uno specifico programma; attualmente però questa funzionalità non è -implementata.\footnote{per attualmente si intende fino al kernel 2.6.13, e - finora non è disponibile al momento neanche presente nessuna realizzazione - sperimentale delle specifiche POSIX.1e, anche se esistono dei patch di - sicurezza del kernel, come LIDS (vedi - \href{http://www.lids.org}{\texttt{http://www.lids.org/})} che realizzano - qualcosa di simile.} +implementata.\footnote{per attualmente si intende fino al kernel 2.6.23; + benché l'infrastruttura per crearla sia presente (vedi anche + sez.~\ref{sec:file_xattr}) finora non è disponibile nessuna realizzazione + delle specifiche POSIX.1e, esistono però dei patch di sicurezza del kernel, + come LIDS (vedi \href{http://www.lids.org}{\texttt{http://www.lids.org/})} + che realizzano qualcosa di simile.} \begin{table}[!h!bt] @@ -2128,10 +2131,10 @@ implementata.\footnote{per attualmente si intende fino al kernel 2.6.13, e % % POSIX-draft defined capabilities. % - \const{CAP\_CHOWN} & la capacità di cambiare proprietario e gruppo + \const{CAP\_CHOWN} & La capacità di cambiare proprietario e gruppo proprietario di un file (vedi sez.~\ref{sec:file_ownership_management}).\\ - \const{CAP\_DAC\_OVERRIDE}& la capacità di evitare il controllo dei + \const{CAP\_DAC\_OVERRIDE}& La capacità di evitare il controllo dei permessi di lettura, scrittura ed esecuzione dei file, (vedi sez.~\ref{sec:file_access_control}) caratteristici del modello classico del @@ -2139,11 +2142,11 @@ implementata.\footnote{per attualmente si intende fino al kernel 2.6.13, e \itindex{Discrectionary~Access~Control~(DAC)} \textit{Discrectionary Access Control} (da cui il nome DAC).\\ - \const{CAP\_DAC\_READ\_SEARCH}& la capacità di evitare il controllo dei + \const{CAP\_DAC\_READ\_SEARCH}& La capacità di evitare il controllo dei permessi di lettura, scrittura ed esecuzione per le directory (vedi sez.~\ref{sec:file_access_control}).\\ - \const{CAP\_FOWNER} & la capacità di evitare il controllo che + \const{CAP\_FOWNER} & La capacità di evitare il controllo che l'user-ID effettivo del processo (o meglio il \textit{filesystem user-ID}, vedi sez.~\ref{sec:proc_setuid}) coincida con @@ -2164,7 +2167,7 @@ implementata.\footnote{per attualmente si intende fino al kernel 2.6.13, e \func{open} e \func{fcntl} (vedi sez.~\ref{sec:file_open} e sez.~\ref{sec:file_fcntl}).\\ - \const{CAP\_FSETID} & la capacità di evitare la cancellazione + \const{CAP\_FSETID} & La capacità di evitare la cancellazione automatica dei bit \itindex{suid~bit} \acr{suid} e \itindex{sgid~bit} \acr{sgid} quando un file per i quali sono impostati viene modificato da @@ -2173,14 +2176,14 @@ implementata.\footnote{per attualmente si intende fino al kernel 2.6.13, e quando questo è relativo ad un gruppo cui non si appartiene (vedi sez.~\ref{sec:file_perm_management}).\\ - \const{CAP\_KILL} & la capacità di mandare segnali a qualunque + \const{CAP\_KILL} & La capacità di mandare segnali a qualunque processo (vedi sez.~\ref{sec:sig_kill_raise}).\\ - \const{CAP\_SETGID} & la capacità di manipolare i group ID dei + \const{CAP\_SETGID} & La capacità di manipolare i group ID dei processi, sia il principale che i supplementari, (vedi sez.~\ref{sec:proc_setgroups} che quelli trasmessi tramite i socket \textit{unix domain} (vedi sez.~\ref{sec:unix_socket}).\\ - \const{CAP\_SETUID} & la capacità di manipolare gli user ID del + \const{CAP\_SETUID} & La capacità di manipolare gli user ID del processo (con \func{setuid}, \func{setreuid}, \func{setresuid}, \func{setfsuid}) e di trasmettere un valore arbitrario @@ -2191,80 +2194,79 @@ implementata.\footnote{per attualmente si intende fino al kernel 2.6.13, e % Linux specific capabilities % \hline - \const{CAP\_SETPCAP} & la capacità di impostare o rimuovere una capacità + \const{CAP\_SETPCAP} & La capacità di impostare o rimuovere una capacità (limitatamente a quelle che il processo chiamante ha nel suo insieme di capacità permesse) da qualunque processo.\\ - \const{CAP\_LINUX\_IMMUTABLE}& la capacità di impostare gli attributi + \const{CAP\_LINUX\_IMMUTABLE}& La capacità di impostare gli attributi \textit{immutable} e \itindex{append~mode} \textit{append only} per i file su un filesystem che supporta questi attributi estesi.\\ - \const{CAP\_NET\_BIND\_SERVICE}& la capacità di porre in ascolto server + \const{CAP\_NET\_BIND\_SERVICE}& La capacità di porre in ascolto server su porte riservate (vedi sez.~\ref{sec:TCP_func_bind}).\\ - \const{CAP\_NET\_BROADCAST}& la capacità di consentire l'uso di socket in + \const{CAP\_NET\_BROADCAST}& La capacità di consentire l'uso di socket in \itindex{broadcast} \textit{broadcast} e \itindex{multicast} \textit{multicast}.\\ - \const{CAP\_NET\_ADMIN} & la capacità di eseguire alcune operazioni + \const{CAP\_NET\_ADMIN} & La capacità di eseguire alcune operazioni privilegiate sulla rete (impostare le opzioni privilegiate dei socket, abilitare il \itindex{multicast} \textit{multicasting}, impostare interfacce di rete e tabella di instradamento).\\ - \const{CAP\_NET\_RAW} & la capacità di usare socket \texttt{RAW} e + \const{CAP\_NET\_RAW} & La capacità di usare socket \texttt{RAW} e \texttt{PACKET} (quelli che permettono di creare pacchetti nei protocolli di basso livello).\\ - \const{CAP\_IPC\_LOCK} & la capacità di effettuare il \textit{memory + \const{CAP\_IPC\_LOCK} & La capacità di effettuare il \textit{memory locking} \itindex{memory~locking} con le funzioni \func{mlock}, \func{mlockall}, \func{shmctl}, \func{mmap} (vedi sez.~\ref{sec:proc_mem_lock} e sez.~\ref{sec:file_memory_map}). \\ - \const{CAP\_IPC\_OWNER} & la capacità di evitare il controllo dei permessi + \const{CAP\_IPC\_OWNER} & La capacità di evitare il controllo dei permessi per le operazioni sugli oggetti di intercomunicazione fra processi (vedi sez.~\ref{sec:ipc_sysv}).\\ - \const{CAP\_SYS\_MODULE}& la capacità di caricare e rimuovere moduli del + \const{CAP\_SYS\_MODULE}& La capacità di caricare e rimuovere moduli del kernel. \\ - \const{CAP\_SYS\_RAWIO} & la capacità di eseguire operazioni sulle porte + \const{CAP\_SYS\_RAWIO} & La capacità di eseguire operazioni sulle porte di I/O con \func{ioperm} e \func{iopl} (vedi sez.~\ref{sec:file_io_port}).\\ - \const{CAP\_SYS\_CHROOT}& la capacità di eseguire la funzione + \const{CAP\_SYS\_CHROOT}& La capacità di eseguire la funzione \func{chroot} (vedi sez.~\ref{sec:file_chroot}).\\ - \const{CAP\_SYS\_PTRACE}& consente di tracciare qualunque processo con + \const{CAP\_SYS\_PTRACE}& Consente di tracciare qualunque processo con \func{ptrace} (vedi sez.~\ref{sec:xxx_ptrace}).\\ -% TODO documentatare ptrace - \const{CAP\_SYS\_PACCT} & la capacità di usare le funzioni di + \const{CAP\_SYS\_PACCT} & La capacità di usare le funzioni di \textit{accounting} dei processi (vedi sez.~\ref{sec:sys_bsd_accounting}).\\ - \const{CAP\_SYS\_ADMIN} & la capacità di eseguire una serie di compiti + \const{CAP\_SYS\_ADMIN} & La capacità di eseguire una serie di compiti amministrativi (come impostare le quote, attivare e disattivare la swap, montare, rimontare e smontare filesystem, ecc.). \\ - \const{CAP\_SYS\_BOOT} & la capacità di fare eseguire un riavvio del + \const{CAP\_SYS\_BOOT} & La capacità di fare eseguire un riavvio del sistema.\\ - \const{CAP\_SYS\_NICE} & la capacità di modificare le priorità dei + \const{CAP\_SYS\_NICE} & La capacità di modificare le priorità dei processi (vedi sez.~\ref{sec:proc_priority}). \\ - \const{CAP\_SYS\_RESOURCE}& la capacità di superare le limitazioni sulle + \const{CAP\_SYS\_RESOURCE}& La capacità di superare le limitazioni sulle risorse, aumentare le quote disco, usare lo spazio disco riservato all'amministratore.\\ - \const{CAP\_SYS\_TIME} & la capacità di modificare il tempo di sistema + \const{CAP\_SYS\_TIME} & La capacità di modificare il tempo di sistema (vedi sez.~\ref{sec:sys_time}).\\ - \const{CAP\_SYS\_TTY\_CONFIG}& la capacità di simulare un \textit{hangup} + \const{CAP\_SYS\_TTY\_CONFIG}& La capacità di simulare un \textit{hangup} della console, con la funzione \func{vhangup}.\\ - \const{CAP\_MKNOD} & la capacità di creare file di dispositivo con la + \const{CAP\_MKNOD} & La capacità di creare file di dispositivo con la funzione \func{mknod} (vedi sez.~\ref{sec:file_mknod}).\footnotemark\\ - \const{CAP\_LEASE} & la capacità di creare dei \textit{file lease} + \const{CAP\_LEASE} & La capacità di creare dei \textit{file lease} \index{file!lease} su di un file (vedi sez.~\ref{sec:file_asyncronous_lease}) indipendentemente dalla proprietà dello stesso.\footnotemark\\ - \const{CAP\_SETFCAP} & la capacità di impostare le + \const{CAP\_SETFCAP} & La capacità di impostare le \textit{capabilities} di un file (non supportata).\\ \hline @@ -2331,7 +2333,7 @@ un \textsl{AND} binario del contenuto corrente del \textit{capabilities capacità in esso elencate. Il \textit{capabilities bounding set} è un parametro di sistema, accessibile -attraverso il contenuto del file \file{/proc/sys/kernel/cap-bound}, che per +attraverso il contenuto del file \procfile{/proc/sys/kernel/cap-bound}, che per questa sua caratteristica consente di impostare un limite generale alle capacità che possono essere accordate ai vari processi. Questo valore può essere impostato ad un valore arbitrario esclusivamente dal primo processo @@ -3146,10 +3148,10 @@ assolute diverse da zero o politiche \const{SCHED\_FIFO} e \const{SCHED\_RR}. \textbf{Policy} & \textbf{Significato} \\ \hline \hline - \const{SCHED\_FIFO} & Scheduling real-time con politica \textit{FIFO} \\ + \const{SCHED\_FIFO} & Scheduling real-time con politica \textit{FIFO}. \\ \const{SCHED\_RR} & Scheduling real-time con politica \textit{Round - Robin} \\ - \const{SCHED\_OTHER}& Scheduling ordinario\\ + Robin}. \\ + \const{SCHED\_OTHER}& Scheduling ordinario.\\ \hline \end{tabular} \caption{Valori dell'argomento \param{policy} per la funzione @@ -3296,7 +3298,6 @@ dato che in Linux questo intervallo di tempo questa funzione ritorna sempre un valore di 150 millisecondi, e non importa specificare il PID di un processo reale. - Come accennato ogni processo che usa lo scheduling real-time può rilasciare volontariamente la CPU; questo viene fatto attraverso la funzione \funcd{sched\_yield}, il cui prototipo è: @@ -3316,8 +3317,12 @@ l'esecuzione non sar in modalità \textit{fifo}, per permettere l'esecuzione degli altri processi con pari priorità quando la sezione più urgente è finita. +% TODO: con il 2.6.23 il comportamento è stato leggermente modificato ed è +% stato introdotto /proc/sys/kernel/sched_compat_yield da mettere a 1 per aver +% la compatibilità con il precedente. -\subsection{Il controllo dello \textit{scheduler} per i sistemi multiprocessore} +\subsection{Il controllo dello \textit{scheduler} per i sistemi + multiprocessore} \label{sec:proc_sched_multiprocess} Infine con il supporto dei sistemi multiprocessore sono state introdotte delle @@ -3546,7 +3551,7 @@ qualunque momento, e le operazioni di un eventuale \textit{signal handler} sono compiute nello stesso spazio di indirizzi del processo. Per questo, anche il solo accesso o l'assegnazione di una variabile possono non essere più operazioni atomiche (torneremo su questi aspetti in -sez.~\ref{sec:sig_control}). +sez.~\ref{sec:sig_adv_control}). In questo caso il sistema provvede un tipo di dato, il \type{sig\_atomic\_t}, il cui accesso è assicurato essere atomico. In pratica comunque si può