Etude de cas : buffer clavier 1 Principe de fonctionnement Lecture/écriture concurrentes...
-
Upload
jessamond-marechal -
Category
Documents
-
view
105 -
download
0
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