Mmoire priphrique Stockage primaire Mmoire principale RAM Stockage

  • Slides: 20
Download presentation
Mémoire périphérique Stockage primaire: Mémoire principale (RAM) Stockage secondaire: Périphériques – Disques – Rubans

Mémoire périphérique Stockage primaire: Mémoire principale (RAM) Stockage secondaire: Périphériques – Disques – Rubans magnétiques

Comparaison (exemple) Temps d’accès à un octet de donnée • Accès disque: 9 x

Comparaison (exemple) Temps d’accès à un octet de donnée • Accès disque: 9 x 10 -3 sec • Accès mémoire: 60 x 10 -9 sec.

Comparaisons (par mégabyte) Médium RAM Disque Floppy Ruban 1996 $45. 00 0. 25 0.

Comparaisons (par mégabyte) Médium RAM Disque Floppy Ruban 1996 $45. 00 0. 25 0. 50 0. 03 1997 7. 00 0. 10 0. 36 0. 01 2000 1. 50 0. 01 0. 25 0. 001 RAM est volatile. RAM est environ 1/4 million fois plus rapide qu’un disque.

Traitement de fichiers Minimiser le nombre d’accès disque! 1. Structurer l’information sur le disque

Traitement de fichiers Minimiser le nombre d’accès disque! 1. Structurer l’information sur le disque pour minimiser le nombre d’accès nécessaires. 2. Minimiser le nombre d’accès futurs. Structure de fichier: organisation des données sur le disque. Compromis espace temps (disque): Compresser l’information peut réduire le temps de d’accès et de traitement.

Lecteur de disque Perche Plateaux Axe Têtes de lecture/écriture Piste

Lecteur de disque Perche Plateaux Axe Têtes de lecture/écriture Piste

Secteurs Un secteur est l’unité de base des E/S. Secteurs Espaces inter-secteur Bits de

Secteurs Un secteur est l’unité de base des E/S. Secteurs Espaces inter-secteur Bits de données

Secteurs Facteur d’entrelacement (Interleaving factor): Distance physique entre deux secteurs logiquement adjacent sur une

Secteurs Facteur d’entrelacement (Interleaving factor): Distance physique entre deux secteurs logiquement adjacent sur une piste. Tête

Terminologie Principe de la localité: Lorsqu’un enregistrement est lu sur le disque, la prochaine

Terminologie Principe de la localité: Lorsqu’un enregistrement est lu sur le disque, la prochaine requête risque de se faire dans la même localité. Groupe de secteurs (cluster): Plus petite unit d’allocation d’un fichier. Domaine (extent): Un ensemble de groupes physiquement contigue. Fragmentation interne: Espace perdu dans un secteur si la taille de l’enregistrementif ne correspond pas à la taille d’un secteur où si la taille du fichier n’est pas un multiple de la taille d’un groupe de secteurs.

Temps d’accès (seek time): Temps pour atteindre la piste désirée. Temps inter-piste: Temps minimum

Temps d’accès (seek time): Temps pour atteindre la piste désirée. Temps inter-piste: Temps minimum pour se déplacer d’une piste à une piste adjacente. . Temps d’accès moyen: Temps moyen pour atteindre une piste lors d’un accès direct.

Autres facteurs Temps de rotation: . – La moitié d’une rotation en moyenne –

Autres facteurs Temps de rotation: . – La moitié d’une rotation en moyenne – À 7200 rpm, cela prend 8. 3/2 = 4. 2 ms. Temps de transfert: À 7200 rmp: 8. 3 ms * (Nb secteurs à lire) / (Nb secteurs/piste)

Exemple Disque de 16. 8 GB sur 10 plateaux= 1. 68 GB/plateau 13, 085

Exemple Disque de 16. 8 GB sur 10 plateaux= 1. 68 GB/plateau 13, 085 pistes/plateau 256 secteurs/piste 512 octets/secteur Temps inter-piste: 2. 2 ms Temps d’accès moyen: 9. 5 ms 4 KB groupes, 32 groupes/piste. Facteur d’entrelacement de 3. 5400 RPM (11. 1 ms par rotation)

