La gestion de la mémoire
Cours : La gestion de la mémoire. Recherche parmi 300 000+ dissertationsPar lagdem0 • 5 Janvier 2013 • Cours • 4 363 Mots (18 Pages) • 878 Vues
Gestion de la mémoire
1. Qu'est-ce que la mémoire ?
- Définitions
- Exemples
2. Allocation contiguë en mémoire
- Partitions de taille fixe, de taille variable
3. Pagination et mémoire virtuelle
Annexe. La pile : utilisation des arguments passés à main.
_
Définitions
- Mémoire : juxtaposition de cellules ou mots-mémoire ou cases-mémoire à m bits
(Binary digIT). Chaque cellule peut coder 2m informations différentes.
- Octet (byte) : cellule à huit bits. (1 Kilo-octet = 210octets, 1 Mega-octet =
220octets).
- Mot : cellule à 16, 32, 64 bits.
- Temps d'accès à la mémoire (principale) : 20 à 100 ns.
Généralités :
Sur une machine classique, rien ne distingue, en mémoire, une instruction d'une donnée (architecture Von Neumann).
Exemple de protections logicielles :
- données accessibles en lecture/écriture
- programme accessible en lecture seule
Evolution :
-Sur les machines dotées des processeurs les plus récents, ce type d'architecture est remis en cause. En effet, ces processeurs sont équipés de mémoire appelées caches et ces caches sont souvent distincts pour les données et les instructions. On parle dans ce cas de «Harvard type cache ».
-Sur certains calculateurs spécialisés (systèmes embarqués, processeurs de traitement du signal, ...) les programmes et les données sont rangés dans des mémoires différentes : programme en ROM (read only memory), données en RAM.
Pourquoi la mémoire ?
Le processeur va chercher les informations dont il a besoin, c'est-à-dire les instructions et les données, dans la mémoire. Il ne va jamais les chercher sur le disque ! Ce dernier sert de support d'archivage aux informations, en effet la mémoire s'efface lorsque on coupe l'alimentation électrique de la machine.
La mémoire, ressource du S.E
• La mémoire est assemblage de cellules repérées par leur numéro, ou
adresse.
• Gestionnaire de mémoire : gère l'allocation de l'espace mémoire au système et aux processus utilisateurs.
• n = largeur du bus d'adresses
• m = largeur du bus de données
Adresse d'une information :
Chaque information est repérée par son adresse, c'est à dire le numéro de son premier octet. Cet adressage en termes d'octets permet d'adresser, de repérer, en mémoire tous types d'information, quelque soit leur taille. On peut ainsi adresser un simple octet (un char en langage C), un mot sur deux octets (un short en langage C), etc.
Types de base en C
• En langage C, la coutume sur Sun, par exemple, est la suivante : [unsigned] char 8 bits [unsigned]short 16 bits
[unsigned]int un mot machine (32 ou 16 bits !)
[unsigned]long 32 bits
Voici la règle :
1 ! sizeof (char) ! sizeof (short) ! sizeof (int) ! sizeof (long)
et en C ansi :
sizeof (short) " 16 bits
Adressage de la mémoire
• les cellules mémoire sont repérées par leur adresse en termes d'octets. Ceci permet d'adresser différents types de données, en langage C :
char, int , long
• Exemple d'implantation de variables sur une machine à mots de 4 octets
(les données sont implantées à partir de l'adresse 2) :
#include <stdlib.h>
int j; short k; char c;
/*****************************
j sur 4 octets -> adresse = 2
k sur 2 octets -> adresse = 6
c sur 1 octet -> adresse = 8
******************************/
int main(void) {
exit(0);
}
• La règle :
1 ! sizeof (char) ! sizeof (short) ! sizeof (int) ! sizeof (long)
• ... et en C ANSI : sizeof (short) " 16 bits
Les adresses des données sont alignées sur le mot mémoire.
Conséquence de l'alignement : la taille d'un tableau de structure, par exemple, n'est pas la même d'une machine à l'autre :
struct {
int Tab [4];
char c;
} Buf [3] ;
sizeof (Buf ) = ?
...