Si le BIOS est un programme 16 bits fonctionnant en mode réel, et dans ce mode il est possible d'adresser seulement 1 Mo, comment le BIOS détermine-t-il la quantité de RAM disponible, comme 1 Go par exemple?
Réponse
Trop de publicités?Le BIOS est un programme 16 bits fonctionnant en mode réel, et dans ce mode, il est possible d'adresser uniquement 1 Mo.
Ceci est incorrect.
Le mode réel 16 bits ne limite pas le processeur à 1 Mo de mémoire.
Alors qu'il est vrai qu'un processeur x86 démarre en mode réel et utilise par défaut l'ensemble d'instructions 16 bits 8086, il existe des extensions dans l'ensemble d'instructions 80286. Si vous préfixez une instruction 8086 avec le byte 0x67, cela permet à cette instruction d'accéder à un registre 32 bits, qui a accès à 232 octets, ou 4 GiB de mémoire.
Si vous utilisez un processeur 64 bits, le processeur peut utiliser PAE (Extension d'Adresses Physiques), ce qui donne au processeur un accès à 252 octets de mémoire, plus que ce qui peut être physiquement installé sur n'importe quelle carte mère moderne.
Source Comment le BIOS peut détecter la taille totale de la mémoire étendue
Comment le BIOS détermine-t-il la quantité de RAM disponible, comme 1 Go par exemple ?
Il utilise des méthodes documentées dans les fiches techniques du contrôleur de mémoire (northbridge).
La plupart des BIOS ne peuvent pas utiliser de RAM avant de détecter le type de RAM installée, puis de détecter la taille de chaque module de mémoire, puis de configurer le chipset pour utiliser la RAM détectée.
Tout cela dépend des méthodes spécifiques au chipset, et est généralement documenté dans les fiches techniques du contrôleur de mémoire (northbridge).
La RAM est inutilisable pour l'exécution de programmes pendant ce processus. Le BIOS fonctionne initialement à partir de la ROM, donc il peut jouer les jeux nécessaires avec les puces de RAM. Mais il est totalement impossible de faire cela à partir de n'importe quel autre programme.