¿Por qué Windows solo muestra aproximadamente 3.5 GB de mis 4 GB de RAM?

90

Recientemente actualicé la RAM de mi computadora a 4 GB. Mi instalación de Windows de 32 bits muestra solo 3574 MB de memoria. ¿Cómo puedo hacer que Windows use la cantidad total de RAM?

ala
fuente
2
Esto fue respondido solo esta mañana en superuser.com/questions/27006/…
Tom
3
Esto debe ser aumentado por unos 2000 votos porque parece que todos los días me encuentro con otra persona que pregunta "¿dónde está mi memoria?" Microsoft debería sacar eso del cuadro de diálogo. . .
surfasb 01 de
2
Amigo, necesitas un sistema operativo de 64 bits. En serio, comience a ahorrar su dinero ahora. Entonces esta pregunta se convertiría en un punto discutible cuando tenga un sistema que realmente admitirá toda la memoria que pueda almacenar en la placa base.
Fiasco Labs
1
Sienta con cuidado alrededor de la unidad del sistema por cualquier humedad o humedad. Podría ser una 'pérdida de memoria'.
Undécimo doctor
@ala: Debido a la división de memoria del kernel ... (1Gb asignado por el kernel). Parece que ya estás usando el
modificador

Respuestas:

71

No puedes:

Ver Amigo, ¿Dónde están mis 4 Gigabytes de RAM?

si desea ajustar la memoria y los dispositivos en un rango de direcciones de 32 bits: no todos los 4 GB de espacio de direcciones disponibles pueden asignarse a la memoria.
Entonces, ¿qué sucede realmente si sales y compras 4 GB de memoria para tu PC?
Hay un agujero en su mapa de memoria para el IO. (Ahora es solo el 25% del espacio total de direcciones, pero sigue siendo un gran agujero). Entonces, los 3 GB inferiores de su memoria estarán disponibles, pero hay un problema con el último 1 GB.

La única solución práctica es instalar un sistema operativo de 64 bits. En Windows Vista y versiones posteriores, las claves de licencia de 32 y 64 bits son intercambiables. Si puede obtener los medios de instalación de Windows para la versión de 64 bits de su sistema operativo, puede reinstalar usando su clave de licencia original.

VonC
fuente
No entiendo, ¿no son 2 ^ 32 4 gigabytes?
Matt
66
Ahh, no importa, en realidad lea el artículo vinculado
Matt
bueno saber esto
LiuYan 刘 研
@VonC: ¿Qué hay de esto ?
user2284570
@ user2284570 cierto, PAE puede ayudar, pero ¿quién sigue en WXp? ;)
VonC
8

Primero, Windows XP (32 bits) solo admite 4 GB. Eso no solo se aplica a Windows XP. En cambio, se aplica a Windows de escritorio de 32 bits: los sistemas Linux de 32 bits con PAE y muchas ediciones de Windows Server de 32 bits admiten más de 4 GB según el artículo vinculado. Nunca verá más de 4 GB si está utilizando un Windows XP de 32 bits. Sin embargo, encontré una razón más detallada por la cual su sistema muestra menos RAM disponible que la que está realmente instalada.

Del problema de RAM de 3GB-no-4GB (blog de Microsoft MSDN):

Debido a una decisión arquitectónica tomada hace mucho tiempo, si tiene 4 GB de RAM física instalada, Windows solo puede informar una parte de los 4 GB de RAM física (rangos de ~ 2.75 GB a 3.5 GB dependiendo de los dispositivos instalados, el chipset de la placa base y BIOS).

Este comportamiento se debe a "reservas de E / S asignadas a memoria". Esas reservas superponen el espacio de direcciones físicas y enmascaran esas direcciones físicas para que no se puedan usar para la memoria de trabajo. Esto es independiente del sistema operativo que se ejecuta en la máquina.

Trozos significativos de espacio de direcciones por debajo de 4 GB (la dirección más alta accesible a través de 32 bits) se reservan para uso del hardware del sistema:

  • BIOS: incluye compatibilidad con ACPI y video heredado
  • Bus PCI incluyendo puentes, etc.
  • El soporte PCI Express reservará al menos 256 MB, hasta 768 MB dependiendo de la memoria instalada en la tarjeta gráfica

