L'explication de pili36 dans le message #5 ne tient pas la route. Il n'y a pas plus de "norme standard" que de "norme Microsoft" pour la quantification de l'espace mémoire. Par contre il y a beaucoup de confusion dans ce domaine.
Pour rappel, il y a deux familles de préfixes multiplicateurs
normalisés :
- les préfixe SI (ou décimaux) qui représentent des puissances de 10 : k=1000, M=1000^2, G=1000^3, T=1000^4, etc.
- les préfixes binaires qui représentent des puissances de 2 (1024=2^10) : Ki=1024, Mi=1024^2, Gi=1024^3, Ti=1024^4, etc.
Comme on peut le voir, les noms, symboles et valeurs des préfixes binaires et décimaux sont proches mais leurs valeurs s'écartent en augmentant : 2% entre k et Ki, 5% entre M et Mi, 7% entre G et Gi, 10% entre T et Ti. Les préfixes multiplicateurs binaires sont plus pratiques pour noter des valeurs qui sont des puissances entières de 2, comme la capacité des composants de mémoire (RAM ou flash) ou la taille d'un espace d'adressage, c'est pourquoi ils sont largement utilisés en électronique et informatique (mais pas en réseau et télécom où on utilise les préfixes décimaux). Malheureusement la normalisation des préfixes binaires ci-dessus a été tardive, et entretemps un usage "savage" des symboles des préfixes SI mais en leur attribuant des valeurs binaires s'est développé dans ces domaines, et les mauvaises habitudes ont la vie dure.
Windows est dans ce cas : il utilise de façon constante la notation des symboles préfixes SI mais en leur donnant des valeurs binaires. Même chose pour le JEDEC, l'organisme de normalisation qui regroupe notamment les fabricants de composants électroniques de mémoire.
En ce qui concerne GNU/Linux, le noyau, qui gère la mémoire, fait plutôt la même chose. En revanche dans les programmes utilisateur, certains continuent à faire pareil tandis que d'autres utilisent désormais les notations normalisées de façon correcte (
ifconfig,
parted).
free n'affiche pas de préfixe explictement mais affiche les valeurs en kibi, mébi ou gibi-octets alors que sa page de manuel et son aide en ligne parlent de kilo, méga ou giga-octets.
Dans tous les cas, si vous avez un doute sur la signification d'un préfixe multiplicateur, c'est simple : affichez la valeur exacte sans préfixe, en bits ou octets et vous verrez bien.
Pour en revenir au sujet, la taille d'une barrette de RAM est une puissance entière de 2 dont la valeur est légèrement supérieure à la puissance entière de 10 correspondante. Une barrette marquée "4 GB" par le fabricant fait en réalité 4 Gio, soit 4,3 Go. Pas 3,8 Gio ni 3,8 Go. Ne pas oublier qu'une partie de la mémoire est réservée par la carte mère (pour le GPU intégré notamment), et une autre est réservée par le noyau lui-même. Le "total" affiché par
free ne compte pas la mémoire réservée par le noyau. Pour avoir une idée de ces quantités, on peut rechercher dans les logs du noyau une ligne qui commence par "Memory:"
$
Memory: 126248k/131008k available (1762k kernel code, 4244k reserved, 853k data, 252k init, 0k highmem)
Il s'agit d'une machine qui a 128 Mio de RAM, soit 128*1024=131072 Kio, valeur très proche de 131008k. 126248k est plus proche de la valeur qui est affichée par free dans la colonne "total" (126564).
anonyme : Je n'ai jamais vu de chipset qui limite la RAM à 3 Gio (ou 3 Go, ce qui a encore moins de sens). 2 Gio, 4 Gio, la limite est toujours une puissance entière de 2, ce qui est logique.
Edit à toto :
Correction de la balise user en séparant le $ de la commande.
Il vaut mieux montrer que raconter.