X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=ipc.tex;h=78d612f91270dfb2a6e799ec7fd49f9d6df66c44;hp=8428b47c73fccd51d2caf22778b38bb74d463d9a;hb=730b0bb045c1794c4f4675605dc106b756e82d69;hpb=d6636dc7afc27b7ac5b9feb214031ae1e7fd2594 diff --git a/ipc.tex b/ipc.tex index 8428b47..78d612f 100644 --- a/ipc.tex +++ b/ipc.tex @@ -3779,15 +3779,39 @@ meccanismi di comunicazione, che vanno sotto il nome di POSIX IPC, definendo una interfaccia completamente nuova, che tratteremo in questa sezione. - \subsection{Considerazioni generali} \label{sec:ipc_posix_generic} -Il Linux non tutti gli oggetti del POSIX IPC sono supportati nel kernel -ufficiale; solo la memoria condivisa è presente, ma solo a partire dal kernel -2.4.x, per gli altri oggetti esistono patch e librerie non ufficiali. -Nonostante questo è importante esaminare questa interfaccia per la sua netta -superiorità nei confronti di quella del \textit{SysV IPC}. +In Linux non tutti gli oggetti del POSIX IPC sono pienamente supportati nel +kernel ufficiale; solo la memoria condivisa è presente con l'interfaccia +completa, ma solo a partire dal kernel 2.4.x, i semafori sono forniti dalle +\acr{glibc} nella sezione che implementa i thread POSIX, e sono utilizzabili +solo all'interno dei thread generati dallo stesso processo,\footnote{sono cioè + oggetti che non possono, al contrario dei semafori del SysV IPC, essere + utilizzati per sincronizzare processi diversi.} le code di messaggi non +hanno alcun tipo di supporto ufficiale. Esistono tuttavia dei patch e delle +librerie aggiuntive che supportano alcune di queste interfacce, anche se +sperimentali e di uso limitato. + +La caratteristica fondamentale dell'interfaccia POSIX è l'abbandono dell'uso +degli identificatori e delle chiavi visti nel SysV IPC, per passare ai +\textit{Posix IPC names}\index{Posix IPC names}, che sono sostanzialmente +equivalenti ai nomi dei file. Tutte le funzioni che creano un oggetto di IPC +Posix prendono come primo argomento una stringa che indica uno di questi nomi; +lo standard è molto generico riguardo l'implementazione, ed i nomi stessi +possono avere o meno una corrispondenza sul filesystem. + + + le caratteristiche di questi nomi, +per i quali richiede che: +\begin{itemize} +\item debbano essere conformi alle regole che caratterizzano i + \textit{pathname}, in particolare non essere più lunghi di \const{PATH\_MAX} + byte e terminati da un carattere nullo. +\item se il nome inizia per una \texttt{/} +\end{itemize} + + \subsection{Code di messaggi} @@ -3797,11 +3821,11 @@ 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, +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. +con mutex e memoria condivisa. Per questo, in assenza di una implementazione +uffiale, ne tralasciamo la descrizione. @@ -3812,7 +3836,9 @@ Dei semafori POSIX esistono sostanzialmente due implementazioni; una livello di libreria ed è fornita dalla libreria dei thread; questa però li 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. +POSIX usando i semafori di SysV IPC. + + \subsection{Memoria condivisa}