Introduction
Deux types de communication:
Signalisation:
- Terminaison: Un
processus indique à un autre processus qu'il a terminé
son exécution (par ex: exit() d'un
processus fils pris en compte par un wait(0)
de son père).
- Les sémaphores
(cf. section précédente): Pour entrer en section critique
ou faire de la synchronisation de processus.
- Les signaux: Un
processus communique un signal à un autre processus. Sous UNIX,
il existe de nombreux signaux (kill -l pour
en obtenir la liste) repérés par un numéro et un
nom symbolique. Par exemple, le signal n° 2 est SIGINT (signal d'interruption provoqué par
Ctrl-C ou par l'appel de la fonction
kill(pid, SIGINT)) .
Transmission de données:
- Par fichier: Un
processus écrit ses résultats dans un fichier intermédiaire
qu'un second processus lit. Ne convient pas si les processus ne sont pas
séquentiels car il y a un problème d'accès concurrent
au fichier.
- Par tube anonyme:
Les processus doivent être apparantés (père et fils
ou ancêtre commun).
- Par tube nommé:
On donne un nom unique à un tube. Tout processus peut communiquer
des données par ce tube s'il en connait le nom et s'il a les droits
suffisants.
- Par file de messages
: Ensemble de messages accessible par plusieurs processus et repéré
par une clé. Sous UNIX: msgget pour
ouvrir une file de messages, msgsnd (message
send) pour envoyer un message et msgrcv (message
receive) pour recevoir un message.
- Par mémoire partagée:
Une zone mémoire est déclarée partagée
entre plusieurs processus et repérée par une clé.
Tout processus qui connait la clé et qui a les droits suffisants
peut accéder à une zone partagée. Cependant, il faut
gérer l'exclusion mutuelle sur cette zone.