X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=prochand.tex;h=be5e9767554d85d7b5ef362e49dcaf4d0fdd3dc5;hp=8113d7f095f6f82e73022095fc1fcea78c472150;hb=af4cf2bcebfaf023cc182b8370b978194e8027f7;hpb=930f4d0da83925a03ec2be420bbf671a6f5c9487 diff --git a/prochand.tex b/prochand.tex index 8113d7f..be5e976 100644 --- a/prochand.tex +++ b/prochand.tex @@ -670,7 +670,7 @@ Le differenze fra padre e figlio dopo la \func{fork} invece sono:\footnote{a sez.~\ref{sec:sig_notification}), che non vengono ereditate dal figlio; \item le mappature di memoria marcate come \const{MADV\_DONTFORK} (vedi sez.~\ref{sec:file_memory_map}) che non vengono ereditate dal figlio; -\item l'impostazione con \func{prctl} (vedi sez.~\ref{sec:prctl_xxx}) che +\item l'impostazione con \func{prctl} (vedi sez.~\ref{sec:process_prctl}) che notifica al figlio la terminazione del padre viene cancellata; \item il segnale di terminazione del figlio è sempre \const{SIGCHLD} anche qualora nel padre fosse stato modificato (vedi sez.~\ref{sec:process_clone}). @@ -1032,11 +1032,11 @@ quando un processo figlio entra nello stato \textit{stopped}\footnote{in realtà viene notificato soltanto il caso in cui il processo è stato fermato da un segnale di stop (vedi sez.~\ref{sec:sess_ctrl_term}), e non quello in cui lo stato \textit{stopped} è dovuto all'uso di \func{ptrace} (vedi - sez.~\ref{sec:xxx_ptrace}).} (vedi tab.~\ref{tab:proc_proc_states}), mentre -con \const{WCONTINUED} la funzione ritorna quando un processo in stato + sez.~\ref{sec:process_ptrace}).} (vedi tab.~\ref{tab:proc_proc_states}), +mentre con \const{WCONTINUED} la funzione ritorna quando un processo in stato \textit{stopped} riprende l'esecuzione per la ricezione del segnale \const{SIGCONT} (l'uso di questi segnali per il controllo di sessione è -dettagliato in sez.~\ref{sec:sess_ctrl_term}). +dettagliato in sez.~\ref{sec:sess_ctrl_term}). La terminazione di un processo figlio (così come gli altri eventi osservabili con \func{waitpid}) è chiaramente un evento asincrono rispetto all'esecuzione @@ -1539,11 +1539,11 @@ nell'esecuzione della funzione \func{exec}, queste sono: sez.~\ref{sec:thread_xxx}) sono cancellati e tutti gli oggetti ad essi relativi (vedi sez.~\ref{sec:thread_xxx}) rimossi; \item viene impostato il flag \const{PR\_SET\_DUMPABLE} di \func{prctl} (vedi - sez.~\ref{sec:prctl_xxx}) a meno che il programma da eseguire non sia + sez.~\ref{sec:process_prctl}) a meno che il programma da eseguire non sia \itindex{suid~bit} \acr{suid} o \itindex{sgid~bit} \acr{sgid} (vedi sez.~\ref{sec:proc_access_id}); \item il flag \const{PR\_SET\_KEEPCAPS} di \func{prctl} (vedi - sez.~\ref{sec:prctl_xxx}) viene cancellato; + sez.~\ref{sec:process_prctl}) viene cancellato; \item il nome del processo viene impostato al nome del file contenente il programma messo in esecuzione; \item il segnale di terminazione viene reimpostato a \const{SIGCHLD}; @@ -3262,11 +3262,14 @@ dei processi che gli appartengono,\footnote{per la modifica delle priorità di altri processi occorrono privilegi amministrativi, ed in particolare la capacità \const{CAP\_SYS\_NICE} (vedi sez.~\ref{sec:proc_capabilities}).} cioè quelli il cui user-ID reale corrisponde all'user-ID reale o effettivo del -chiamante. Data la possibilità di ottenere un blocco totale dello stesso, solo +chiamante. Data la possibilità di ottenere un blocco totale del sistema, solo l'amministratore\footnote{o un processo con la capacità \const{CAP\_SYS\_ADMIN} (vedi sez.~\ref{sec:proc_capabilities}).} può impostare un processo ad una priorità di I/O nella classe -\const{IOPRIO\_CLASS\_RT} o \const{IOPRIO\_CLASS\_IDLE}. +\const{IOPRIO\_CLASS\_RT}, lo stesso privilegio era richiesto anche per la +classe \const{IOPRIO\_CLASS\_IDLE} fino al kernel 2.6.24, ma dato che in +questo caso non ci sono effetti sugli altri processi questo limite è stato +rimosso a partire dal kernel 2.6.25. %TODO verificare http://lwn.net/Articles/355987/ @@ -3274,6 +3277,40 @@ impostare un processo ad una priorità di I/O nella classe % vedi man numa e le pagine di manuale relative % vedere anche dove metterle... + +\section{Funzioni di gestione avanzata} +\label{sec:proc_advanced_control} + +Nelle precedenti sezioni si sono trattate la gran parte delle funzioni che +attengono alla gestione ordinaria dei processi e delle loro proprietà più +comuni. Tratteremo qui alcune \textit{system call} specialistiche dedicate +alla gestione di alcune funzionalità specifiche ed avanzate il cui uso è in +genere piuttosto ridotto. + +\subsection{La system call \func{clone}} +\label{sec:process_clone} + +Da fare + +\subsection{La funzione \func{prctl}} +\label{sec:process_prctl} + +Da fare + +\subsection{La funzione \func{ptrace}} +\label{sec:process_ptrace} + +Da fare + +\subsection{L'accesso alle porte di I/O} +\label{sec:process_io_port} + +% +% TODO l'I/O sulle porte di I/O +% consultare le manpage di ioperm, iopl e outb + +Da fare + \section{Problematiche di programmazione multitasking} \label{sec:proc_multi_prog}