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 ,
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 distribuée.
Nous en introduisons ici donc la notion sous la
présentation classique que l'on en donne pour le système Unix.
Nous évoquons néanmoins leur utilisation dans un
cadre plus général.
Le terme << communication >> recouvre trois réalités :
-
les entrées-sorties au moyen de descripteurs de fichiers.
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
5 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 a
lieu, le champ d'application des fonctions présentées.