Exemple (2) Lire un fichier de 1 MB divisé en 2048 secteurs de 512

Exemple (2) Lire un fichier de 1 MB divisé en 2048 secteurs de 512 octets. On suppose que le fichier est sur 8 pistes contiguës. Première piste: 9. 5 + 11. 1/2 + 3 x 11. 1 = 48. 4 ms 7 autres pistes: 2. 2 + 11. 1/2 + 3 x 11. 1 = 41. 1 ms. Total: 48. 4 + 7 * 41. 1 = 335. 7 ms

Exemple (3) Lire un fichier de 1 MB divisé en 2048 secteurs de 512

Exemple (3) Lire un fichier de 1 MB divisé en 2048 secteurs de 512 octets. On suppose que les groupes sont réparties aléatoirement sur le disque. 256 groupes. Temps de lecture d’un groupe est (3 x 8)/256 rotation. Ce qui donne 1 ms. 256(9. 5 + 11. 1/2 + 1) = 4108. 8 ms. C’est-àdire plus de 4 secondes.

Combien d’octets doit-on lire? Temps pour lire une piste: 9. 5 + 11. 1/2

Combien d’octets doit-on lire? Temps pour lire une piste: 9. 5 + 11. 1/2 + 3 x 11. 1 = 48. 4 ms. Temps pour lire un secteur: 9. 5 + 11. 1/2 + (1/256)11. 1 = 15. 1 ms. Temps pour lire un octet: 9. 5 + 11. 1/2 + (1/(256*512))11. 1= 15. 05 ms. La plupart des lecteurs de disque lisent 1 secteur à la fois.

Mémoire tampon L’information d’un secteur est mise dans un tampon ou cache. Si le

Mémoire tampon L’information d’un secteur est mise dans un tampon ou cache. Si le prochain accès est dans le même tampon alors on a pas besoin de faire un accès disque. En général, il y a plus d’une mémoire tampon pour la lecture et pour l’écriture.

Point de vu du programmeur Vision logique des fichiers: – Un tableau d’octets. –

Point de vu du programmeur Vision logique des fichiers: – Un tableau d’octets. – Un pointeur de fichier indique la position courante. 3 opérations fondamentales: – Lire n octets à partir de la position courante (déplacer le pointeur de fichier) – Écrire n octets à partir de la position courante (déplacer le pointeur de fichier) – Déplacer le pointeur de fichier à une position donnée.

stdio. h #include <stdio. h> FILE* fopen(char* fichier, char *mode); mode • • r

stdio. h #include <stdio. h> FILE* fopen(char* fichier, char *mode); mode • • r w a r+ pour lecture, le fichier doit exister pour écriture, détruit les fichiers existants pour ajout à la fin pour lecture et écriture, le fichier doit exister int fclose(FILE* fp);

stdio. h int feof(FILE* fp); int fseek(FILE* fp, long deplacement, int origine) origine –

stdio. h int feof(FILE* fp); int fseek(FILE* fp, long deplacement, int origine) origine – SEEK_CUR position courante – SEEK_END fin du fichier – SEEK_SET début du fichier

stdio. h size_t fread(void* tampon, size_t taille, size_t nombre, FILE* fp); size_t fwrite(void* tampon,

stdio. h size_t fread(void* tampon, size_t taille, size_t nombre, FILE* fp); size_t fwrite(void* tampon, size_t taille, size_t nombre, FILE* fp); int fprintf(FILE* fp, char* format[, parametres]); int fscanf(FILE* fp, char* format[, parametres]);

fstream. h #include <fstream. h> void fstream: : open(char* name, openmode); – Example: ios:

fstream. h #include <fstream. h> void fstream: : open(char* name, openmode); – Example: ios: : in | ios: : binary void fstream: : close(); fstream: : read(char* ptr, int numbytes); fstream: : write(char* ptr, int numbtyes); fstream: : seekp(int pos); fstream: : seekp(int incr, int pos); • pos= ios: : curr où ios: : deb où ios: : end