X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=prochand.tex;h=c4f568faddae210b329defa4d5e3067fe2ed060a;hp=52172f5edd1dab23dc078e783dd881af62705060;hb=6667fa36f78499233dec8f737fb3638307a96078;hpb=e2bece451ff1f495d624ca89ad9d065ddd392bc6 diff --git a/prochand.tex b/prochand.tex index 52172f5..c4f568f 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 @@ -618,8 +614,9 @@ comune dopo l'esecuzione di una \func{fork} è la seguente: (vedi sez.~\ref{sec:file_work_dir} e sez.~\ref{sec:file_chroot}); \item la maschera dei permessi di creazione dei file (vedi sez.~\ref{sec:file_perm_management}); -\item la maschera dei segnali bloccati (vedi sez.~\ref{sec:sig_sigmask}) e le - azioni installate (vedi sez.~\ref{sec:sig_gen_beha}); +\item la \index{maschera~dei~segnali} 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 sez.~\ref{sec:ipc_sysv_shm}); \item i limiti sulle risorse (vedi sez.~\ref{sec:sys_resource_limit}); @@ -1127,9 +1124,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 @@ -1257,7 +1255,7 @@ primo, quale processo o quale gruppo di processi selezionare. \label{tab:proc_waitid_idtype} \end{table} -Come per \func{waitpid} anche il comportamento di \func{waitid} viene +Come per \func{waitpid} anche il comportamento di \func{waitid} è controllato dall'argomento \param{options}, da specificare come maschera binaria dei valori riportati in tab.~\ref{tab:proc_waitid_options}. Benché alcuni di questi siano identici come significato ed effetto ai precedenti di @@ -1318,8 +1316,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 @@ -1559,7 +1557,8 @@ seguente: % TODO ===========Importante============= % TODO questo sotto è incerto, verificare % TODO ===========Importante============= -\item la maschera dei segnali (si veda sez.~\ref{sec:sig_sigmask}). +\item la \index{maschera~dei~segnali} maschera dei segnali (si veda + sez.~\ref{sec:sig_sigmask}). \end{itemize*} Una serie di proprietà del processo originale, che non avrebbe senso mantenere @@ -2574,7 +2573,7 @@ l'utente correnti. \hline \const{PRIO\_PROCESS} & \type{pid\_t} & processo \\ \const{PRIO\_PRGR} & \type{pid\_t} & \itindex{process~group} - \textit{process group} \\ + \textit{process group}\\ \const{PRIO\_USER} & \type{uid\_t} & utente \\ \hline \end{tabular} @@ -2777,9 +2776,9 @@ corrente. \const{SCHED\_OTHER}& \textit{Scheduling} ordinario.\\ \const{SCHED\_BATCH}& \textit{Scheduling} ordinario con l'assunzione ulteriore di lavoro \textit{CPU - intensive} (dal kernel 2.6.16)\\ + intensive} (dal kernel 2.6.16).\\ \const{SCHED\_IDLE} & \textit{Scheduling} di priorità estremamente - bassa (dal kernel 2.6.23)\\ + bassa (dal kernel 2.6.23).\\ \hline \end{tabular} \caption{Valori dell'argomento \param{policy} per la funzione @@ -2837,7 +2836,7 @@ errore \errcode{EINVAL}, questo valore infatti non ha niente a che vedere con la priorità dinamica determinata dal valore di \textit{nice}, che deve essere impostato con le funzioni viste in precedenza. -Lo standard POSIX.1b prevede comunque che l'intervallo dei valori delle +Lo standard POSIX.1b prevede inoltre che l'intervallo dei valori delle priorità statiche possa essere ottenuto con le funzioni di sistema \funcd{sched\_get\_priority\_max} e \funcd{sched\_get\_priority\_min}, i cui prototipi sono: @@ -3887,6 +3886,19 @@ 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. + % TODO documentare PR_SET_SECCOMP introdotto a partire dal kernel 3.5. Vedi: + % Documentation/prctl/seccomp_filter.txt + \label{sec:prctl_operation} \end{basedescript} @@ -4307,7 +4319,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