X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=ipc.tex;h=6c1041ef5271eadb33f5027e1b0fd98d9080868d;hp=7ec9f2d47f0a45e1f2f728cbc7de818c352ee180;hb=525464ecdd7e6cbdccc733e73b5f1cc9dbe6022a;hpb=3d44c36183fe67ed64bff95a36596ad87f620683 diff --git a/ipc.tex b/ipc.tex index 7ec9f2d..6c1041e 100644 --- a/ipc.tex +++ b/ipc.tex @@ -1,32 +1,88 @@ -\chapter{La comunicazione fra porcessi} +\chapter{La comunicazione fra processi} \label{cha:IPC} -\section{Introduzione} -\label{sec:ipc_intro} +Uno degli aspetti fondamentali della programmazione in un sistema unix-like è +la comunicazione fra processi. In questo capitolo affronteremo solo alcuni dei +meccanismi più elementari che permettono di mettere in comunicazione processi +diversi, come quelli tradizionali che coinvolgono \textit{pipe} e +\textit{fifo} e i meccanismi di intercomunicazione di System V. -Uno degli aspetti fondamentali della programmazione in unix è la comunicazione -fra processi. In questo testo affronteremo solo alcuni dei meccanismi -fondamentali che permettono di scrivere applicazioni, esistono pure sistemi -più complessi ed evoluti come le RPC (\textit{Remote Procedure Calls}) e -CORBA (\textit{Common Object Request Brocker Architecture}) non saranno -affrontati qui. +Esistono pure sistemi più complessi ed evoluti come le RPC (\textit{Remote + Procedure Calls}) e CORBA (\textit{Common Object Request Brocker + Architecture}) che non saranno affrontati qui. Inoltre tratteremo nei +capitoli successivi tutta la problematica relativa alla comunicazione +attraverso la rete. -\section{Le pipes standard} + + +\section{La comunicazione fra processi tradizionale} +\label{sec:ipc_unix} + +Il primo meccanismo di comunicazione fra processi usato dai sistemi unix-like +è quello delle \textit{pipe}, in questa sezione descriveremo le sue basi, le +funzioni che ne gestiscono l'uso e le varie forme in cui si è evoluto. + + +\subsection{Le \textit{pipe} standard} \label{sec:ipc_pipes} -\section{Le pipes con nome} -\label{sec:ipc_nampipe} +Le \textit{pipe} nascono sostanzialmente con Unix, e sono il primo, e più +comunemente usato, meccanismo di comunicazione fra processi. Esse sono un file +speciale in cui un processo scrive ed un altro legge. Si viene così a +costituire un canale di comunicazione fra i due processi, nella forma di un +\textsl{tubo} (da cui il nome) in cui uno immette dati che arriveranno +all'altro. + +Perché questo accada però, e questo è il principale limite nell'uso delle +\textit{pipe}, è necessario che questi processi possano condividere il file +descriptor della \textit{pipe}; per questo essi devono comunque derivare da +uno stesso processo padre, o, più comunemente, essere nella relazione +padre/figlio. + + + +\subsection{Le \textit{pipe} con nome, o \textit{fifo}} +\label{sec:ipc_named_pipe} -\section{System V IPC} +Per poter superare il problema delle \textit{pipe} originali, che consentono +la comunicazione solo fra processi correlati, passando attraverso strutture +interne del kernel, sono stati introdotti dei nuovi oggetti, le \textit{fifo}, +che invece possono risiedere sul filesystem, e che i processi possono usare +per le comunicazioni senza dovere per forza essere in relazione diretta. + + + + +\section{La comunicazione fra processi di System V} \label{sec:ipc_sysv} -\section{Code di messaggi} +Per ovviare ai vari limiti dei meccanismo tradizionale di comunicazione fra +processi basato sulle \textit{pipe}, nello sviluppo di System V vennero +introdotti una serie di nuovi oggetti che garantissero una maggiore +flessibilità; in questa sezione esamineremo quello che viene ormai chiamato il +\textit{System V Inter Process Comunication system}, più comunemente noto come +\textit{SystemV IPC}. + +\subsection{Code di messaggi} \label{sec:ipc_messque} -\section{Semafori} +Il primo oggetto introdotto dal \textit{SystemV IPC} è quello delle code di +messaggi. + +\subsection{Semafori} \label{sec:ipc_semaph} -\section{Memoria condivisa} +Il secondo oggetto introdotto dal \textit{SystemV IPC} è quello dei semafori. + + +\subsection{Memoria condivisa} \label{sec:ipc_shar_mem} +Il terzo oggetto introdotto dal \textit{SystemV IPC} è quello della memoria +condivisa. + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "gapil" +%%% End: