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.
+\acr{glibc} nella sezione che implementa i thread POSIX, le code di messaggi
+non hanno alcun tipo di supporto ufficiale. Per queste ultime esistono
+tuttavia dei patch e una libreria aggiuntiva.
La caratteristica fondamentale dell'interfaccia POSIX è l'abbandono dell'uso
degli identificatori e delle chiavi visti nel SysV IPC, per passare ai
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:
+possono avere o meno una corrispondenza sul filesystem; tutto quello che è
+richiesto è che:
\begin{itemize}
-\item debbano essere conformi alle regole che caratterizzano i
+\item i nomi devono 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{/}
+\item se il nome inizia per una \texttt{/} chiamate differenti allo stesso
+ nome fanno riferimento allo stesso oggetto, altrimenti l'interpretazione del
+ nome dipende dall'implementazione.
+\item l'interpretazione di ulteriori \texttt{/} presenti nel nome dipende
+ dall'implementazione.
\end{itemize}
-
+Il comportamento delle funzioni è pertanto subordinato in maniera quasi
+completa alla relativa implementazione.\footnote{tanto che Stevens in
+ \cite{UNP2} cita questo caso come un esempio della maniera standard per
+ consentire soluzioni non standard.} Nel caso di Linux per quanto riguarda la
+memoria condivisa, tutto viene creato nella directory \file{/dev/shm}, ed i
+nomi sono presi come pathname assoluto (comprendente eventuali sottodirectory)
+rispetto a questa radice (per maggiori dettagli si veda quanto illustrato in
+\secref{sec:ipc_posix_shm}). Lo stesso accade per l'implementazione
+sperimentale delle code di messaggi, che però fa riferimento alla directory
+\file{/dev/mqueue}.
\subsection{Code di messaggi}
però una implementazione sperimentale di Michal Wronski e Krzysztof
Benedyczak,\footnote{i patch al kernel e la relativa libreria possono essere
trovati \href{http://www.mat.uni.torun.pl/~wrona/posix_ipc}
- {http://www.mat.uni.torun.pl/\~wrona/posix_ipc}.}. In generale, come le
+ {http://www.mat.uni.torun.pl/\~{}wrona/posix\_ipc}.}. 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.
-
\subsection{Semafori}
\label{sec:ipc_posix_sem}
livello di libreria ed è fornita dalla libreria dei thread; questa però li
implementa solo a livello di thread e non di processi.\footnote{questo
significa che i semafori sono visibili solo all'interno dei thread creati da
- un sngolo processo.} Esiste un'altra versione, realizzata da Konstantin
-Knizhnik, che reimplementa l'interfaccia POSIX usando i semafori di SysV IPC,
-e che non vale comunque la pena di usare visto che i problemi sottolineati in
-\secref{sec:ipc_sysv_sem} restano invariati.
+ un singolo processo, e non possono essere usati come meccanismo di
+ sincronizzazione fra processi diversi.} Esiste però anche una libreria
+realizzata da Konstantin Knizhnik, che reimplementa l'interfaccia POSIX usando
+i semafori di SysV IPC, e che non vale comunque la pena di usare visto che i
+problemi sottolineati in \secref{sec:ipc_sysv_sem} rimangono, anche se
+mascherati.
\end{verbatim}
+ la memoria
+condivisa è trattata come un filesystem separato, con tutte le caratteristiche
+di un qualunque filesystem,
+
+
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "gapil"