From: Simone Piccardi Date: Wed, 11 Jan 2012 12:09:54 +0000 (+0000) Subject: Piccole correzioni ed aggiunte X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=f10ada1c0b49d3bbdb22dbe3a61e27914584d70b Piccole correzioni ed aggiunte --- diff --git a/fileadv.tex b/fileadv.tex index a4692ad..d3c9061 100644 --- a/fileadv.tex +++ b/fileadv.tex @@ -835,7 +835,7 @@ bloccare completamente un server NFS richiedendo una lettura su un file su cui è 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 diff --git a/filedir.tex b/filedir.tex index 8e31786..c9fc3c8 100644 --- a/filedir.tex +++ b/filedir.tex @@ -721,49 +721,48 @@ significativi sono un \itindex{magic~number} \textit{magic 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 diff --git a/prochand.tex b/prochand.tex index 2be5cf1..7d4f474 100644 --- a/prochand.tex +++ b/prochand.tex @@ -25,7 +25,7 @@ finale introdurremo alcune problematiche generiche della programmazione in 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 @@ -1426,6 +1426,8 @@ il processo corrente è tracciato con \func{ptrace} (vedi 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 @@ -4010,18 +4012,23 @@ non ritorna, o esegue \func{exit} o viene terminata da un segnale. Il valore 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}] diff --git a/system.tex b/system.tex index ff4033d..ffae3ab 100644 --- a/system.tex +++ b/system.tex @@ -1311,6 +1311,7 @@ fatto solo fino al valore del secondo, che per questo viene detto \textit{hard 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, diff --git a/thread.tex b/thread.tex index 39c1f16..b39dec1 100644 --- a/thread.tex +++ b/thread.tex @@ -57,15 +57,39 @@ dei processi: \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} + +