web-dev-qa-db-fra.com

Pourquoi un système d'exploitation 32 bits prend-il en charge 4 Go de RAM?

Il suffit de lire quelques notes dans une conférence sur les OS

Un programme considère la mémoire comme un tableau de octets allant de l'adresse 0 à 2 ^ 32-1 (0 à 4GB-1)

Pourquoi 4 Go?

27
Blankman

Parce que 32 bits sont capables de représenter des nombres jusqu'à 232 - 1 = 4294967295 = 4 GiB - 1 et donc adresse jusqu'à 232 octets individuels qui seraient 4 GiB alors.

Il existe cependant des moyens de contourner ce problème. Par exemple, si vous utilisez PAE , même un système d'exploitation 32 bits peut prendre en charge davantage de mémoire. Historiquement, cela a été le plus souvent utilisé sur les serveurs. De plus, les références SKU Windows non-serveur ne la prennent pas en charge. À présent, tout est devenu théorique, étant donné que les processeurs, les systèmes d’exploitation et le support des pilotes 64 bits sont monnaie courante.

56
Joey

Parce que chaque octet de mémoire doit avoir une adresse. Dans un système d'exploitation 32 bits, une adresse est longue de 32 bits; ainsi, il y a 2 ^ 32 adresses possibles, ce qui signifie qu'il y a 2 ^ 32 octets = 4 Go.

24
mipadi

Tout le monde dit 2 ^ 32 = 4GiB, ce qui est juste. Juste au cas où, voici comment nous en sommes arrivés là:

Un ordinateur 32 bits utilise 32 bits pour adresser la mémoire. Chaque bit a une valeur de 0 ou 1. Si vous avez 1 bit, vous avez deux adresses possibles: 0 ou 1. Un système à deux bits (à part) a quatre adresses possibles: 00 = 0, 01 = 1 , 10 = 2, 11 = 3. 2 ^ 2 = 4 . Trois bits ont 8 adresses possibles: 000 = 0, 001 = 1,010 = 2, 011 = 3, 100 = 4, 101 = 5, 110 = 6 et 111 = 7. 

Chaque bit double l'espace d'adressage potentiel, c'est pourquoi 2 ^ n vous indique le nombre d'adresses que vous utilisez pour un nombre de bits donné. 2 ^ 1 = 2, 2 ^ 2 = 2 * 2 = 4, 2 ^ 3 = 2 * 2 * 2 = 8, etc.

Au moment où vous arrivez à 32 bits, vous êtes à 4GiB.

21
Chris Arguin

4 Go = 2 ^ 32 octets.

11
ceejayoz
2 ^ 32 = 4 * 1024 * 1024 * 1024

Cela, en octets, correspond à la définition de 4 Go. En d'autres termes, un registre 32 bits servant de pointeur de mémoire peut adresser 4 Go de mémoire et pas plus.

9
David M

Si vous avez un système 4 bits, cela signifie que l'adresse pour chaque octet est de 4 chiffres binaires, la probabilité que toute votre adresse soit comprise entre 0000 et 1111, qui est 2^4 = 16 (2, car 0 ou 1) , avec quatre bits, il est possible de créer 16 différentes valeurs de zéros et de uns, Si vous avez 16 adresses différentes. chacun représente une byte alors vous pouvez avoir un maximum de 16 bytes

Le système 4-bit ressemblera à ceci:

 enter image description here

Pour un système 32 bits, votre maximum est 2^32 = 4294967292 bytes

7
Mina Gabriel

En réalité, ce n'est pas aussi simple que 2 ^ 32 = 4294967296 octets. Vous voyez qu'en mode protégé x86, avec la pagination activée (c'est-à-dire ce que vous obtenez lorsque vous utilisez un système d'exploitation moderne), vous n'adressez pas directement les emplacements mémoire, même si le mécanisme de traduction de la pagination est transparent pour les applications client.

D'une adresse logique de mémoire 32 bits, lors de l'utilisation de pages 4K:

  • les bits 22 à 31 se rapportent à un répertoire de pages
  • les bits 12 à 21 se rapportent à un tableau de pages
  • les bits 11 à 0 font référence à un décalage dans la page de 4096 octets

Comme vous pouvez le constater, vous avez 2 ^ 10 (1024) répertoires de pages. Dans chaque répertoire de pages, vous avez 2 ^ 10 tables de pages et chaque page compte 2 ^ 12 (4096) octets, soit 2 ^ 32 = 4294967296 octets. La largeur du bus de mémoire est avantageusement la même que la longueur en mots de la CPU, mais il n’est pas nécessaire de l'être du tout. En fait, les processeurs x86 plus modernes prennent en charge PAE, qui permet d'adresser plus de 4 Go (ou GiB) même en mode 32 bits.

5
Tamas Czinege

Car est la quantité d'adresses mémoire différentes (en octets) qui peuvent être stockés dans un mot.

Mais, en fait, ce n’est pas toujours vrai (dans la plupart des cas, ce n’est pas le cas), le système d’exploitation peut gérer plus de mémoire physique que cela (avec PAE) et les applications peuvent utiliser moins de 4 Go de mémoire virtuelle la mémoire est mappée sur le système d'exploitation, 1 Go sous Linux et 2 Go sous Windows, par exemple).

Un autre scénario où cela ne s'applique pas est que si la mémoire était adressée par des mots au lieu d'octets, la mémoire totale adressable serait par exemple de 16 Go.

2
fortran

Principalement en raison du choix du système d'exploitation 32 bits de ne prendre en charge que 2 ^ 32-1 adresses. 

Si la CPU a plus de 32 lignes d'adresse sur le FSB, le système d'exploitation 32 bits peut choisir d'utiliser un mécanisme de pagination pour accéder à plus de 4 Go. (Par exemple, les éditions Windows 2000 Advanced Server/Data Center sur des puces Intel/AMD prises en charge par PAE)

1
Indy9000

4 Go = 2 ^ 32 octets . Mais rappelez-vous ses 4 Go maximum alloués par un système d'exploitation 32 bits En réalité, le système d'exploitation verra moins, par exemple après l'attribution de VRAM.

0
waqasahmed

Comme indiqué précédemment par d'autres utilisateurs, les systèmes d'exploitation Windows 32 bits utilisent des mots 32 bits pour stocker les adresses de mémoire.

En fait, la plupart des chips 32 bits [] de nos jours utilisent un adressage 36 bits, utilisant le modèle d'extension d'adresse physique (PAE) d'Intel. Certains systèmes d'exploitation le supportent directement (Linux, par exemple).

Comme le souligne Raymond Chen, dans Windows une application 32 bits peut allouer plus de 4 Go de mémoire et vous n'avez pas besoin de Windows 64 bits pour le faire . Ou même PAE.

D'ailleurs, les puces 64 bits ne prennent pas en charge la totalité de l'espace mémoire 64 bits. Je crois qu’ils sont actuellement limités à un espace de 42 bits ... l’espace de 36 bits utilisé par PAE, plus les adresses 8 bits supérieures,

0
Powerlord