afficher >><< masquer ]
SAMPI - Editeur structuré
1. Le Problème et la Proposition
2. Le Langage Primitif de Représentation Textuelle
2.1. Présentation de la Syntaxe Concrète
2.2. Notations
2.3. Exemple de structuration des données
2.4. Exemple de structuration des traitements
2.4.1. La pile
2.4.2. Les lecteurs-écrivains
2.4.22.1. La spécification du problème
2.4.22.2. La réalisation du problème
2.4.22.3. La spécification des ressources doubles
2.4.22.4. La réalisation des ressources doubles
2.4.3. La racine carrée
2.5. Exemple de structurations connexes
3. Le Langage Complété pour la Structuration des Textes
3.1. Présentation de la Syntaxe Complétée
3.2. Etude quantitative de l'évolution des programmes
3.3. L'édition syntaxique
3.4. étude de cas : le langage LTR3 et l'atelier ENTREPRISE
4. L'Enrichissement du Langage par de Nouveaux Concepts
4.1. Présentation de la Syntaxe Abstraite
4.2. Les difficultés
4.3. Compléter la Syntaxe
5. La Formalisation des Solutions Techniques
5.1. L'évaluation fonctionnelle
5.2. La structuration par les objets
5.3. Modèle sémantique comparé de l'évaluateur
5.4. Comparaison critique
5.5. Construction de la Syntaxe Abstraite
6. Les Comparaisons avec d'autres Approches
7. Les Perspectives
8. Les Editeurs
8.0. brisé sur la barrière de la complexité (une fois de plus)
8.1. L'éditeur ligne : Manuel de l'utilisateur
8.2. L'éditeur page : Guide de l'utilisateur
9. Les Aspects d'Implantation
9.1. Contexte d'évaluation
9.2. La Syntaxe Abstraite : Manuel du concepteur
9.3. L'éditeur page : Guide de l'implanteur
Références
Rubrique Perl-Javascript

Les lecteurs-écrivains

Après « l'exemple d'école » des Types Abstraits de données : la pile, on présente « l'exemple d'école » du parallélisme : il s'agit de l'exemple des lecteurs-écrivains, qu'on traite ici avec une priorité égale pour les lecteurs et les écrivains.

1. La spécification du problème

2. La réalisation du problème

3. La spécification des ressources doubles

4. La réalisation des ressources doubles

1. La spécification du problème

L'exemple appartenant au domaine du parallélisme, on utilisera les réseaux de Petri pour le spécifier.

Pour construire le réseau des lecteurs-écrivains on utilise la ressource double :

ressource doubleflux de contrôle
ressource doubleflux de contrôle
ressource double R(P,Q), Q≤P :
reserve : réserve un point d'entrée de la ressource : au maximum P réservations ;
free : libère un point d'entrée de la ressource : au minimum 0 réservation ;
test : teste si le nombre de points d'entrée réservés est inférieur strictement à Q ;
init : initialise la ressource.
Une tâche est bloquée :
- sur reserve : quand P points d'entrée sont occupés ;
- sur free : quand aucun point d'entrée n'est occupé ;
- sur test : quand au moins Q points d'entrée (Q≤P) sont occupés.

Les lecteurs-écrivains

On utilise deux ressources doubles :
R_ecr = R(1,1) : la ressource des écrivains : les écrivains sont en exclusion mutuelle ; les écrivains sont en exclusion avec les lecteurs.
R_lect = R(∞,1) : la ressource des lecteurs : les lecteurs peuvent travailler simultanément ; les lecteurs sont en exclusion avec les écrivains.

les lecteurs-écrivains

E_reserve (réservation d'un écrivain)
- reserve la ressource d'écriture,
- teste s'il n'y a pas de lecteur, testé dans la ressource de lecture.
L_reserve (réservation d'un lecteur)
- teste s'il n'y a pas d'écrivain, testé dans la ressource d'écriture,
- signale sa présence, par une réservation de la ressource de lecture.
E_free (libération d'un écrivain)
- libère la ressource d'écriture.
L_free (libération d'un lecteur)
- signale son départ, par une libération de la ressource de lecture.