Correzioni
[gapil.git] / prochand.tex
index 099b1ffac1c7fa077f58696a7e8edf27a674d912..e78ebb8810c4fa37ec7302571eb406023c7efe1a 100644 (file)
@@ -1,6 +1,6 @@
 %% prochand.tex
 %%
-%% Copyright (C) 2000-2005 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2006 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",
@@ -143,10 +143,10 @@ fig.~\ref{fig:proc_task_struct}.
   \label{fig:proc_task_struct}
 \end{figure}
 
-Come accennato in sez.~\ref{sec:intro_unix_struct} è lo
-\textit{scheduler}\itindex{scheduler} che decide quale processo mettere in
-esecuzione; esso viene eseguito ad ogni system call ed ad ogni
-interrupt,\footnote{più in una serie di altre occasioni.} 
+Come accennato in sez.~\ref{sec:intro_unix_struct} è lo \textit{scheduler}
+\itindex{scheduler} che decide quale processo mettere in esecuzione; esso
+viene eseguito ad ogni system call ed ad ogni interrupt,\footnote{più in una
+  serie di altre occasioni.}
 % TODO completare questa parte.
 (ma può essere anche attivato esplicitamente). Il timer di sistema provvede
 comunque a che esso sia invocato periodicamente, generando un interrupt
@@ -159,7 +159,7 @@ in \file{asm/param.h}, ed il cui valore 
 % TODO verificare gli ultimi cambiamenti del 2.6
 % Si ha cioè un interrupt dal timer ogni centesimo di secondo.
 
-Ogni volta che viene eseguito, lo \textit{scheduler}\itindex{scheduler}
+Ogni volta che viene eseguito, lo \textit{scheduler} \itindex{scheduler}
 effettua il calcolo delle priorità dei vari processi attivi (torneremo su
 questo in sez.~\ref{sec:proc_priority}) e stabilisce quale di essi debba
 essere posto in esecuzione fino alla successiva invocazione.
@@ -543,17 +543,17 @@ lo stesso avviene anche per tutti i figli; la funzione \func{fork} infatti ha
 la caratteristica di duplicare nei figli tutti i file descriptor aperti nel
 padre (allo stesso modo in cui lo fa la funzione \func{dup}, trattata in
 sez.~\ref{sec:file_dup}), il che comporta che padre e figli condividono le
-stesse voci della \textit{file table} (per la spiegazione di questi termini si
-veda sez.~\ref{sec:file_sharing}) fra cui c'è anche la posizione corrente nel
-file.
+stesse voci della \itindex{file~table} \textit{file table} (per la spiegazione
+di questi termini si veda sez.~\ref{sec:file_sharing}) fra cui c'è anche la
+posizione corrente nel file.
 
 In questo modo se un processo scrive sul file aggiornerà la posizione corrente
-sulla \textit{file table}, e tutti gli altri processi, che vedono la stessa
-\textit{file table}, vedranno il nuovo valore. In questo modo si evita, in
-casi come quello appena mostrato in cui diversi processi scrivono sullo stesso
-file, che l'output successivo di un processo vada a sovrapporsi a quello dei
-precedenti: l'output potrà risultare mescolato, ma non ci saranno parti
-perdute per via di una sovrascrittura.
+sulla \itindex{file~table} \textit{file table}, e tutti gli altri processi,
+che vedono la stessa \itindex{file~table} \textit{file table}, vedranno il
+nuovo valore. In questo modo si evita, in casi come quello appena mostrato in
+cui diversi processi scrivono sullo stesso file, che l'output successivo di un
+processo vada a sovrapporsi a quello dei precedenti: l'output potrà risultare
+mescolato, ma non ci saranno parti perdute per via di una sovrascrittura.
 
 Questo tipo di comportamento è essenziale in tutti quei casi in cui il padre
 crea un figlio e attende la sua conclusione per proseguire, ed entrambi
@@ -597,7 +597,8 @@ comune dopo l'esecuzione di una \func{fork} 
   sez.~\ref{sec:sess_proc_group});
 \item la directory di lavoro e la directory radice (vedi
   sez.~\ref{sec:file_work_dir} e sez.~\ref{sec:file_chroot});
