Mémoire
La mémoire est une partie fondamentale d'un ordinateur et d'un système d'exploitation. C'est dans la mémoire que tout est stocké :
- les instructions de chaque process
- le noyau
- des tables de fonctions utilisées par le processeurs (interruptions, tables des pages mémoires)
Son accès est plus rapide que les autres devices, mais est plus lent que la mémoire (beaucoup plus chère) cache du processeur.
définition
La mémoire est tableau de taille $2^{64}-1$ contenant des byte
Un byte correspond à 8 bit, que l'on range par convention de droite à gauche, pour pouvoir facilement lire sa valeur. Le byte ci-dessous correspond au nombre binaire :0b11001101, c'est à dire 205 :
index : 76543210
valeur : 11001101
Si le bit représente la quantité d'information minimale (0 ou 1), le byte est l'unité fondamentale de stockage. On ne pourra jamais véhiculer moins d'un byte et toute donnée sera constituée d'un multiple de byte.
Objets manipulés
Il ne faut pas confondre l'adresse en mémoire, souvent donnée en bit et son contenu, donné en byte.
Pour stocker un tableau adressé sur 8bits il faut $2^8 = 256$ byte, c'est à dire $2^8 \cdot 8 = 2048$ bits.
Unités
Attentions aux unités :
- l'abréviation d'un bit est b
- l'abréviation d'un byte est B
64b correspond à 8B.
On a coutume de considérer les quantités suivantes :
- 1b, l'unité fondamentale
- 8b qui forment un byte (octet), d’abréviation B
- 16b, donc 2B qui forment un word (mot), d'abréviation W
- 32b, donc 4B et 2 word qui forment un dword (double word, double mot), d'abréviation DW
- 64b, donc 8B, 2 dword et 4 word forment un qword (quad word, quadruple mot), d'abréviation QW
Multiples
Les taille de mémoire sont grande, on ne peut les manipuler directement en byte. Le système décimal nous permet de parler de multiples en kilo, méga, giga et tera :
- un kilo byte, kB, pour $10^3$ byte et kilo bit, kb, pour $10^3$ bits
- Un méga byte, MB, qui vaut $10^3 \cdot 10^3 = 10^{2 \cdot 3} = 10^{6}$ byte et un méga bit, Mb, qui vaut $10^{6}$ bit
- un giga byte, GB et giga bit, Gb, qui valent $10^9$ byte ou bit
- un tera byte, TB et tera bit, Tb, qui valent $10^{12}$ byte ou bit
Mais lorsque l'on parle de mémoire, on a coutume de chercher à voir la taille en byte de mémoire d'objets selon une quantité d'adresses exprimé en bit. De là 1 KB n'a que peu de sens. C'est 1024B qui en a (le nombre de byte adressable par 10 bits).
C'est pourquoi, on parlera de multiple binaires comme le kibi byte, pour kilo binaire d'unité kiB, qui vaut $2^{10} = 1024$ byte.
La différence n'est pas grande mais autant être précis.
On peut ainsi progresser dans les multiples :
- un kibi byte, KiB, qui vaut $2^{10} \cdot 2^{10} = 2^{2 \cdot 10} = 2^{20}$ byte
- un mébi byte, MiB, qui vaut $2^{10} \cdot 2^{10} = 2^{2 \cdot 10} = 2^{20}$ byte
- un gibi byte,GiB, qui vaut $2^{30}$ byte (attention, ne cofondez pas avec un Gibi, ça n'a rien à voir)
- un tebi byte, TiB, qui vaut $2^{40}$ byte
Valeurs
La valeur de ce qu'il y a en mémoire dépend du contexte. Un byte peut être :
- un entier entre 0 et 255
- un entier relatif entre -128 et 127 (en complément à deux)
- un caractère ascii si le dernier bit est à 0.
- le début (ou la fin) d'un entier plus grand
- ...
La signification d'un byte ou d'un ensemble de byte contiguës (dans un tableau) est toujours dépendant du contexte.
index : 76543210
valeur binaire : 11001101
int > 0 : 205
int < 0 : -51
ASCII 8b : Í