X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=ipc.tex;h=270113c21792b3bea832acfc24279a8c5c388d4d;hp=da8d31719fb989b7878b2087d3db17360d19bd70;hb=0345bbfd866e46d3c76d0df7f37a83f9a3924926;hpb=25de957ddf731370bec1eb74b13cf35aa7886d1b diff --git a/ipc.tex b/ipc.tex index da8d317..270113c 100644 --- a/ipc.tex +++ b/ipc.tex @@ -2564,22 +2564,7 @@ il mutex. Entrambe fanno da wrapper per \func{semop}, utilizzando le due strutture \var{sem\_lock} e \var{sem\_unlock} definite in precedenza (\texttt{\small 32--42}). Si noti come per queste ultime si sia fatto uso dell'opzione \const{SEM\_UNDO} per evitare che il semaforo resti bloccato in -caso di terminazione imprevista del processo.%% Si noti infine come, essendo -%% tutte le funzioni riportate in \figref{fig:ipc_mutex_create} estremamente -%% semplici, se si sono definite tutte come \ctyp{inline}.\footnote{la direttiva -%% \func{inline} viene usata per dire al compilatore di non trattare la -%% funzione cui essa fa riferimento come una funzione, ma di inserire il codice -%% direttamente nel testo del programma. Anche se i compilatori più moderni -%% sono in grado di effettuare da soli queste manipolazioni (impostando le -%% opportune ottimizzazioni) questa è una tecnica usata per migliorare le -%% prestazioni per le funzioni piccole ed usate di frequente, in tal caso -%% infatti le istruzioni per creare un nuovo frame nello stack per chiamare la -%% funzione costituirebbero una parte rilevante del codice, appesantendo -%% inutilmente il programma. Originariamente questa era fatto utilizzando delle -%% macro, ma queste hanno tutta una serie di problemi di sintassi nel passaggio -%% degli argomenti (si veda ad esempio \cite{PratC} che in questo modo possono -%% essere evitati.} - +caso di terminazione imprevista del processo. Chiamare \func{MutexLock} decrementa il valore del semaforo: se questo è libero (ha già valore 1) sarà bloccato (valore nullo), se è bloccato la @@ -3235,13 +3220,15 @@ superiorit \subsection{Code di messaggi} \label{sec:ipc_posix_mq} -Le code di messaggi non sono supportate a livello del kernel, esse però -possono essere implementate, usando la memoria condivisa ed i mutex, con -funzioni di libreria. In generale esse sono comunque poco usate, i -socket\index{socket}, nei casi in cui sono sufficienti, sono più comodi, e -negli altri casi la comunicazione può essere gestita direttamente con la -stessa metodologia usata per implementare le code di messaggi. Per questo ci -limiteremo ad una descrizione essenziale. +Le code di messaggi non sono ancora supportate nel kernel +ufficiale;\footnote{esiste però una proposta di implementazione di Krzysztof + Benedyczak, a partire dal kernel 2.5.50.} inoltre esse possono essere +implementate, usando la memoria condivisa ed i mutex, con funzioni di +libreria. In generale, come le corrispettive del SysV IPC, sono poco usate, +dato che i socket\index{socket}, nei casi in cui sono sufficienti, sono più +comodi, e negli altri casi la comunicazione può essere gestita direttamente +con mutex e memoria condivisa. Per questo ci limiteremo ad una descrizione +essenziale. @@ -3250,7 +3237,9 @@ limiteremo ad una descrizione essenziale. Dei semafori POSIX esistono sostanzialmente due implementazioni; una è fatta a livello di libreria ed è fornita dalla libreria dei thread; questa però li -implementa solo a livello di thread e non di processi. Esiste una +implementa solo a livello di thread e non di processi. Esiste un'altra +versione, realizzata da Konstantin Knizhnik, che reimplementa l'interfaccia +POSIX usando i semafori di SysV IPC. \subsection{Memoria condivisa}