-\item la maschera dei permessi di creazione (vedi sez.~\ref{sec:file_umask});
+\item la maschera dei permessi di creazione (vedi
+  sez.~\ref{sec:file_perm_managemen}); 
 \item la maschera dei segnali bloccati (vedi sez.~\ref{sec:sig_sigmask}) e le
   azioni installate (vedi sez.~\ref{sec:sig_gen_beha});
 \item i segmenti di memoria condivisa agganciati al processo (vedi
@@ -1224,7 +1225,7 @@ la lista completa 
 \item la directory radice e la directory di lavoro corrente (vedi
   sez.~\ref{sec:file_work_dir});
 \item la maschera di creazione dei file (\var{umask}, vedi
-  sez.~\ref{sec:file_umask}) ed i \textit{lock} sui file (vedi
+  sez.~\ref{sec:file_perm_management}) ed i \textit{lock} sui file (vedi
   sez.~\ref{sec:file_locking});
 \item i segnali sospesi (\textit{pending}) e la maschera dei segnali (si veda
   sez.~\ref{sec:sig_sigmask});
@@ -1269,8 +1270,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 linkati con le
-\acr{libc5}, e \file{/lib/ld-linux.so.2} per programmi linkati con le
+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
 \acr{glibc}. 
 
 Infine nel caso il file sia uno script esso deve iniziare con una linea nella
@@ -1411,7 +1412,7 @@ Questi identificatori normalmente sono identici ai corrispondenti del gruppo
 sez.~\ref{sec:proc_exec}, il programma che si è posto in esecuzione abbia i
 bit \itindex{suid~bit} \acr{suid} o \itindex{sgid~bit} \acr{sgid} impostati
 (il significato di questi bit è affrontato in dettaglio in
-sez.~\ref{sec:file_suid_sgid}). In questo caso essi saranno impostati
+sez.~\ref{sec:file_special_perm}). In questo caso essi saranno impostati
 all'utente e al gruppo proprietari del file. Questo consente, per programmi in
 cui ci sia necessità, di dare a qualunque utente normale privilegi o permessi
 di un altro (o dell'amministratore).
@@ -1513,7 +1514,7 @@ all'\textsl{user-ID salvato}. Negli altri casi viene segnalato un errore (con
 
 Come accennato l'uso principale di queste funzioni è quello di poter
 consentire ad un programma con i bit \itindex{suid~bit} \acr{suid} o
-\itindex{sgid~bit} \acr{sgid} impostati (vedi sez.~\ref{sec:file_suid_sgid})
+\itindex{sgid~bit} \acr{sgid} impostati (vedi sez.~\ref{sec:file_special_perm})
 di riportare l'\textsl{user-ID effettivo} a quello dell'utente che ha lanciato
 il programma, effettuare il lavoro che non necessita di privilegi aggiuntivi,
 ed eventualmente tornare indietro.
@@ -1928,7 +1929,7 @@ implementata.\footnote{per attualmente si intende fino al kernel 2.6.13, e
 %
     \const{CAP\_CHOWN}      & la capacità di cambiare proprietario e gruppo
                               proprietario di un file (vedi
-                              sez.~\ref{sec:file_chown}).\\
+                              sez.~\ref{sec:file_ownership_management}).\\
     \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})
@@ -1950,14 +1951,15 @@ implementata.\footnote{per attualmente si intende fino al kernel 2.6.13, e
                               precedenti \const{CAP\_DAC\_OVERRIDE} e
                               \const{CAP\_DAC\_READ\_SEARCH}. Queste
                               comprendono i cambiamenti dei permessi e dei
-                              tempi del file (vedi sez.~\ref{sec:file_chmod} e
-                              sez.~\ref{sec:file_utime}), le impostazioni degli
-                              attributi estesi (con il comando \cmd{chattr}) e
-                              delle ACL, poter ignorare lo
+                              tempi del file (vedi
+                              sez.~\ref{sec:file_perm_management} e 
+                              sez.~\ref{sec:file_file_times}), le impostazioni 
+                              degli attributi estesi (con il comando 
+                              \cmd{chattr}) e delle ACL, poter ignorare lo
                               \itindex{sticky~bit} \textit{sticky bit} nella
                               cancellazione dei file (vedi
-                              sez.~\ref{sec:file_sticky}), la possibilità di
-                              impostare il flag di \const{O\_NOATIME} con
+                              sez.~\ref{sec:file_special_perm}), la possibilità
+                              di impostare il flag di \const{O\_NOATIME} con
                               \func{open} e \func{fcntl} (vedi
                               sez.~\ref{sec:file_open} e
                               sez.~\ref{sec:file_fcntl}).\\
