![Page 1: Mémoire périphérique Stockage primaire: Mémoire principale (RAM) Stockage secondaire: Périphériques Disques Rubans magnétiques etc](https://reader036.vdocuments.fr/reader036/viewer/2022082806/551d9da1497959293b8d068a/html5/thumbnails/1.jpg)
Mémoire périphérique
Stockage primaire: Mémoire principale (RAM)
Stockage secondaire: Périphériques Disques Rubans magnétiques etc.
![Page 2: Mémoire périphérique Stockage primaire: Mémoire principale (RAM) Stockage secondaire: Périphériques Disques Rubans magnétiques etc](https://reader036.vdocuments.fr/reader036/viewer/2022082806/551d9da1497959293b8d068a/html5/thumbnails/2.jpg)
Lecteur de disque
Piste
Perche
Têtes de lecture/écritureAxe
Plateaux
![Page 3: Mémoire périphérique Stockage primaire: Mémoire principale (RAM) Stockage secondaire: Périphériques Disques Rubans magnétiques etc](https://reader036.vdocuments.fr/reader036/viewer/2022082806/551d9da1497959293b8d068a/html5/thumbnails/3.jpg)
SecteursUn secteur est l’unité de base des E/S.
Secteurs
Espaces inter-secteur Bits de données
![Page 4: Mémoire périphérique Stockage primaire: Mémoire principale (RAM) Stockage secondaire: Périphériques Disques Rubans magnétiques etc](https://reader036.vdocuments.fr/reader036/viewer/2022082806/551d9da1497959293b8d068a/html5/thumbnails/4.jpg)
Secteurs
Distance physique entre deux secteurs logiquement adjacent sur une piste.
Tête Tête
Facteur d’entrelacement (Interleaving factor):
![Page 5: Mémoire périphérique Stockage primaire: Mémoire principale (RAM) Stockage secondaire: Périphériques Disques Rubans magnétiques etc](https://reader036.vdocuments.fr/reader036/viewer/2022082806/551d9da1497959293b8d068a/html5/thumbnails/5.jpg)
Terminologie
Bloc (cluster): Groupe de secteurs. Plus petite unité d’allocation d’un fichier.
Souvent entre 512 octets et 4 Ko
![Page 6: Mémoire périphérique Stockage primaire: Mémoire principale (RAM) Stockage secondaire: Périphériques Disques Rubans magnétiques etc](https://reader036.vdocuments.fr/reader036/viewer/2022082806/551d9da1497959293b8d068a/html5/thumbnails/6.jpg)
Accès disque par seconde
Temps de rotation:. À 7200 rpm, une rotation prend 8.3ms.
Temps d'accès moyen disque: En moyenne le disque doit faire ½ rotation (4.15ms) Supposons que le temps moyen pour positionner le
bras sur la bonne piste est aussi 4.15ms Total: 8.3 ms
Nombre d'accès disque par seconde: 120
![Page 7: Mémoire périphérique Stockage primaire: Mémoire principale (RAM) Stockage secondaire: Périphériques Disques Rubans magnétiques etc](https://reader036.vdocuments.fr/reader036/viewer/2022082806/551d9da1497959293b8d068a/html5/thumbnails/7.jpg)
Accès mémoire vs accès disque
Intel Core 2: 27079 MIPS (2.93 GHz)27 milliards d'instructions par secondes
Utilisé avec un disque permettant 120 accès/sec.on a:
225 millions d'instructions = 1 accès disque
Même si ces calculs ne sont pas tout à fait exacts, ils donnent une idée de l'ordre de grandeur.
![Page 8: Mémoire périphérique Stockage primaire: Mémoire principale (RAM) Stockage secondaire: Périphériques Disques Rubans magnétiques etc](https://reader036.vdocuments.fr/reader036/viewer/2022082806/551d9da1497959293b8d068a/html5/thumbnails/8.jpg)
Traitement de fichiers
Il est essentiel de 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. Principe de la localité Un bloc lu sur le disque doit être utilisé
optimalement.
![Page 9: Mémoire périphérique Stockage primaire: Mémoire principale (RAM) Stockage secondaire: Périphériques Disques Rubans magnétiques etc](https://reader036.vdocuments.fr/reader036/viewer/2022082806/551d9da1497959293b8d068a/html5/thumbnails/9.jpg)
Mémoire tampon
L’information d’un bloc 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: au moins une pour la lecture et une pour l’écriture.
![Page 10: Mémoire périphérique Stockage primaire: Mémoire principale (RAM) Stockage secondaire: Périphériques Disques Rubans magnétiques etc](https://reader036.vdocuments.fr/reader036/viewer/2022082806/551d9da1497959293b8d068a/html5/thumbnails/10.jpg)
Point de vu du programmeurVision logique des fichiers:
Un tableau d’octets (sur Unix et Windows) 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.
![Page 11: Mémoire périphérique Stockage primaire: Mémoire principale (RAM) Stockage secondaire: Périphériques Disques Rubans magnétiques etc](https://reader036.vdocuments.fr/reader036/viewer/2022082806/551d9da1497959293b8d068a/html5/thumbnails/11.jpg)
stdio.h#include <stdio.h>
FILE* fopen(char* fichier, char *mode);
mode r pour lecture, le fichier doit exister w pour écriture, détruit les fichiers existants a pour ajout à la fin r+ pour lecture et écriture, le fichier doit
exister w+ pour lecture et écriture, le fichier est créé
s'il n'existe pas déjà.
int fclose(FILE* fp);
![Page 12: Mémoire périphérique Stockage primaire: Mémoire principale (RAM) Stockage secondaire: Périphériques Disques Rubans magnétiques etc](https://reader036.vdocuments.fr/reader036/viewer/2022082806/551d9da1497959293b8d068a/html5/thumbnails/12.jpg)
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
![Page 13: Mémoire périphérique Stockage primaire: Mémoire principale (RAM) Stockage secondaire: Périphériques Disques Rubans magnétiques etc](https://reader036.vdocuments.fr/reader036/viewer/2022082806/551d9da1497959293b8d068a/html5/thumbnails/13.jpg)
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]);
![Page 14: Mémoire périphérique Stockage primaire: Mémoire principale (RAM) Stockage secondaire: Périphériques Disques Rubans magnétiques etc](https://reader036.vdocuments.fr/reader036/viewer/2022082806/551d9da1497959293b8d068a/html5/thumbnails/14.jpg)
fstream#include <fstream>#include <iostream>
//3 classes:ifstream: pour lire dans des fichiersofstream: pour écrire dans des fichiersfstream: pour lire et écrire dans des fichiers
fstream f;f.open("toto.txt", ios::in|ios::out);
mode d'ouverture: ios::in // ouverture en lecture ios::out // ouverture en écriture ios::app // ajout en fin de fichier ios::ate // se position à la fin ios:: binary // mode binaire ios::trunc // tronque le fichier à 0
![Page 15: Mémoire périphérique Stockage primaire: Mémoire principale (RAM) Stockage secondaire: Périphériques Disques Rubans magnétiques etc](https://reader036.vdocuments.fr/reader036/viewer/2022082806/551d9da1497959293b8d068a/html5/thumbnails/15.jpg)
fstream
f.seekp(d, ios_base::cur) // placer le curseur put
d est le nombre d'octets de déplacement Position de départ:
ios_base::cur ios_base::beg ios_base::end
f.seekg(d,ios_base::beg) // placer le curseur get
![Page 16: Mémoire périphérique Stockage primaire: Mémoire principale (RAM) Stockage secondaire: Périphériques Disques Rubans magnétiques etc](https://reader036.vdocuments.fr/reader036/viewer/2022082806/551d9da1497959293b8d068a/html5/thumbnails/16.jpg)
fstream
char tampon[100];f.read(tampon, 100); //lire 100 caractères
const char tab[]="toto";f.write(tab, 4); // écrire 4 caractères
char c;f.get(c);f.put(c);
//Entrées/sorties formatées:f<<"Bonjour"<<endl;int n;f>>n;
![Page 17: Mémoire périphérique Stockage primaire: Mémoire principale (RAM) Stockage secondaire: Périphériques Disques Rubans magnétiques etc](https://reader036.vdocuments.fr/reader036/viewer/2022082806/551d9da1497959293b8d068a/html5/thumbnails/17.jpg)
surcharger operator<<
struct complex{ double imag; double reel; complex(double i, double r):imag(i),reel(r){}};
ostream& operator<<(ostream& f, complex c){
f<<"("<<c.reel<<", "<<c.imag<<")";return f;
}