Loading s7crs_l04_process...

enib_small.png S7-CRS L04_Process — Communication inter-processus

Les fichiers servant de support à cette expérimentation seront obtenus par la commande $ cp -r /home/TP/sujets/CRS_L04_Process . depuis les salles de Labo de l'ENIB, ou par la commande $ sftp -P 55555 -r votre_identifiant@sftp.enib.fr:/home/TP/sujets/CRS_L04_Process . depuis l'extérieur de l'ENIB.

Il s'agit d'une série d'exercices servant à la prise en main de mécanismes élémentaires de programmation système utiles à la communication.
Au cours de cette séance, nous envisagerons tout d'abord la communication d'un unique processus avec son environnement puis nous ferons apparaître de nouveau processus et leur donnerons des moyens de communiquer.

Chaque programme est volontairement très simple afin de se focaliser sur la découverte des services proposés sans être distrait par les détails annexes d'une quelconque application particulière.
Il convient de traiter ces exercices tranquillement, en s'interrogeant à chaque fois sur le propos de la fonctionnalité particulière qui est mise en avant.
Il ne sert strictement à rien d'enchaîner les exercices sans les comprendre en se contentant de “ça compile et ça ne plante pas donc j'ai bon, je passe à la suite...”

La consultation de la documentation est très importante et fait partie intégrante du travail.
Pour ceci vous disposez des pages de manuel indiquées à chaque exercice ainsi que de ces documents de programmation système.
Le fichier d'en-tête crsUtils.hpp doit également être consulté très régulièrement puisqu'il fournit, au delà de quelques fonctionnalités utilitaires, la mise à disposition dans une forme facilitée pour les étudiants (limitation des pointeurs, des conversions de types, utilisation de chaînes et vecteurs C++, contrôle des échecs...) des appels et fonctionnalités systèmes que nous utiliserons.

Vous êtes censés savoir refaire et réutiliser tous ces exercices lors des séances ultérieures ; n'hésitez donc pas à les refaire pour vous entraîner.
{1 #mini } Communication minimale
{2 #copy } Descripteurs de fichiers variés
{3 #fork } Lancer/attendre un processus
{4 #addr } Espace d'adressage d'un processus
{5 #pipe } Tubes de communication
{6 #redir_exec } Redirections d'entrées/sorties et recouvrement de processus

Les diverses réalisations et expérimentations menées ici illustrent le fait qu'à travers la notion de descripteur de fichier il est possible d'utiliser indifféremment les entrées/sorties standards, des fichiers usuels et des tubes de communication, et même de procéder à des redirections pour réutiliser des programmes existants et enfin d'interconnecter des programmes pour les faire travailler ensemble.
Il s'agit d'un principe fondateur des systèmes d'exploitation issus de la famille UNIX.

À travers cette expérimentation, nous venons de mettre en évidence le fait que les différents processus exécutés dans un système d'exploitation sont cloisonnés par défaut.
Pour les faire communiquer il est nécessaire de demander au système d'exploitation la création de moyens explicites pour les faire communiquer.
Lorsque les processus sont apparentés, cela facilite la mise en commun de ces moyens de communication ; un processus enfant bénéficie implicitement des ressources préalablement préparées par son processus parent.
La combinaison de ces fonctionnalités permet de réutiliser tels quels des programmes depuis d'autres par simple redirection des entrées/sorties.