|
@@ -1,4 +1,50 @@
|
|
-Tout d'abord, nous allons implémenter le transfert de descripteur de fichier
|
|
|
|
|
|
+\section{Communication entre processus}
|
|
|
|
+
|
|
|
|
+Dans un premier temps, il faut choisir un mécanisme de communication entre les
|
|
|
|
+différents processus. Nous allons donc lister rapidement les méthodes
|
|
|
|
+utilisables.
|
|
|
|
+
|
|
|
|
+\begin{itemize}
|
|
|
|
+ \item Les tubes unix ou pipes unix permettent de réaliser une communication
|
|
|
|
+ multi-processus unidirectionnel. D'un côté, un producteur écrit dans le
|
|
|
|
+ tube, ou bloque jusqu'à ce qu'il puisse avoir la place d'écrire. De
|
|
|
|
+ l'autre côté, un consommateur lit dans le tube ou bloque si aucune
|
|
|
|
+ données n'est disponible. Les tubes unix ont l'avantage d'être très
|
|
|
|
+ facile à manipuler et être globalement disponible sur toutes les
|
|
|
|
+ plateformes importantes sans exception. Néanmoins, il ne s'agit que du
|
|
|
|
+ transfert de données et il faut donc un mécanisme d'accès pour les
|
|
|
|
+ ressources. Les tubes Unix peuvent être créés de façon anonymes avec la
|
|
|
|
+ fonction \inltype{pipe}, soit être nommés via la fonction
|
|
|
|
+ \inltype{mknode} ou \inltype{mkfifo}.
|
|
|
|
+
|
|
|
|
+ \item Les mémoires partagés fournissent un moyen de communication
|
|
|
|
+ extrêmement performants pour dialoguer. Elles ont besoin d'un mécanisme
|
|
|
|
+ de synchronisation mais n'ont absolument pas besoin de passer par des
|
|
|
|
+ appels systèmes hormi pour leur création. C'est donc un candidat de
|
|
|
|
+ choix pour une communication entre deux processus. En revanche, elle
|
|
|
|
+ demande l'introduction de beaucoup de contrôle autour pour éviter les
|
|
|
|
+ bogues classiques en C, les dépassements, les écrasements et les
|
|
|
|
+ ressources ne peuvent être transmises qu'à travers un autre mécanisme ou
|
|
|
|
+ une redirection d'IO vers la mémoire partagée.
|
|
|
|
+ %TODO: expliquer redirection au dessus en citant la partie général: qqun
|
|
|
|
+ % fait les IO et redirige le résultat sur la shared memory
|
|
|
|
+
|
|
|
|
+ \item Les files de message, ou message queues
|
|
|
|
+ %TODO
|
|
|
|
+
|
|
|
|
+ \item Les sockets unix
|
|
|
|
+ %TODO
|
|
|
|
+\end{itemize}
|
|
|
|
+
|
|
|
|
+La solution qui s'applique le plus simplement à notre solution tout en
|
|
|
|
+conservant des performances correctes apparait clairement comme étant les
|
|
|
|
+sockets unix. Ils fournissent unes permettant d'apporter la gestion des accès.
|
|
|
|
+Ils fournissent également un moyem de transférer des descripteurs de fichiers
|
|
|
|
+entre processus.
|
|
|
|
+
|
|
|
|
+\section{Partage de ressources entre processus}
|
|
|
|
+
|
|
|
|
+Ensuite, nous allons implémenter le transfert de descripteur de fichier
|
|
entre processus. L'objectif derrière cette fonctionnalité est de pouvoir
|
|
entre processus. L'objectif derrière cette fonctionnalité est de pouvoir
|
|
utiliser les descripteurs de fichier comme des jetons inforgeables qui apportent
|
|
utiliser les descripteurs de fichier comme des jetons inforgeables qui apportent
|
|
des accès aux ressources, soit par communication, soit par accès direct.
|
|
des accès aux ressources, soit par communication, soit par accès direct.
|