X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=ipc.tex;h=4b569aadde0975b2a65045b0c8ee8ec8a3513f20;hp=5841c54bd8a87cf6bc6a21bbaa7b27a0aa90caa1;hb=94b4d603807121b40eef06d22d2b6cd6e06ec7fd;hpb=2414addb7861eb72315a3de58b6f2cb5c83ab6ed diff --git a/ipc.tex b/ipc.tex index 5841c54..4b569aa 100644 --- a/ipc.tex +++ b/ipc.tex @@ -1021,8 +1021,8 @@ Il sistema dispone sempre di un numero fisso di oggetti di IPC,\footnote{fino altri limiti relativi al \textit{SysV IPC}) solo con una ricompilazione del kernel, andando a modificarne la definizione nei relativi header file. A partire dal kernel 2.4.x è possibile cambiare questi valori a sistema attivo - scrivendo sui file \procrelfile{/proc/sys/kernel}{shmmni}, - \procrelfile{/proc/sys/kernel}{msgmni} e \procrelfile{/proc/sys/kernel}{sem} + scrivendo sui file \sysctlrelfile{kernel}{shmmni}, + \sysctlrelfile{kernel}{msgmni} e \sysctlrelfile{kernel}{sem} di \file{/proc/sys/kernel} o con l'uso di \func{sysctl}.} e per ciascuno di essi viene mantenuto in \var{seq} un numero di sequenza progressivo che viene incrementato di uno ogni volta che l'oggetto viene cancellato. Quando @@ -1182,9 +1182,9 @@ Le code di messaggi sono caratterizzate da tre limiti fondamentali, definiti negli header e corrispondenti alle prime tre costanti riportate in tab.~\ref{tab:ipc_msg_limits}, come accennato però in Linux è possibile modificare questi limiti attraverso l'uso di \func{sysctl} o scrivendo nei -file \procrelfile{/proc/sys/kernel}{msgmax}, -\procrelfile{/proc/sys/kernel}{msgmnb} e -\procrelfile{/proc/sys/kernel}{msgmni} di \file{/proc/sys/kernel/}. +file \sysctlrelfile{kernel}{msgmax}, +\sysctlrelfile{kernel}{msgmnb} e +\sysctlrelfile{kernel}{msgmni} di \file{/proc/sys/kernel/}. \begin{figure}[!htb] \centering \includegraphics[width=13cm]{img/mqstruct} @@ -1888,7 +1888,7 @@ Come per le code di messaggi anche per gli insiemi di semafori esistono una serie di limiti, i cui valori sono associati ad altrettante costanti, che si sono riportate in tab.~\ref{tab:ipc_sem_limits}. Alcuni di questi limiti sono al solito accessibili e modificabili attraverso \func{sysctl} o scrivendo -direttamente nel file \procfile{/proc/sys/kernel/sem}. +direttamente nel file \sysctlfile{kernel/sem}. La funzione che permette di effettuare le varie operazioni di controllo sui semafori (fra le quali, come accennato, è impropriamente compresa anche la @@ -2319,7 +2319,7 @@ controllare il valore dei mutex prima di proseguire in una operazione di sblocco non servirebbe comunque, dato che l'operazione non sarebbe atomica. Vedremo in sez.~\ref{sec:ipc_lock_file} come sia possibile ottenere un'interfaccia analoga a quella appena illustrata, senza incorrere in questi -problemi, usando il \index{file!locking} \textit{file locking}. +problemi, usando il \itindex{file~locking} \textit{file locking}. \subsection{Memoria condivisa} @@ -2434,14 +2434,14 @@ che permettono di cambiarne il valore. & \textbf{Significato} \\ \hline \hline - \const{SHMALL}& 0x200000&\procrelfile{/proc/sys/kernel}{shmall} + \const{SHMALL}& 0x200000&\sysctlrelfile{kernel}{shmall} & Numero massimo di pagine che possono essere usate per i segmenti di memoria condivisa.\\ - \const{SHMMAX}&0x2000000&\procrelfile{/proc/sys/kernel}{shmmax} + \const{SHMMAX}&0x2000000&\sysctlrelfile{kernel}{shmmax} & Dimensione massima di un segmento di memoria condivisa.\\ - \const{SHMMNI}& 4096&\procrelfile{/proc/sys/kernel}{msgmni} + \const{SHMMNI}& 4096&\sysctlrelfile{kernel}{msgmni} & Numero massimo di segmenti di memoria condivisa presenti nel kernel.\\ \const{SHMMIN}& 1& --- & Dimensione minima di un segmento di @@ -3117,9 +3117,9 @@ accedere alla seriale si limita a segnalare che la risorsa non è disponibile. Dato che i \index{file!di lock} file di lock presentano gli inconvenienti illustrati in precedenza, la tecnica alternativa di sincronizzazione più -comune è quella di fare ricorso al \index{file!locking} \textit{file locking} -(trattato in sez.~\ref{sec:file_locking}) usando \func{fcntl} su un file -creato per l'occasione per ottenere un write lock. In questo modo potremo +comune è quella di fare ricorso al \itindex{file~locking} \textit{file + locking} (trattato in sez.~\ref{sec:file_locking}) usando \func{fcntl} su un +file creato per l'occasione per ottenere un write lock. In questo modo potremo usare il lock come un \textit{mutex}: per bloccare la risorsa basterà acquisire il lock, per sbloccarla basterà rilasciare il lock. Una richiesta fatta con un write lock metterà automaticamente il processo in stato di @@ -3141,12 +3141,12 @@ leggermente più lento. \end{minipage} \normalsize \caption{Il codice delle funzioni che permettono per la gestione dei - \textit{mutex} con il \index{file!locking} \textit{file locking}.} + \textit{mutex} con il \itindex{file~locking} \textit{file locking}.} \label{fig:ipc_flock_mutex} \end{figure} Il codice delle varie funzioni usate per implementare un mutex utilizzando il -\textit{file locking} \index{file!locking} è riportato in +\textit{file locking} \itindex{file~locking} è riportato in fig.~\ref{fig:ipc_flock_mutex}; si è mantenuta volutamente una struttura analoga alle precedenti funzioni che usano i semafori, anche se le due interfacce non possono essere completamente equivalenti, specie per quanto @@ -3163,7 +3163,7 @@ mutex. La seconda funzione (\texttt{\small 6--10}) è \func{FindMutex}, che, come la precedente, è stata definita per mantenere una analogia con la corrispondente funzione basata sui semafori. Anch'essa si limita (\texttt{\small 9}) ad -aprire il file da usare per il \index{file!locking} \textit{file locking}, +aprire il file da usare per il \itindex{file~locking} \textit{file locking}, solo che in questo caso le opzioni di \func{open} sono tali che il file in questione deve esistere di già. @@ -3180,7 +3180,7 @@ La quarta funzione (\texttt{\small 24--34}) è \func{UnlockMutex} e serve a rilasciare il mutex. La funzione è analoga alla precedente, solo che in questo caso si inizializza (\texttt{\small 28--31}) la struttura \var{lock} per il rilascio del lock, che viene effettuato (\texttt{\small 33}) con la opportuna -chiamata a \func{fcntl}. Avendo usato il \index{file!locking} \textit{file +chiamata a \func{fcntl}. Avendo usato il \itindex{file~locking} \textit{file locking} in semantica POSIX (si riveda quanto detto sez.~\ref{sec:file_posix_lock}) solo il processo che ha precedentemente eseguito il lock può sbloccare il mutex.