x64 sistemas sistema saber que procesador operativos operativo entre diferencia cual como memory operating-system virtual-address-space

memory - sistemas - sistema operativo de 64 bits



¿Por qué un sistema operativo de 32 bits admite 4 GB de RAM? (11)

Simplemente leyendo algunas notas en una conferencia de purdue sobre sistemas operativos , y dice:

Un programa ve la memoria como una matriz de bytes que va desde la dirección 0 a 2 ^ 32-1 (0 a 4GB-1)

¿Por qué 4 GB?


4 GB = 2 ^ 32 bytes. Pero recuerde su máximo de 4 GB asignado por un sistema operativo de 32 bits. En realidad, el sistema operativo verá menos, por ejemplo, después de la asignación de VRAM.


4 GB = 2 ^ 32 bytes.


Como se indicó anteriormente por otros usuarios, los sistemas operativos Windows de 32 bits usan palabras de 32 bits para almacenar direcciones de memoria.

En realidad, la mayoría de los chips de 32 bits actualmente usan un direccionamiento de 36 bits, usando el modelo de extensión de dirección física (PAE) de Intel. Algunos sistemas operativos lo admiten directamente (Linux, por ejemplo).

Como señala Raymond Chen, en Windows una aplicación de 32 bits puede asignar más de 4 GB de memoria y no necesita Windows de 64 bits para hacerlo . O incluso PAE.

En realidad, los chips de 64 bits no admiten todo el espacio de memoria de 64 bits. Creo que actualmente están limitados al espacio de 42 bits ... el espacio de 36 bits que usa PAE, más las direcciones de 8 bits principales,


Debido a que 32 bits pueden representar números hasta 2 32 - 1 = 4294967295 = 4 GiB - 1 y, por lo tanto, direccionar hasta 2 32 bytes individuales que serían 4 GiB.

Sin embargo, hay formas de eludir eso. Por ejemplo, utilizando PAE incluso un sistema operativo de 32 bits puede admitir más memoria. Históricamente, esto se ha usado con mayor frecuencia en los servidores. Además, los SKU de Windows que no son de servidor no son compatibles. Por ahora, todo eso es discutible, dado que las CPU de 64 bits, los sistemas operativos y el soporte de controladores son comunes.


En realidad, no es tan simple como 2 ^ 32 = 4294967296 bytes. Usted ve en modo protegido x86, con paginación habilitada (es decir, lo que obtiene cuando usa cualquier sistema operativo moderno), no aborda direcciones de memoria directamente, aunque el mecanismo de traducción de paginación es transparente para las aplicaciones cliente.

De una dirección de memoria lógica de 32 bits, cuando se usan páginas 4K:

  • los bits 22-31 se refieren a un directorio de página
  • los bits 12-21 se refieren a una tabla de páginas
  • los bits 11-0 se refieren a un desplazamiento en la página de 4096 bytes

Como puede ver, tiene directorios de página 2 ^ 10 (1024), en cada directorio de página, tiene tablas de 2 ^ 10 páginas y cada página tiene 2 ^ 12 (4096) bytes de longitud, de ahí 2 ^ 32 = 4294967296 bytes. El ancho del bus de memoria es convenientemente el mismo que la longitud de palabra de la CPU, pero no es necesario que sea así. De hecho, las CPU x86 más modernas admiten PAE, lo que permite direccionar más de 4 GB (o GiB) incluso en modo de 32 bits.


Porque cada byte de memoria debe tener una dirección. En un sistema operativo de 32 bits, una dirección tiene 32 bits de longitud; por lo tanto, hay 2 ^ 32 direcciones posibles, lo que significa que hay 2 ^ 32 bytes = 4 GB.


Porque es la cantidad de direcciones de memoria diferentes (en Bytes) que se pueden almacenar en Word.

Pero, de hecho, eso no siempre es cierto (en la mayoría de los casos no lo es), el sistema operativo puede manejar más memoria física que esa (con PAE) y las aplicaciones pueden usar menos de 4 GB de memoria virtual (porque parte de esa virtual la memoria está asignada al sistema operativo, 1 GB en Linux y 2 GB en Windows, por ejemplo).

Otro escenario en el que eso no se aplica es si las palabras fueron dirigidas a la memoria en lugar de a Bytes, entonces la memoria total direccionable sería de 16 GB, por ejemplo.


Principalmente debido a que el SO de 32 bits eligió para admitir solo 2 ^ 32-1 direcciones.

Si la CPU tiene más de 32 líneas de direcciones en el FSB, entonces el sistema operativo de 32 bits puede elegir utilizar un mecanismo de búsqueda para acceder a más de 4GiB. (Por ejemplo, Windows 2000 Advanced Server / Data Center ediciones en PAE compatibles con chips Intel / AMD)


Si tiene un sistema de 4 bits, esto significa que la dirección para cada byte es de 4 dígitos binarios , la probabilidad de que su dirección varíe de 0000 a 1111 que es 2^4 = 16 (2 porque hay 0 o 1) , con cuatro bits es posible crear 16 valores diferentes de ceros y unos, si tienes 16 addr diferentes. cada uno representa un byte entonces puede tener un máximo de 16 bytes

El sistema de 4 bits se verá así:

Para un sistema de 32 bits, su máximo es 2^32 = 4294967292 bytes


Todo el mundo dice 2 ^ 32 = 4GiB, que es correcto. Por las dudas, aquí es cómo llegamos allí:

Una máquina de 32 bits usa 32 bits para direccionar la memoria. Cada bit tiene un valor de 0 o 1. Si tiene 1 bit, tiene dos direcciones posibles: 0 o 1. Un sistema de dos bits (punside) tiene cuatro direcciones posibles: 00 = 0, 01 = 1, 10 = 2, 11 = 3. 2 ^ 2 = 4. Tres bits tienen 8 direcciones posibles: 000 = 0, 001 = 1, 010 = 2, 011 = 3, 100 = 4, 101 = 5, 110 = 6 y 111 = 7.

Cada bit dobla el espacio de direcciones potencial, por lo que 2 ^ n te dice cuántas direcciones usas para un número dado de bits. 2 ^ 1 = 2, 2 ^ 2 = 2 * 2 = 4, 2 ^ 3 = 2 * 2 * 2 = 8, etc.

Para cuando alcances los 32 bits, estarás en 4GiB.


2 ^ 32 = 4 * 1024 * 1024 * 1024

Eso, en bytes, es la definición de 4 GB. En otras palabras, un registro de 32 bits como puntero de memoria puede abordar 4 GB de memoria y nada más.