Etude de cas : buffer clavier 1 Principe de fonctionnement Lecture/écriture concurrentes...

15
Etude de cas : buffer clavier 1 Principe de fonctionnement Lecture/écriture concurrentes l’utilisateur tape pendant que le système lit Flux de données homogènes (suite de caractères saisis) Zone tampon Tampon basé sur le modèle du buffer tournant Suite de postes limitée à une capacité maximale n Principe de file : le dernier caractère entré est le dernier lu Contraintes Lecture : s’il n’y a rien à lire, ne rien lire Ecriture : ne pas écraser une donnée non lue La tête de lecture ne double pas la tête d’écriture

Transcript of Etude de cas : buffer clavier 1 Principe de fonctionnement Lecture/écriture concurrentes...

Page 1: Etude de cas : buffer clavier 1 Principe de fonctionnement Lecture/écriture concurrentes lutilisateur tape pendant que le système lit Flux de données homogènes.

Etude de cas : buffer clavier

1

Principe de fonctionnementLecture/écriture concurrentes

l’utilisateur tape pendant que le système litFlux de données homogènes (suite de caractères saisis)Zone tampon

Tampon basé sur le modèle du buffer tournantSuite de postes limitée à une capacité maximale nPrincipe de file : le dernier caractère entré est le dernier

luContraintes

Lecture : s’il n’y a rien à lire, ne rien lireEcriture : ne pas écraser une donnée non lue

La tête de lecture ne double pas la tête d’écriture

Page 2: Etude de cas : buffer clavier 1 Principe de fonctionnement Lecture/écriture concurrentes lutilisateur tape pendant que le système lit Flux de données homogènes.

Etat initial

2

Capacité n fixée : elle ne changera pasDeux têtes (pointeurs) pour la lecture et l’écriture

Page 3: Etude de cas : buffer clavier 1 Principe de fonctionnement Lecture/écriture concurrentes lutilisateur tape pendant que le système lit Flux de données homogènes.

> copy a : .

3

Le buffer est alimenté La tête d’écriture se déplace La lecture n’a pas commencé

Page 4: Etude de cas : buffer clavier 1 Principe de fonctionnement Lecture/écriture concurrentes lutilisateur tape pendant que le système lit Flux de données homogènes.

> dir

4

La lecture de la commande précédente est en cours

L’écriture peut avancer sans attendre Mais on arrive à la limite de capacité du buffer

Page 5: Etude de cas : buffer clavier 1 Principe de fonctionnement Lecture/écriture concurrentes lutilisateur tape pendant que le système lit Flux de données homogènes.

Objectif

5

Concevoir une structure et deux algorithmesLa structure pour implémenter le bufferUn algorithme Lire

S’il y a une donnée à lire, lirePuis déplacer la tête de lecture sur le poste suivant

Un algorithme EcrireS’il n’y a pas de risque d’écraser une donnée non

lue, écrirePuis déplacer la tête d’écriture sur le poste suivant

Page 6: Etude de cas : buffer clavier 1 Principe de fonctionnement Lecture/écriture concurrentes lutilisateur tape pendant que le système lit Flux de données homogènes.

Structure de donnée

6

Poste (l’élément)Emplacement pour stocker une donnéeIndicateur d’état : la donnée est-elle « à lire » ?

EnsembleOrdonnéCirculaire

Page 7: Etude de cas : buffer clavier 1 Principe de fonctionnement Lecture/écriture concurrentes lutilisateur tape pendant que le système lit Flux de données homogènes.

Implémentations

7

StatiqueTableau de postesTête de lecture et d’écriture sont des indexMouvement circulaire : opérations modulo n

DynamiqueStructure chaînéeTête de lecture et d’écriture sont des pointeursMouvement circulaire : simple itération

Page 8: Etude de cas : buffer clavier 1 Principe de fonctionnement Lecture/écriture concurrentes lutilisateur tape pendant que le système lit Flux de données homogènes.

Définition du poste (statique)En langage algorithmique

Exemple de traduction en C

8

typedef struct poste

{

char info;

int alire;

} poste;

Page 9: Etude de cas : buffer clavier 1 Principe de fonctionnement Lecture/écriture concurrentes lutilisateur tape pendant que le système lit Flux de données homogènes.

Définition du buffer (statique)En langage algorithmique

Exemple de traduction en C

9

typedef struct buffer

{

poste donnee[n];

int lecture, ecriture;

} buffer;

Page 10: Etude de cas : buffer clavier 1 Principe de fonctionnement Lecture/écriture concurrentes lutilisateur tape pendant que le système lit Flux de données homogènes.

Lire (statique)

10

Page 11: Etude de cas : buffer clavier 1 Principe de fonctionnement Lecture/écriture concurrentes lutilisateur tape pendant que le système lit Flux de données homogènes.

Ecrire (statique)

11

Page 12: Etude de cas : buffer clavier 1 Principe de fonctionnement Lecture/écriture concurrentes lutilisateur tape pendant que le système lit Flux de données homogènes.

Définition du poste (dynamique)En langage algorithmique

Exemple de traduction en C

12

typedef struct poste

{

char info;

int alire;

struct poste *suivant;

} poste;

Page 13: Etude de cas : buffer clavier 1 Principe de fonctionnement Lecture/écriture concurrentes lutilisateur tape pendant que le système lit Flux de données homogènes.

Définition du buffer (dynamique)En langage algorithmique

Exemple de traduction en C

13

typedef poste *ptrposte;

typedef struct buffer

{

ptrposte lecture, ecriture;

} buffer;

Page 14: Etude de cas : buffer clavier 1 Principe de fonctionnement Lecture/écriture concurrentes lutilisateur tape pendant que le système lit Flux de données homogènes.

Lire (dynamique)

14

Page 15: Etude de cas : buffer clavier 1 Principe de fonctionnement Lecture/écriture concurrentes lutilisateur tape pendant que le système lit Flux de données homogènes.

Ecrire (dynamique)

15