X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=prochand.tex;h=d82076ea45dfe0d0b7e71a0e708e28a163715f5b;hb=82438d2b3eca2b4807e7faec6699432dd76d8577;hp=fa6e1d50969b63087422d86a5b12a7a3865e21e7;hpb=3cf93b3dfc49fbf8b16f908bee85fa2ecaea4e3f;p=gapil.git diff --git a/prochand.tex b/prochand.tex index fa6e1d5..d82076e 100644 --- a/prochand.tex +++ b/prochand.tex @@ -157,19 +157,15 @@ in fig.~\ref{fig:proc_task_struct}. Come accennato in sez.~\ref{sec:intro_unix_struct} è lo \itindex{scheduler} \textit{scheduler} che decide quale processo mettere in esecuzione; esso viene -eseguito ad ogni \textit{system call} ed ad ogni interrupt e in una serie di -altre occasioni, ma può essere anche attivato esplicitamente. Il timer di -sistema provvede comunque a che esso sia invocato periodicamente; generando un -interrupt periodico secondo la frequenza specificata dalla costante -\const{HZ},\footnote{fino al kernel 2.4 il valore di \const{HZ} era 100 su - tutte le architetture tranne l'alpha, per cui era 1000, nel 2.6 è stato - portato a 1000 su tutte; dal 2.6.13 lo si può impostare in fase di - compilazione del kernel, con un default di 250 e valori possibili di 100, - 250, 1000 e dal 2.6.20 anche 300 (che è divisibile per le frequenze di - refresh della televisione); occorre fare 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. +eseguito in occasione di dell'invocazione di ogni \textit{system call} ed per +ogni interrupt dall'hardware oltre che in una serie di altre occasioni, e può +essere anche attivato esplicitamente. Il timer di sistema provvede comunque a +che esso sia invocato periodicamente, generando un interrupt periodico secondo +una frequenza predeterminata, specificata dalla costante \const{HZ} del kernel +(torneremo su questo argomento in sez.~\ref{sec:sys_unix_time}), che assicura +che lo \textit{scheduler} scheduler venga comunque eseguito ad intervalli +regolari e possa prendere le sue decisioni. + A partire dal kernel 2.6.21 è stato introdotto anche un meccanismo completamente diverso, detto \textit{tickless}, in cui non c'è più una @@ -335,9 +331,8 @@ valore nullo, che non è il \ids{PID} di nessun processo. Normalmente la chiamata a \func{fork} può fallire solo per due ragioni: o ci sono già troppi processi nel sistema, il che di solito è sintomo che qualcos'altro non sta andando per il verso giusto, o si è ecceduto il limite -sul numero totale di processi permessi all'utente argomento su cui torneremo -in sez.~\ref{sec:sys_resource_limit}, (vedi in particolare -tab.~\ref{tab:sys_rlimit_values}). +sul numero totale di processi permessi all'utente, argomento che tratteremo in +dettaglio in sez.~\ref{sec:sys_resource_limit}. L'uso di \func{fork} avviene secondo due modalità principali; la prima è quella in cui all'interno di un programma si creano processi figli cui viene @@ -607,7 +602,7 @@ comune dopo l'esecuzione di una \func{fork} è la seguente: \begin{itemize*} \item i file aperti e gli eventuali flag di \itindex{close-on-exec} \textit{close-on-exec} impostati (vedi sez.~\ref{sec:proc_exec} e - sez.~\ref{sec:file_fcntl}); + sez.~\ref{sec:file_fcntl_ioctl}); \item gli identificatori per il controllo di accesso: l'\textsl{user-ID reale}, il \textsl{group-ID reale}, l'\textsl{user-ID effettivo}, il \textsl{group-ID effettivo} ed i \textit{group-ID supplementari} (vedi @@ -1128,9 +1123,10 @@ tradizionalmente gli 8 bit meno significativi sono riservati per memorizzare lo \itindex{exit~status} stato di uscita del processo, e gli altri per indicare il segnale che ha causato la terminazione (in caso di conclusione anomala), uno per indicare se è stato generato un \itindex{core~dump} -\textit{core dump}, ecc.\footnote{le definizioni esatte si possono trovare in - \file{} ma questo file non deve mai essere usato - direttamente, esso viene incluso attraverso \file{}.} +\textit{core dump} (vedi sez.~\ref{sec:sig_standard}), ecc.\footnote{le + definizioni esatte si possono trovare in \file{} ma + questo file non deve mai essere usato direttamente, esso viene incluso + attraverso \file{}.} \begin{table}[!htb] \centering @@ -1319,8 +1315,8 @@ campi: \const{CLD\_STOPPED}, \const{CLD\_CONTINUED}, \const{CLD\_TRAPPED} e \const{CLD\_DUMPED} a indicare la ragione del ritorno della funzione, il cui significato è, nell'ordine: uscita normale, terminazione da segnale, - processo fermato, processo riavviato, processo terminato in \textit{core - dump}. + processo fermato, processo riavviato, processo terminato in + \itindex{core~dump} \textit{core dump} (vedi sez.~\ref{sec:sig_standard}). \end{basedescript} Infine Linux, seguendo un'estensione di BSD, supporta altre due funzioni per @@ -1578,7 +1574,8 @@ seguenti proprietà non vengano preservate: \item le mappature dei file in memoria (vedi sez.~\ref{sec:file_memory_map}); \item i segmenti di memoria condivisa SysV (vedi sez.~\ref{sec:ipc_sysv_shm}) e POSIX (vedi sez.~\ref{sec:ipc_posix_shm}); -\item i \textit{memory lock} (vedi sez.~\ref{sec:proc_mem_lock}); +\item i \itindex{memory~locking} \textit{memory lock} (vedi + sez.~\ref{sec:proc_mem_lock}); \item le funzioni registrate all'uscita (vedi sez.~\ref{sec:proc_atexit}); \item i semafori e le code di messaggi POSIX (vedi sez.~\ref{sec:ipc_posix_sem} e sez.~\ref{sec:ipc_posix_mq}); @@ -1622,7 +1619,7 @@ nell'esecuzione della funzione \func{exec}, queste sono: La gestione dei file aperti nel passaggio al nuovo programma lanciato con \func{exec} dipende dal valore che ha il flag di \itindex{close-on-exec} -\textit{close-on-exec} (vedi sez.~\ref{sec:file_fcntl}) per ciascun +\textit{close-on-exec} (vedi sez.~\ref{sec:file_fcntl_ioctl}) per ciascun \textit{file descriptor}. I file per cui è impostato vengono chiusi, tutti gli altri file restano aperti. Questo significa che il comportamento predefinito è che i file restano aperti attraverso una \func{exec}, a meno di una chiamata @@ -2154,7 +2151,7 @@ Le ultime funzioni che esamineremo sono quelle che permettono di operare sui gruppi supplementari cui un utente può appartenere. Ogni processo può avere almeno \const{NGROUPS\_MAX} gruppi supplementari\footnote{il numero massimo di gruppi secondari può essere ottenuto con \func{sysconf} (vedi - sez.~\ref{sec:sys_sysconf}), leggendo il parametro + sez.~\ref{sec:sys_limits}), leggendo il parametro \texttt{\_SC\_NGROUPS\_MAX}.} in aggiunta al gruppo primario; questi vengono ereditati dal processo padre e possono essere cambiati con queste funzioni. @@ -2823,7 +2820,7 @@ rispettivamente 1 e 99. \begin{figure}[!htbp] \footnotesize \centering - \begin{minipage}[c]{\textwidth} + \begin{minipage}[c]{0.5\textwidth} \includestruct{listati/sched_param.c} \end{minipage} \normalsize @@ -3466,15 +3463,15 @@ della priorità da impostare con l'argomento \param{ioprio} di \hline \hline \macro{IOPRIO\_PRIO\_CLASS}\texttt{(\textit{value})} - & dato il valore di una priorità come + & Dato il valore di una priorità come restituito da \func{ioprio\_get} estrae il valore della classe.\\ \macro{IOPRIO\_PRIO\_DATA}\texttt{(\textit{value})} - & dato il valore di una priorità come + & Dato il valore di una priorità come restituito da \func{ioprio\_get} estrae il valore della priorità.\\ \macro{IOPRIO\_PRIO\_VALUE}\texttt{(\textit{class},\textit{prio})} - & dato un valore di priorità ed una classe + & Dato un valore di priorità ed una classe ottiene il valore numerico da passare a \func{ioprio\_set}.\\ \hline @@ -3887,6 +3884,16 @@ Introdotta a partire dal kernel 2.4.21, solo su PowerPC. memoria. Tutti gli argomenti non utilizzati (al momento tutti) devono essere nulli pena la ricezione di un errore di \errval{EINVAL}. Introdotta a partire dal kernel 2.6.32. +% TODO: verificare questa parte +\item[\const{PR\_SET\_CHILD\_SUBREAPER}] Imposta il processo indicato con il + \ids{PID} specificato da \param{arg2} come nuovo ``\textsl{genitore + adottivo}'' per tutti i processi discendenti del chiamante che + diventeranno orfani, sostituendo in questo ruolo \cmd{init} (si ricordi + quanto illustrato in sez.~\ref{sec:proc_termination}). Introdotta a partire + dal kernel 3.4. +\item[\const{PR\_GET\_CHILD\_SUBREAPER}] Ottiene il \ids{PID} del processo a + cui vengono assegnati come figli gli orfani del processo + corrente. Introdotta a partire dal kernel 3.4. \label{sec:prctl_operation} \end{basedescript} @@ -4307,7 +4314,7 @@ aggiungendo il suffisso \code{\_r} al nome della versione normale. % LocalWords: filesystem noexec EPERM suid sgid root nosuid ENOEXEC ENOENT ELF % LocalWords: ETXTBSY EINVAL ELIBBAD BIG EFAULT EIO ENAMETOOLONG ELOOP ENOTDIR % LocalWords: ENFILE EMFILE argc execl path execv execle execlp execvp vector -% LocalWords: list environ NULL umask pending utime cutime ustime fcntl linker +% LocalWords: list environ NULL umask utime cutime ustime fcntl linker % LocalWords: opendir libc interpreter FreeBSD capabilities mandatory access % LocalWords: control MAC SELinux security modules LSM superuser uid gid saved % LocalWords: effective euid egid dell' fsuid fsgid getuid geteuid getgid SVr