@@ -1968,22 +1970,22 @@ implementata.\footnote{per attualmente si intende fino al kernel 2.6.13, e
                               un processo senza questa capacità e la capacità
                               di impostare il bit \acr{sgid} su un file anche
                               quando questo è relativo ad un gruppo cui non si
-                              appartiene (vedi sez.~\ref{sec:file_chmod}).\\ 
+                              appartiene (vedi
+                              sez.~\ref{sec:file_perm_management}).\\ 
     \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
                               processi, sia il principale che i supplementari,
                               (vedi sez.~\ref{sec:proc_setgroups} che quelli
-                              trasmessi tramite i \index{socket} socket
-                              \textit{unix domain} (vedi
-                              sez.~\ref{sec:unix_socket}).\\
+                              trasmessi tramite i socket \textit{unix domain}
+                              (vedi sez.~\ref{sec:unix_socket}).\\
     \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
                               dell'\textsl{uid} nel passaggio delle
-                              credenziali coi socket unix domain (vedi
-                              sez.~\ref{sec:unix_socket_xxx}).\\ 
+                              credenziali coi socket \textit{unix domain} (vedi
+                              sez.~\ref{sec:unix_socket}).\\ 
 %
 % Linux specific capabilities
 %
@@ -1993,18 +1995,21 @@ implementata.\footnote{per attualmente si intende fino al kernel 2.6.13, e
                               chiamante ha nel suo insieme di capacità
                               permesse) da qualunque processo.\\
     \const{CAP\_LINUX\_IMMUTABLE}& la capacità di impostare gli attributi
-                              \textit{immutable} e \textit{append only} per i
-                              file su un filesystem che supporta questi
+                              \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
                               su porte riservate (vedi
                               sez.~\ref{sec:TCP_func_bind}).\\ 
     \const{CAP\_NET\_BROADCAST}& la capacità di consentire l'uso di socket in
-                              broadcast e multicast.\\
+                              \itindex{broadcast} \textit{broadcast} e
+                              \itindex{multicast} \textit{multicast}.\\ 
     \const{CAP\_NET\_ADMIN} & la capacità di eseguire alcune operazioni
                               privilegiate sulla rete (impostare le opzioni
                               privilegiate dei socket, abilitare il
-                              multicasting, impostare interfacce di rete e
+                              \itindex{multicast} \textit{multicasting},
+                              impostare interfacce di rete e 
                               tabella di instradamento).\\
     \const{CAP\_NET\_RAW}   & la capacità di usare socket \texttt{RAW} e
                               \texttt{PACKET} (quelli che permettono di creare
@@ -2557,8 +2562,10 @@ funzione.
 
 \itindend{capabilities}
 
-
-
+% TODO vedi http://lwn.net/Articles/198557/ e 
+% http://www.madore.org/~david/linux/newcaps/
+% TODO documentare prctl ...
 
 \section{La gestione della priorità di esecuzione}
 \label{sec:proc_priority}
@@ -3415,7 +3422,7 @@ multi-thread, ma si hanno gli stessi problemi quando si vogliono chiamare
 delle funzioni all'interno dei gestori dei segnali.
 
 Fintanto che una funzione opera soltanto con le variabili locali è rientrante;
-queste infatti vengono allocate nello \itindex{stack} stack, e un'altra
+queste infatti vengono allocate nello \itindex{stack} stack, ed un'altra
 invocazione non fa altro che allocarne un'altra copia. Una funzione può non
 essere rientrante quando opera su memoria che non è nello \itindex{stack}
 stack.  Ad esempio una funzione non è mai rientrante se usa una variabile
@@ -3438,18 +3445,11 @@ disposizione due macro di compilatore, \macro{\_REENTRANT} e
 varie funzioni di libreria, che sono identificate aggiungendo il suffisso
 \code{\_r} al nome della versione normale.
 
-
-
-%%% Local Variables: 
-%%% mode: latex
-%%% TeX-master: "gapil"
-%%% End: 
-
 % LocalWords:  multitasking like VMS child process identifier pid sez shell fig
 % LocalWords:  parent kernel init pstree keventd kswapd table struct linux call
 % LocalWords:  nell'header scheduler system interrupt timer HZ asm Hertz clock
 % LocalWords:  l'alpha tick fork wait waitpid exit exec image glibc int pgid ps
-% LocalWords:  sid threads thread Ingo Molnar ppid getpid getppid sys unistd
+% LocalWords:  sid threads thread Ingo Molnar ppid getpid getppid sys unistd LD
 % LocalWords:  void ForkTest tempnam pathname sibling cap errno EAGAIN ENOMEM
 % LocalWords:  stack read only copy write tab client spawn forktest sleep PATH
 % LocalWords:  source LIBRARY scheduling race condition printf descriptor dup
@@ -3468,16 +3468,28 @@ varie funzioni di libreria, che sono identificate aggiungendo il suffisso
 % LocalWords:  setreuid setregid FIXME ruid rgid seteuid setegid setresuid size
 % LocalWords:  setresgid getresuid getresgid value result argument setfsuid DAC
 % LocalWords:  setfsgid NGROUPS sysconf getgroups getgrouplist groups ngroups
-% LocalWords:  setgroups initgroups patch LIDS CHOWN OVERRIDE Discrectionary
+% LocalWords:  setgroups initgroups patch LIDS CHOWN OVERRIDE Discrectionary PF
 % LocalWords:  SEARCH chattr sticky NOATIME socket domain immutable append mmap
 % LocalWords:  broadcast multicast multicasting memory locking mlock mlockall
 % LocalWords:  shmctl ioperm iopl chroot ptrace accounting swap reboot hangup
 % LocalWords:  vhangup mknod lease permitted inherited inheritable bounding AND
-% LocalWords:  capability capget capset header ESRCH undef version obj clear
+% LocalWords:  capability capget capset header ESRCH undef version obj clear PT
 % LocalWords:  pag ssize length proc capgetp prehemptive cache runnable Stopped
-% LocalWords:  Uninterrutible SIGSTOP soft slice nice niceness counter which
+% LocalWords:  Uninterrutible SIGSTOP soft slice nice niceness counter which SC
 % LocalWords:  getpriority who setpriority RTLinux RTAI Adeos fault FIFO First
-% LocalWords:  yield Robin setscheduler policy param OTHER priority setparam
+% LocalWords:  yield Robin setscheduler policy param OTHER priority setparam to
 % LocalWords:  min getparam getscheduler interval robin ENOSYS fifo ping long
-% LocalWords:  affinity setaffinity unsigned mask cpu NUMA CLR ISSET SETSIZE
-% LocalWords:  getaffinity assembler deadlock REENTRANT SAFE
+% LocalWords:  affinity setaffinity unsigned mask cpu NUMA CLR ISSET SETSIZE RR
+% LocalWords:  getaffinity assembler deadlock REENTRANT SAFE tgz MYPGRP l'OR rr
+% LocalWords:  WIFEXITED WEXITSTATUS WIFSIGNALED WTERMSIG WCOREDUMP WIFSTOPPED
+% LocalWords:  WSTOPSIG opt char INTERP arg SIG IGN DFL mascheck grp FOWNER RAW
+% LocalWords:  FSETID SETPCAP BIND SERVICE ADMIN PACKET IPC OWNER MODULE RAWIO
+% LocalWords:  PACCT RESOURCE TTY CONFIG SETFCAP hdrp datap libcap lcap text tp
+% LocalWords:  get ncap caps CapInh CapPrm fffffeff CapEff getcap STAT dall'I
+% LocalWords:  inc PRIO SUSv PRGR prio SysV SunOS Ultrix sched timespec len sig
+% LocalWords:  cpusetsize cpuset atomic
+
+%%% Local Variables: 
+%%% mode: latex
+%%% TeX-master: "gapil"
+%%% End: