Etude de cas : buffer clavier 1 Principe de fonctionnement Lecture/écriture concurrentes...
-
Upload
jessamond-marechal -
Category
Documents
-
view
104 -
download
0
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.](https://reader035.fdocument.pub/reader035/viewer/2022062417/551d9da7497959293b8d7dcb/html5/thumbnails/1.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062417/551d9da7497959293b8d7dcb/html5/thumbnails/2.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062417/551d9da7497959293b8d7dcb/html5/thumbnails/3.jpg)
> 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.](https://reader035.fdocument.pub/reader035/viewer/2022062417/551d9da7497959293b8d7dcb/html5/thumbnails/4.jpg)
> 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.](https://reader035.fdocument.pub/reader035/viewer/2022062417/551d9da7497959293b8d7dcb/html5/thumbnails/5.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062417/551d9da7497959293b8d7dcb/html5/thumbnails/6.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062417/551d9da7497959293b8d7dcb/html5/thumbnails/7.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062417/551d9da7497959293b8d7dcb/html5/thumbnails/8.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062417/551d9da7497959293b8d7dcb/html5/thumbnails/9.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062417/551d9da7497959293b8d7dcb/html5/thumbnails/10.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062417/551d9da7497959293b8d7dcb/html5/thumbnails/11.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062417/551d9da7497959293b8d7dcb/html5/thumbnails/12.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062417/551d9da7497959293b8d7dcb/html5/thumbnails/13.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062417/551d9da7497959293b8d7dcb/html5/thumbnails/14.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062417/551d9da7497959293b8d7dcb/html5/thumbnails/15.jpg)
Ecrire (dynamique)
15