Accueil
 1  Espace mémoire d'un processus
 2  Adresse mémoire
 2.1  Adresse d'une variable
 3  Pointeur
 4  Allocation dynamique de mémoire
   
   
   
   
 

 Contacts

W3C validator

Département INF  
 Titre du cours


2 Adresse mémoire

  • On peut faire référence à n’importe quel octet de l’espace mémoire grace à son adresse
  • Adresse mémoire virtuelle codée sur k bits1
    • donc 2k octets accessibles (de 00...00 à 11...11)
  • exemple: à l’adresse 0x1001 est stocké l’octet 0x41
    • peut être vu comme un char (le caractère A)
    • peut être vu comme une partie d’un int (par exemple l’entier 0x11412233)

Figures/memoire

    previous     next 


Rappel: hexadécimal Les valeurs préfixées par 0x sont représentées en hexadécimal (en base 16). Ainsi, 0x200d correspond au nombre qui s’écrit 200D en base 16, soit le nombre 2 × 163 + 0 × 162 + 0 × 161 + 13 × 160 = 8205 écrit en base 10.

La notation hexadécimale est couramment utilisée pour représenter des octets car deux chiffres en hexadécimal permettent de coder 256 (soit 28) valeurs différentes. On peut donc représenter les 8 bits d’un octet avec deux chiffres hexadécimaux. Par exemple, 0x41 représente l’octet 0100 0001.

Architecture des processeurs Les processeurs équipant les ordinateurs modernes sont généralement de type x86_64. Pour ces processeurs, les adresses virtuelles sont codées sur 64 bits. Un processus peut donc adresser 264 octets (16 Exaoctets ou 16 x 1024 Pétaoctets) différents.

ARM est une autre architecture de processeur très répandue puisqu’elle équipe la plupart des smartphones. Jusqu’à très récemment, les processeurs ARM fonctionnaient en 32 bits. Un processus pouvait donc accéder à 232 octets (4 Gigaoctets). Les processeurs ARM récents sont maintenant 64 bits, ce qui permet à un processus d’utiliser une plus grande quantité de mémoire.

François Trahay, Télécom SudParis, CSC4103 – Programmation système, 2019–2020

1.k dépend de l’architecture. Sur les processeurs modernes (64 bits), on a k = 64.