Lo que esto significa es que un sistema típico puede ver entre ~ 256 MB y 1 GB de espacio de direcciones por debajo de 4 GB reservados para uso de hardware al que el sistema operativo no puede acceder. Las especificaciones del chipset Intel son bastante buenas para explicar qué rangos de direcciones se reservan por defecto y, en algunos casos, dicen que 1.5GB siempre está reservado y, por lo tanto, inaccesible para Windows.

Hay más información si revisa la fuente. Sin embargo, puede aprovechar los 8 GB completos instalados si sigue estas instrucciones .

Hablando por experiencia personal, este no es un problema nuevo. Me encontré con este mismo problema hace unos años cuando construí un sistema Windows Vista de 32 GB y 4 bits cuando se lanzó Vista por primera vez. Hubo innumerables publicaciones en el foro en línea relacionadas con este mismo tema.

Lea también Microsoft KB 929605: la memoria del sistema que se informa en el cuadro de diálogo Información del sistema en Windows Vista es menor de lo esperado si se instalan 4 GB de RAM .

SgtOJ
fuente
Microsoft documenta aquí que Windows XP admite hasta 128 GB de RAM, si la arquitectura subyacente es de 64 bits. ¿Puedes por favor actualizar tu respuesta?
Dan Dascalescu
@SgtOJ: ¿Qué hay de esto ?
usuario2284570
1
@SgtOJ: El límite de 4 GB de RAM NO se aplica a "todos los sistemas operativos de 32 bits". Un sistema operativo de 32 bits que sea totalmente compatible con PAE (como Windows Server 2003) puede usar más de 4 GB de RAM. "32 bits" restringe el espacio de direcciones virtuales, no físico.
Jamie Hanrahan
@JamieHanrahan eso todavía significa que un solo programa no puede usar más de 4GB. Y creo que se refería a que la sobrecarga de reserva de IO es independiente del sistema operativo.
jiggunjer
@jiggunjer En ninguna parte de la pregunta o la respuesta que estaba comentando se decía o implicaba que lo que se preguntaba era qué podía usar un "programa único". La reserva de E / S tampoco es estrictamente independiente del sistema operativo.
Jamie Hanrahan
3

Si está utilizando un Windows XP de 32 bits, entonces no es posible. Como no hay suficiente espacio de direcciones disponible para hacer uso de la RAM adicional

La mejor solución sería actualizar a una versión de Windows de 64 bits, ya que admite más de 4 GB de RAM.

Shaharyar
fuente
2^32es suficiente "espacio de direcciones" para 4 GiB. Confundes el espacio de direcciones y la memoria física. Cada proceso en las versiones modernas de Windows ve el espacio completo de 4 GiB, aunque normalmente solo se pueden usar 2 GiB debido a la partición UM / KM del espacio de direcciones virtual.
0xC0000022L
@ 0xC0000022L: Ese no es el problema que se discute aquí.
Ben Voigt
Según Microsoft , la mayoría de las versiones de Windows 7 (incluido 32 bits), admiten hasta 192 GB de RAM. El único requisito es que la arquitectura subyacente sea de 64 bits. Entonces, la mejor solución sería actualizar de XP a Windows 7. ¿Puede actualizar su respuesta?
Dan Dascalescu
@Shaharyar: ¿Qué hay de esto ?
user2284570
3

Como han dicho los demás, no es posible.

Explicación:

Cada pieza de memoria tiene una dirección. El sistema operativo especifica la longitud de la dirección. Para sistemas operativos más antiguos, la longitud de la dirección es de 32 bits, lo que solo permite 2 ^ 32 (4 294 967 296) direcciones. Ahora, mirando ese número, puede parecer que su sistema operativo debería admitir 4 GB, pero todo el otro hardware (lo más importante, el ram de video en su tarjeta de video) que tiene memoria interna también se asigna a ese espacio de direcciones.

Es como si estuviera tratando de distribuir 1,200,000 números de teléfono de seis dígitos.

drby
fuente
Estás mezclando RAM y espacio de direcciones.
0xC0000022L
@ 0xC0000022L: No, no lo es. Él está hablando del espacio de direcciones físicas, mientras que la RAM debe estar asignada para ser utilizable.
Ben Voigt
@BenVoigt: ¿Qué hay de esto ?
user2284570
PAE es genial, si todo el código del núcleo está escrito para usarlo. Desafortunadamente, una gran cantidad de código de kernel son controladores escritos por terceros que apenas pueden estabilizar sus cosas con un modelo de memoria plana. Habilitar PAE requiere descartar todos los controladores existentes con el supuesto de modelo plano. Es por eso que el servidor de Windows habilita PAE y el cliente no. Ver la respuesta de steveb.
Ben Voigt
@BenVoigt: desde 1997, los controladores que suponen memoria <4 GB son raros porque TODOS los controladores WDM se pueden instalar en Windows 2000/2003 ...
user2284570
3

La placa base antigua solo admitía 4 Gb de RAM física, las modernas admiten mucho más. La CPU Intel P4 siempre puede abordar más de 4 Gb (mediante el uso de algo llamado Extensión de dirección física, o PAE)

Microstoft tomó una 'decisión de marketing' de no admitir más de 4 Gb de espacio de direcciones físicas en las versiones 'cliente' de todas las versiones de 32 bits de sus sistemas operativos, que incluye todo, desde w2k hasta 32 bits de Windows 8 (si visita el MS KB En las páginas, observará que las versiones de 32 bits del servidor pueden admitir mucho más, hasta 128 Gb, creo con la 'Edición Enterprise' de 32 bits, razón por la cual los SO 'adecuados' de 32 bits (Linux, etc.) en exactamente el mismo hardware siempre pueden acceder a TODOS La RAM física.

(nota al margen: los usuarios de Win7 de 32 bits se hartaron tanto de este límite 'estúpido' que 'piratearon' el Kernal para permitir el acceso a la RAM física completa ... no hace falta decir que esto rompe su licencia y en realidad es ilegal en los EE. UU. (DCMA )

Windows XP 32bit 'reserva' parte del espacio de direcciones lo 4Gb para el uso del controlador. No hay ninguna razón por la que no pueda 'direccionar' la RAM física más allá de 4 Gb (usando PAE), sin embargo, muchos CONDUCTORES ANTERIORES en el momento de Windows XP Pro no pudieron hacerlo y obtendría un error 'BSOD' (los controladores modernos usan PAE correctamente y EN LA TEORÍA no hay razón por la que necesiten más de 32Mb de páginas de espacio 'lo' (como una 'ventana') en total, incluso para admitir una tarjeta gráfica de 2Gb (los 2gb estarán en el espacio 'hola', es decir, por encima de 4Gb marca)

En XP SP2, MS casi triplicó la cantidad de espacio de direcciones 'reservado' para los controladores en un esfuerzo por eliminar los BSOD y ha sido así desde entonces (MS no quiere 'depurar' los controladores == quieren venderle los 64 bits OS en su lugar). El hardware ACTUAL tiene un efecto casi nulo en este espacio 'reservado'.

Por lo tanto, si tiene 4 Gb o más de RAM física, la mayor cantidad de XP Pro sp2 + verá es aproximadamente 3.25 Gb ... al resto PUEDE acceder usando varios controladores de disco RAM diferentes (no el MS, por supuesto) = busque algo que usa el 'Espacio de direcciones invisibles' o 'alto espacio de 4 gb' en XP Pro) ... el uso de .75 Gb 'faltantes' como parte de su 'memoria virtual' puede acelerar su sistema ...

Tenga en cuenta que el modificador / 3G puede permitir que las aplicaciones de 32 bits accedan hasta 3Gb en un SO de 32 bits (si tienen el indicador LargeAddressAware establecido en su encabezado .exe, en cuyo caso pueden acceder hasta 4Gb en un SO de 64 bits) pero en XP, también debe especificar / USERVA para evitar que el sistema operativo se 'exprima' de RAM :-)

steve b
fuente
Compatibilidad con Windows XP SP1> 4 GB de RAM si agrega el
modificador
0

Si desea utilizar los 4GB completos, la única opción es actualizar a un sistema operativo de 64 bits:

  • Windox XP 64
  • Windows Vista 64
  • Linux
  • Max OS / X (ok, es posible que también necesite una nueva PC para eso)

El Windows XP normal es de solo 32 bits, y esto limita la memoria a un máximo de 3.5 gb. Consulte el enlace publicado por VonC para obtener detalles sobre este tema.

FrankS
fuente
Tener 32 bits no limita la memoria a 3.5 Gb máx. Son otros dispositivos los que ocupan el espacio de direcciones disponible, por lo que también son posibles 3.75Gb. -1
MaxVT
Es por eso que dije "
mira
Correcto. Microsoft enumera que XP de 64 bits admite hasta 128 GB de RAM .
Dan Dascalescu
0

Si usa gráficos integrados, puede rechazarlos, y eso significará que el sistema podrá abordar más RAM de su sistema.

Pero, la mejor solución es definitivamente obtener un sistema operativo x64.

No hay razón no demasiado de todos modos. La mayoría de los programas funcionan en x64 con XP / Vista / 7 que tiene una capa de emulación x86. Son solo los controladores los que podrían ser el problema.

Blam
fuente
1
Los controladores x64 en Windows XP Pro x64 son basura, pero los controladores Vista y 7 x64 han sido muy maduros por un tiempo.
MDMarra
0

Es una pregunta bastante complicada, ya que requiere varios componentes para funcionar. Esos componentes son:

  • Unidad Central de procesamiento
  • Unidad de controlador de memoria
  • BIOS / (U) EFI
  • Sistema operativo
  • Solicitud

El último elemento no se relaciona directamente con el problema, pero lo agregué por razones de integridad.

En pocas palabras, todos los componentes anteriores tienen que soportar más de 4 GB de memoria para tener éxito.

Unidad Central de procesamiento

Comencemos con una CPU. Pero primero es importante tener en cuenta que una CPU no tiene ninguna habilidad mágica para usar ninguna memoria . En cambio, podría acceder a cualquier dirección dentro de su espacio direccionable . Ahora aquí viene la cosa de la amargura. La CPU de 32 bits es capaz de acceder a direcciones en un rango de 0 a 4 GiB. Sin embargo, este rango tiene que acomodar no solo la RAM, ROM, SMRAM , tabla de reasignación de direcciones de gráficos disponible , sino también todas las E / S asignadas a memoriay muchos más, que pueden requerir una parte sustancial de este rango de direcciones. Como consecuencia, puede ser perfectamente posible que algunas direcciones de memoria se vean ocultas por esos usos y, por lo tanto, no estén disponibles para operaciones en RAM. Para recuperar la memoria oculta, es necesario ampliar el espacio de direcciones accesible de la CPU . En caso de CPU de 32 bits, la extensión de dirección física podría ayudar. Lo que permite direccionar hasta 64 GiB. La CPU de 64 bits que funciona en modo nativo de 64 bits es capaz de acceder por defectohasta 16 EiB, que es bastante grande y no requiere tales trucos. Pero, por otro lado, no es práctico que una CPU de 64 bits use direccionamiento de 64 bits, por lo que en realidad todavía están limitados por su bus de direcciones a un rango menor que 16 EiB.

Unidad de controlador de memoria

Inicialmente se encontraba en Northbridge , pero AMD lo trasladó al procesador a partir de sus procesadores AMD64 y a Intel con sus procesadores Nehalem. Incluso si una CPU con PAE es capaz de acceder a 64 GiB por sí misma, aún necesita una MCU para acceder a la RAM. En pocas palabras: una CPU que accede a una dirección particular obtiene su respuesta, ya sea desde un dispositivo PCI, BIOS ROM flash o MCU, si la dirección solicitada reside en la RAM, y así sucesivamente. Sin embargo, no es raro que una MCU (ya sea en Northbridge o en la CPU) admita mucho menos espacio direccionable que 64 GiB por razones de marketing, por ejemplo.

BIOS / (U) EFI

BIOS / (U) EFI también son importantes ya que es su deber configurar el hardware antes de que algo pueda funcionar realmente. Entre otras cosas, son responsables de mapear todo el espacio direccionable del procesador con rangos de memoria de dispositivos de hardware, buses, RAM, etc. Curiosamente, puede suceder que toda la RAM se divida en pedazos y se asigne en varios puntos no contiguos disponibles. El problema con el BIOS es que es posible que los desarrolladores no esperen más de 3 GiB de uso de RAM dentro de su sistema y, como tal, el BIOS no asignará correctamente toda la memoria que se utilizará. Lo más probable es que esto no le suceda a (U) EFI.

Sistema operativo

El sistema operativo también debe admitir el direccionamiento de más de 4 memorias GiB. Para ser más específico, debe configurar una CPU para usar PAE. Algunos sistemas operativos de 32 bits son perfectamente capaces de usar PAE y acceder a más de 4 GiB, otros tienen un límite de software en la memoria máxima, a pesar de que permiten PAE para una mayor seguridad (Windows XP es un ejemplo). Una vez más, los sistemas operativos de 64 bits, naturalmente, no tienen tales dificultades y normalmente admiten más de 4 GiB de memoria.

Solicitud

El último punto es de un mundo diferente, ya que las aplicaciones comúnmente operan en un espacio de direcciones virtuales , lo he agregado por completo. No obstante, se requieren algunos pasos adicionales al compilar la aplicación para poder usar más memoria. Por defecto, la aplicación de 32 bits solo es capaz de usar 2 GiB de memoria. La misma aplicación de 32 bits podría direccionar hasta 4 GiB de memoria, siempre que el SO lo admita y haya habilitado CPU PAE. Más específicamente, podría usarhasta 3 GiB de memoria, el otro 1 GiB sería direccionable como bibliotecas comunes y kernel del sistema operativo, pero no escribible (en última instancia, esto depende de la arquitectura del sistema operativo en lugar de la aplicación misma). Una vez más, las aplicaciones de 64 bits admiten de forma nativa el direccionamiento de más de 4 GiB de memoria y no tienen tales problemas en primer lugar.

Para poner todo esto en perspectiva, consideremos varios ejemplos.

Considere el Controlador de memoria Intel® 82945G . El sitio web de Intel afirma que no es compatible con PAE y está limitado a 4 GB de RAM. Consultemos el párrafo 9 System Address Mapde la hoja de datos. Tiene mucha información. Lo más interesante es Figure 9-3. Main Memory Address Range: Figura 9-3.  Rango de dirección de memoria principal y el párrafo 9.2 Main Memory Address Range (1 MB to TOLUD), que dice lo siguiente:

Este rango de direcciones se extiende desde 1 MB hasta la parte superior de la memoria física a la que se permite acceder mediante el (G) MCH (según lo programado en el registro TOLUD). Todos los accesos a las direcciones dentro de este rango son reenviados por el (G) MCH a la memoria principal a menos que entren en la memoria TSGA opcional, el agujero ISA opcional o la memoria VGA robada IGD opcional. El (G) MCH proporciona un espacio máximo de decodificación de dirección de memoria principal de 4 GB (2 GB para 82945GC / 82945GZ / 82945PL). El (G) MCH no reasigna el espacio de memoria APIC o PCI Express. Esto significa que a medida que la cantidad de memoria física ocupada en el sistema alcanza los 4 GB (2 GB para el 82945GC / 82945GZ / 82945PL), habrá memoria física que aún no será direccionable y, por lo tanto, no podrá ser utilizada por el sistema.

Como dice, dado que no es compatible con PAE, en última instancia no puede reasignar PCI y cualquier otro MMIO por encima de 4 GiB, por lo tanto, parte de la memoria se sombreará y no se usará. Lo que significa que incluso si se usa con una CPU que admite el direccionamiento de 36 bits, la memoria por encima de 4 GiB todavía no estará disponible y parte de la memoria cercana al límite de 4 GiB tampoco se usará.

Por el contrario, consideremos el Controlador de memoria Intel® 82955X , que está relacionado con el anterior, ¡pero está especificado para admitir 8 GB al contrario del anterior! El párrafo de la hoja de datos 2.1 Host Interface Signalssugiere que utiliza un bus de direcciones de 36 bits para la CPU, lo cual es una buena señal. El párrafo 7 System Address Maptiene más ideas. Compare Figure 7-1. System Address Rangescon el que vimos antes: Figura 7-1.  Rangos de direcciones del sistema esto sugiere claramente que es capaz de utilizar más de 4 GiB de RAM, siempre que se use con la CPU también capaz de direccionamiento de 36 bits. También vale la pena señalar que el párrafo 7 System Address Mapestablece que MCH supports 64 GB of addressable memory space. Sin embargo, se aclara aún más, que la RAM máxima utilizable está limitada a 8 GB. Esto una vez más declara la diferencia entre direccionable yutilizable como estaba tratando de transmitir en la sección de CPU.

Para concluir esto, me gustaría señalar que dos conjuntos de chips relacionados tienen, de hecho, una gran diferencia en el manejo de la memoria.

Inspeccionemos el procesador Intel® Pentium® Extreme Edition 840 . Es compatible con el conjunto de instrucciones de 64 bits, pero no es compatible con PAE. Lo que significa que si se ejecuta en modo de 32 bits, no podrá usar más de 4 GiB de RAM (por favor, corríjame si me equivoco con esta suposición). Vamos a ver la hoja de datos y la tabla Table 4-3. Signal Description. A pesar de que esta CPU es capaz de 64 bits, todavía está limitada por su bus de direcciones de 36 bits de ancho, lo que lo limita al rango de direcciones accesible que comienza en 0 a 64 GiB.

Ahora examinemos una CPU más reciente. Tome el procesador Intel® Core ™ i7-7700 por ejemplo. Se anuncia que admite hasta 64 GB de RAM. Ahora revisemos la hoja de datos. El párrafo 2.3 System Address Mapnos convence de que el rango direccionable de esta CPU es de 0 a 512 GiB debido al bus de direcciones de 39 bits. Tenga en cuenta que todavía está lejos del rango teórico de 16 EiB para una CPU de 64 bits. Sorprendentemente, sin embargo, aclara aún más que esta CPU admite hasta 32 GiB de RAM máxima utilizable (al contrario de 64 GB en el sitio web). También hay una imagen de interés aquí Figure 2-2. System Address Range Example: Figura 2-2.  Ejemplo de rango de direcciones del sistema hace un buen trabajo ilustrando el problema con el sombreado de la memoria por los dispositivos PCI, etc. También sugiere una forma de superar este problema mediante el mapeoun rango de RAM real al rango de dirección superior dentro del rango direccionable por CPU . Reclamando así esa memoria oculta para su uso. Tenga en cuenta que esta reasignación es realizada por BIOS / (U) EFI tras la inicialización del hardware y es exactamente por esta razón que incluí BIOS / (U) EFI en la lista de viñetas anterior.

He tomado los productos Intel como ejemplos, pero lo mismo es cierto para AMD.

Ahora analicemos cómo están involucrados los sistemas operativos. El kernel de Linux incluye compatibilidad total con el modo PAE a partir de la versión 2.3.23 y es perfectamente posible tener más de 4 GiB de memoria utilizables con el kernel de Linux en un sistema de 32 bits. Sin embargo, tenga en cuenta un problema indeterminado con el kernel de Linux de 32 bits en un sistema con más de 4 GiB de RAM en algún hardware (en mi experiencia, tiene algo que ver con los derribos de TLB). De todos modos, Wikipedia tiene una buena información sobre el soporte de PAE . Interesante es cómo Windows XP está limitado a 4 GB, mientras que Windows Server 2003 Enterprise / Datacenter SP2 es capaz de 64 GB completos. Lo mismo es para otros pares de Windows Desktop-Server.

Como puede ver, hay muchas combinaciones entre los componentes enumerados y, en algunos casos, puede ser útil reemplazar una CPU o un sistema operativo. Es mucho más difícil lidiar con BIOS / (U) EFI o MCU, ya que el primero es propietario e integrado en el sistema y no es fácilmente modificable, el último está integrado en la CPU o soldado a bordo.

PF4 Público
fuente
-4

muestra 3574 MB de RAM porque esa es la cantidad de RAM GRATUITA y disponible para que la computadora la use en cualquier momento. Esta cifra es la RAM a la que su computadora tiene acceso total porque los programas y configuraciones preinstalados en la PC usan una cantidad establecida de RAM que, en su caso, es de 426mb. Mi PC de 6 GB y 64 bits muestra 5,8 GB de RAM disponible en lugar de los 6 GB completos. Su mejor opción sería buscar la actualización de su PC

user235193
fuente
Si 3.5 GB es la RAM libre, entonces ¿por qué Windows todavía la divide en RAM libre y RAM utilizada? Es un sistema operativo, debería saberlo todo, especialmente si algo está usando hasta 0.5 GB de memoria. Los programas instalados no ocupan RAM hasta que se inician.
gronostaj