Introduction
Ce chapitre aborde deux grands traits de l'interfaçage d'un langage de
programmation avec le système d'exploitation : la communication et les
processus. Le module Sys, présenté au chapitre
8, a déjà montré comment faire passer des
valeurs à un programme et comment lancer un programme à partir d'un
autre. Le but de ce chapitre est de préciser les notions de processus
et de communication entre processus.
Le terme << processus >> est utilisé pour un programme en cours
d'exécution. Les processus sont les composants premiers des
applications parallèles. Nous introduisons les processus sous la
présentation classique que l'on donne pour le système Unix. Dans
ce cadre, un processus est lancé par un autre processus, créant ainsi
un lien de filiation. Il existe un processus premier, ancêtre de tous
les autres. Cette relation de paternité autorise des attentes sur la
fin de l'exécution d'un processus, ainsi qu'une communication
privilégiée entre ascendant et descendant. Le modèle de parallélisme
sous-jacent est celui à mémoire répartie.
Le terme << communication >> recouvre trois réalités :
-
les entrées-sorties au moyen de descripteurs de fichier.
La notion de fichier sous Unix a une portée
beaucoup plus large que la simple lecture ou écriture de données
sur un support de masse. On le verra en particulier au chapitre
20 où des programmes tournant sur diverses machines
communiquent via de tels descripteurs ;
- la création et l'utilisation de tubes de communication
entre processus qui permettent un échange de données selon le
principe des files d'attente;
- la génération et le traitement de signaux qui
autorisent une interaction simple entre processus.
Les fonctions présentées dans ce chapitre viennent, pour
l'essentiel, du module Unix accompagnant la distribution
d'Objective CAML. La terminologie et les notions utilisées viennent du
monde Unix, mais une grande partie des fonctions de ce module sont
utilisables sous Windows. Nous préciserons, quand il y aura
lieu, le champ d'application des fonctions présentées.