Download - 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.

Transcript
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