Iniziata la robba seria ... si fa per dire
[gapil.git] / ipc.tex
1 \chapter{La comunicazione fra processi}
2 \label{cha:IPC}
3
4
5 Uno degli aspetti fondamentali della programmazione in un sistema unix-like è
6 la comunicazione fra processi. In questo capitolo affronteremo solo alcuni dei
7 meccanismi più elementari che permettono di mettere in comunicazione processi
8 diversi, come quelli tradizionali che coinvolgono \textit{pipe} e
9 \textit{fifo} e i meccanismi di intercomunicazione di System V.
10
11 Esistono pure sistemi più complessi ed evoluti come le RPC (\textit{Remote
12   Procedure Calls}) e CORBA (\textit{Common Object Request Brocker
13   Architecture}) che non saranno affrontati qui. Inoltre tratteremo nei
14 capitoli successivi tutta la problematica relativa alla comunicazione
15 attraverso la rete.
16
17
18
19 \section{La comunicazione fra processi tradizionale}
20 \label{sec:ipc_unix}
21
22 Il primo meccanismo di comunicazione fra processi usato dai sistemi unix-like
23 è quello delle \textit{pipe}, in questa sezione descriveremo le sue basi, le
24 funzioni che ne gestiscono l'uso e le varie forme in cui si è evoluto.
25
26
27 \subsection{Le \textit{pipe} standard}
28 \label{sec:ipc_pipes}
29
30 Le \textit{pipe} nascono sostanzialmente con Unix, e sono il primo, e più
31 comunemente usato, meccanismo di comunicazione fra processi. Esse sono un file
32 speciale in cui un processo scrive ed un altro legge. Si viene così a
33 costituire un canale di comunicazione fra i due processi, nella forma di un
34 \textsl{tubo} (da cui il nome) in cui uno immette dati che arriveranno
35 all'altro. 
36
37 Perché questo accada però, e questo è il principale limite nell'uso delle
38 \textit{pipe}, è necessario che questi processi possano condividere il file
39 descriptor della \textit{pipe}; per questo essi devono comunque derivare da
40 uno stesso processo padre, o, più comunemente, essere nella relazione
41 padre/figlio.
42
43
44
45 \subsection{Le \textit{pipe} con nome, o \textit{fifo}}
46 \label{sec:ipc_named_pipe}
47
48 Per poter superare il problema delle \textit{pipe} originali, che consentono
49 la comunicazione solo fra processi correlati, passando attraverso strutture
50 interne del kernel, sono stati introdotti dei nuovi oggetti, le \textit{fifo},
51 che invece possono risiedere sul filesystem, e che i processi possono usare
52 per le comunicazioni senza dovere per forza essere in relazione diretta. 
53
54
55
56
57 \section{La comunicazione fra processi di System V}
58 \label{sec:ipc_sysv}
59
60 Per ovviare ai vari limiti dei meccanismo tradizionale di comunicazione fra
61 processi basato sulle \textit{pipe}, nello sviluppo di System V vennero
62 introdotti una serie di nuovi oggetti che garantissero una maggiore
63 flessibilità; in questa sezione esamineremo quello che viene ormai chiamato il
64 \textit{System V Inter Process Comunication system}, più comunemente noto come 
65 \textit{SystemV IPC}. 
66  
67 \subsection{Code di messaggi}
68 \label{sec:ipc_messque}
69
70 Il primo oggetto introdotto dal \textit{SystemV IPC} è quello delle code di
71 messaggi. 
72
73 \subsection{Semafori}
74 \label{sec:ipc_semaph}
75
76 Il secondo oggetto introdotto dal \textit{SystemV IPC} è quello dei semafori.
77
78
79 \subsection{Memoria condivisa}
80 \label{sec:ipc_shar_mem}
81
82 Il terzo oggetto introdotto dal \textit{SystemV IPC} è quello della memoria
83 condivisa.
84
85 %%% Local Variables: 
86 %%% mode: latex
87 %%% TeX-master: "gapil"
88 %%% End: