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

Post on 04-Apr-2015

105 views 0 download

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

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

Etat initial

2

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

> copy a : .

3

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

> 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

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

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

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

Définition du poste (statique)En langage algorithmique

Exemple de traduction en C

8

typedef struct poste

{

char info;

int alire;

} poste;

Définition du buffer (statique)En langage algorithmique

Exemple de traduction en C

9

typedef struct buffer

{

poste donnee[n];

int lecture, ecriture;

} buffer;

Lire (statique)

10

Ecrire (statique)

11

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;

Définition du buffer (dynamique)En langage algorithmique

Exemple de traduction en C

13

typedef poste *ptrposte;

typedef struct buffer

{

ptrposte lecture, ecriture;

} buffer;

Lire (dynamique)

14

Ecrire (dynamique)

15