è attivo un blocco. Per questo motivo l'abilitazione del \textit{mandatory
locking} è di norma disabilitata, e deve essere attivata filesystem per
filesystem in fase di montaggio (specificando l'apposita opzione di
-\func{mount} riportata in tab.~\ref{tab:sys_mount_flags}, o con l'opzione
+\func{mount} riportata in sez.~\ref{sec:sys_file_config}), o con l'opzione
\code{-o mand} per il comando omonimo).
Si tenga presente inoltre che il \textit{mandatory locking} funziona solo
al \textit{magic number}.} mentre i 16 meno significativi sono usati per
specificare le opzioni; essi sono usati come maschera binaria e vanno
impostati con un OR aritmetico della costante \const{MS\_MGC\_VAL} con i
-valori riportati in tab.~\ref{tab:sys_mount_flags}.
+valori riportati nell'elenco seguente:
-\begin{table}[htb]
- \footnotesize
- \centering
- \begin{tabular}[c]{|l|p{8cm}|}
- \hline
- \textbf{Parametro} & \textbf{Significato}\\
- \hline
- \hline
- \const{MS\_BIND} & Monta il filesystem altrove.\\
- \const{MS\_DIRSYNC} & .\\
- \const{MS\_MANDLOCK} & Consente il \textit{mandatory locking}
- \itindex{mandatory~locking} (vedi
- sez.~\ref{sec:file_mand_locking}).\\
- \const{MS\_MOVE} & Sposta atomicamente il punto di montaggio.\\
- \const{MS\_NOATIME} & Non aggiorna gli \textit{access time} (vedi
- sez.~\ref{sec:file_file_times}).\\
- \const{MS\_NODEV} & Impedisce l'accesso ai file di dispositivo.\\
- \const{MS\_NODIRATIME} & Non aggiorna gli \textit{access time} delle
- directory.\\
- \const{MS\_NOEXEC} & Impedisce di eseguire programmi.\\
- \const{MS\_NOSUID} & Ignora i bit \itindex{suid~bit} \acr{suid} e
- \itindex{sgid~bit} \acr{sgid}.\\
- \const{MS\_RDONLY} & Monta in sola lettura.\\
- \const{MS\_RELATIME} & .\\
- \const{MS\_REMOUNT} & Rimonta il filesystem cambiando le opzioni.\\
- \const{MS\_SILENT} & .\\
- \const{MS\_STRICTATIME}& .\\
- \const{MS\_SYNCHRONOUS}& Abilita la scrittura sincrona.\\
- % \const{S\_WRITE} & Scrive normalmente.\\
- % \const{S\_APPEND} & Consente la scrittura solo in
- % \itindex{append~mode} \textit{append mode}
- % (vedi sez.~\ref{sec:file_sharing}).\\
- % \const{S\_IMMUTABLE} & Impedisce che si possano modificare i file.\\
- \hline
- \end{tabular}
- \caption{Tabella dei codici dei flag di montaggio di un filesystem.}
- \label{tab:sys_mount_flags}
-\end{table}
+\begin{basedescript}{\desclabelstyle{\pushlabel}}
+
+\item[\const{MS\_BIND}] Effettua un cosiddetto \textit{bind mount}, in
+ sostanza .
+
+\item[\const{MS\_DIRSYNC}] .
+
+\item[\const{MS\_MANDLOCK}] Consente il \textit{mandatory locking}
+ \itindex{mandatory~locking} (vedi
+ sez.~\ref{sec:file_mand_locking}).
+
+\item[\const{MS\_MOVE}] Sposta atomicamente il punto di montaggio.
+
+\item[\const{MS\_NOATIME}] Non aggiorna gli \textit{access time} (vedi
+ sez.~\ref{sec:file_file_times}).
+
+\item[\const{MS\_NODEV}] Impedisce l'accesso ai file di dispositivo.
+
+\item[\const{MS\_NODIRATIME}] Non aggiorna gli \textit{access time} delle
+ directory.
+\item[\const{MS\_NOEXEC}] Impedisce di eseguire programmi.
+
+\item[\const{MS\_NOSUID}] Ignora i bit \itindex{suid~bit} \acr{suid} e
+ \itindex{sgid~bit} \acr{sgid}.
+
+\item[\const{MS\_RDONLY}] Monta in sola lettura.
+
+\item[\const{MS\_RELATIME}] .
+
+\item[\const{MS\_REMOUNT}] Rimonta il filesystem cambiando le opzioni.
+
+\item[\const{MS\_SILENT}] .
+
+\item[\const{MS\_STRICTATIME}] .
+
+\item[\const{MS\_SYNCHRONOUS}] Abilita la scrittura sincrona.
% TODO aggiornare con i nuovi flag di man mount
% verificare i readonly mount bind del 2.6.26
+\end{basedescript}
La funzione \func{mount} può essere utilizzata anche per effettuare il
\textsl{rimontaggio} di un filesystem, cosa che permette di cambiarne al volo
ambiente multitasking.
-\section{Le funzioni di base}% della gestione dei processi}
+\section{Le funzioni di base della gestione dei processi}
\label{sec:proc_handling}
In questa sezione tratteremo le problematiche della gestione dei processi
sez.~\ref{sec:process_ptrace}) in caso di successo viene emesso il segnale
\signal{SIGTRAP}.
+% TODO aggiungere la parte sul numero massimo di argomenti, da man execve
+
Le altre funzioni della famiglia (\funcd{execl}, \funcd{execv},
\funcd{execle}, \funcd{execlp}, \funcd{execvp}) servono per fornire all'utente
una serie di possibili diverse interfacce nelle modalità di passaggio degli
di ritorno della funzione (o quello specificato con \func{exit}) verrà
utilizzato come stato di uscita della funzione. I tre
argomenti \param{ptid}, \param{tls} e \param{ctid} sono opzionali e sono
-presenti solo a partire dal kernel 2.6 ed usati principalmente per le funzioni
-di gestione dei \textit{thread} presenti nella \acr{glibc}.
+presenti solo a partire dal kernel 2.6 e sono stati aggiunti come supporto per
+le funzioni di gestione dei \textit{thread} (la \textit{Native Thread Posix
+ Library}, vedi sez.~\ref{sec:linux_ntpl}) nella \acr{glibc}, essi vengono
+utilizzati soltanto se si sono specificati rispettivamente i flag
+\const{CLONE\_PARENT\_SETTID}, \const{CLONE\_SETTLS} e
+\const{CLONE\_CHILD\_CLEARTID}.
Il comportamento di \func{clone}, che si riflette sulle caratteristiche del
nuovo processo da essa creato, è controllato dall'argomento \param{flags}, che
deve essere specificato come maschera binaria, ottenuta con un OR aritmetico
di una delle costanti del seguente elenco, che illustra quelle attualmente
-disponibili:\footnote{alla stesura di questa sezione, cioè con il kernel 3.2.}
+disponibili:\footnote{si fa riferimento al momento della stesura di questa
+ sezione, cioè con il kernel 3.2.}
\begin{basedescript}{\desclabelstyle{\pushlabel}}
-\item[\const{CLONE\_CHILD\_CLEARTID}]
+\item[\const{CLONE\_CHILD\_CLEARTID}] cancella il
\item[\const{CLONE\_CHILD\_SETTID}]
\item[\const{CLONE\_FILES}]
\item[\const{CLONE\_FS}]
esegue operazioni che estendano lo
\textit{stack} oltre questa dimensione
riceverà un segnale di \signal{SIGSEGV}.\\
+% TODO dal 2.6.23 il significato è cambiato, vedi anche man execve
\const{RLIMIT\_RSS} & L'ammontare massimo di pagine di memoria dato al
\index{segmento!testo} testo del processo. Il
limite è solo una indicazione per il kernel,
\end{itemize}
-\subsection{I \textit{thread} e Linux}
-\label{sec:linux_thread}
+\subsection{\textit{Thread} e processi}
+\label{sec:thread_process}
+Per un utilizzo effettivo dei \textit{thread} è sempre opportuno capire se
+questi sono davvero adatti allo scopo che ci si pone.
\subsection{Implementazioni alternative}
\label{sec:thread_other}
+Vedremo nella prossima sezione le caratteristiche del supporto per i
+\textit{thread} fornita dal kernel, ma esistono diversi possibili approcci
+alle modalità in cui questi possono essere realizzati.
+
+% TODO cenni su pth e le implementazioni in userspace
+
+
+\section{I \textit{thread} e Linux}
+\label{sec:linux_thread}
+
+In questa sezione tratteremo le implementazioni dei \textit{thread}
+disponibili con Linux che ha visto un radicale cambiamento nel passaggio dalla
+serie 2.4 alla serie 2.6, che ha portato alla versione attuale.
+
+\subsection{I \textit{LinuxThread}}
+\label{sec:linux_old_thread}
+
+
+\subsection{La \textit{Native Thread Posix Library}}
+\label{sec:linux_ntpl}
+
+