it-swarm.dev

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

Recientemente actualicé el 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?

90
ala

Usted no puede

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 se pueden transferir a la memoria.
Entonces, ¿qué sucede realmente si sales y compras 4GB de memoria para tu PC?
Hay un agujero en tu mapa de memoria para el IO. (Ahora es solo el 25% del espacio total de direcciones, pero sigue siendo un gran agujero.) Por lo tanto, los 3 GB de memoria estarán disponibles, pero hay un problema con los últimos 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 volver a instalar utilizando su clave de licencia original.

70
VonC

Primero, Windows XP (32 bits) solo admite 4 GB. Eso no solo se aplica a Windows XP. En su lugar, se aplica a Windows de escritorio de 32 bits - sistemas de 32 bits de Linux con PAE y muchas ediciones de 32 bits de Windows Server admiten más de 4 GB por 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 que su sistema muestra menos RAM disponible de lo que realmente está instalado.

De El problema de 3GB no 4GB RAM (blog de Microsoft MSDN) :

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

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

Los fragmentos 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 ser utilizados por el hardware del sistema:

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

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 reservado 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 de forma predeterminada y, en algunos casos, dicen que 1.5GB siempre están reservados y, por lo tanto, inaccesibles para Windows.

Hay más información si echa un vistazo a la fuente. Sin embargo, puede aprovechar las 8 GB completas instaladas si sigue estas instrucciones .

Hablando desde la 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 4 GB de 32 bits cuando se lanzó Vista por primera vez. Hubo innumerables publicaciones en el foro 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 que espera si 4 GB de RAM está instalado .

8
SgtOJ

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

Microstoft tomó la 'decisión de marketing' de no admitir más de 4Gb de espacio de direcciones físicas en las versiones 'cliente' de todas las versiones de 32 bits de sus sistemas operativos, que incluyen todos desde w2k a 32 bits de Windows 8 (si visita MS KB observará que las versiones del servidor de 32 bits pueden admitir mucho más, hasta 128 GB creo que con la edición Enterprise de 32 bits), por lo que el sistema operativo de 32 bits (Linux, etc.) correcto en exactamente el mismo hardware siempre podría acceder a TODOS La memoria física.

(nota al margen: los usuarios de 32 bits de Win7 estaban tan hartos de este límite 'estúpido' que 'piratearon' el Kernal para permitir el ascenso al físico completo RAM .. no hace falta decir que esto rompe su licencia y es En realidad ilegal en los Estados Unidos (DCMA)

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

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

Por lo tanto, si tiene 4Gb o más de RAM física, la mayoría XP Pro sp2 + verá que es aproximadamente 3.25Gb .. se puede acceder al resto utilizando varios RAM Controladores de disco (no el MS uno por supuesto) = ve a buscar algo que use el 'espacio de dirección invisible' o 'espacio de 4 gb alto' en XP Pro) .. usando el '.75Gb faltante' como parte de tu 'virtual memoria 'puede acelerar su sistema ...

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

3
steve b

Si está utilizando un Windows XP de 32 bits, entonces no es posible. Dado que 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.

3
Shaharyar

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, al mirar ese número, puede parecer que su sistema operativo debería ser compatible con 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 estuvieras tratando de distribuir 1,200,000 números telefónicos de seis dígitos.

3
drby

Si desea utilizar los 4 GB 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, puede que también necesites una nueva PC)

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

0
FrankS

Es una pregunta bastante complicada, ya que requiere varios componentes para resolverse. 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 he agregado para completar el tema.

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

Unidad Central de procesamiento

Vamos a empezar con una CPU. Pero primero es importante tener en cuenta que una CPU no tiene ninguna habilidad mágica parauseanymemoryat todos. En su lugar, podría simplementeaccedercualquieradireccióndentro de suespacio direccionable. Ahora aquí viene la cosa de bitness. La CPU de 32 bits es capaz deaccederdireccionesen el rango de 0 a 4 GiB. Sin embargo, este rango debe acomodar no solo la RAM, ROM, SMRAM , Tabla de reasignación de direcciones de gráficos pero también todas las E/S asignadas en memoria requeridas y muchas más, que pueden requerir una parte sustancial de este rango de direcciones . Como consecuencia, podría ser perfectamente posible que algunas direcciones de memoria fueranshadowedpor esos usos y, por lo tanto, no estén disponibles para operaciones en la RAM. Para recuperar la memoria oculta es necesario ampliar la CPUespacio de direcciones accesible. En el caso de la CPU de 32 bits la Extensión de dirección física podría ayudar. Lo que permitedireccionamientohasta 64 GiB. La CPU de 64 bits que funciona en modo nativo de 64 bits es capaz, por defecto, deaccediendohasta 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 utilice un direccionamiento de 64 bits, por lo que en realidad aún están limitados por su bus de direcciones a un rango inferior a 16 EiB.

Unidad de controlador de memoria

Inicialmente estaba ubicado en Northbridge , pero AMD lo movió al procesador, comenzando con sus procesadores AMD64 y por Intel con sus procesadores Nehalem. Incluso si una CPU con PAE es capaz deacceder64 GiB por sí mismo, todavía necesita una MCU para acceder a la RAM. En pocas palabras: una CPUaccediendo adirección particular obtiene su respuesta desde el dispositivo PCI, BIOS ROM flash o MCU, si la dirección solicitada reside en la RAM, y así. Sin embargo, no es raro que una MCU (ya sea en Northbridge o en la CPU) admita mucho menosespacio direccionableque 64 GiB por razones de mercadeo 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. Entre otras cosas, son responsables de asignar todo el procesadorespacio direccionablecon rangos de memoria de dispositivos de hardware, buses, RAM y así sucesivamente. Curiosamente, puede suceder que todo RAM se divida en partes y se asigne en varios puntos no contiguos disponibles. El problema con la BIOS es que sus desarrolladores no pueden esperar más de 3 GiB de RAM uso dentro de su sistema y, como tal, la BIOS no asignará correctamente toda la memoria que se usará. Lo más probable es que esto no le suceda a (U) EFI.

Sistema operativo

El sistema operativo también debe admitir direccionar más de 4 GiB memoria. 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, aunque habilitan PAE para una seguridad mejorada (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 un motivo de integridad. No obstante, se requieren algunos pasos adicionales al compilar para que la aplicación pueda usar más memoria. Por defecto, la aplicación de 32 bits solo puede usar 2 GiB de memoria. La misma aplicación de 32 bits podríaaddresshasta 4 GiB de memoria, siempre que el sistema operativo admita eso y haya habilitado la CPU PAE. Más específicamente, podríausarhasta 3 GiB de memoria, los otros 1 GiB serían direccionables como bibliotecas comunes y El núcleo del sistema operativo, pero no se puede escribir (en última instancia, esto depende de la arquitectura del sistema operativo en lugar de la aplicación en sí). Nuevamente, 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 Controlador de memoria Intel® 82945G . El sitio web de Intel indica que no es compatible con PAE y está limitado a 4 GB de RAM. Permite consultar el párrafo 9 System Address Map de la hoja de datos. Tiene mucha información. Lo más interesante es Figure 9-3. Main Memory Address Range: Figure 9-3. Main Memory Address Range 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 puede 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 caigan en el TSEG opcional, el ISA agujero, o la memoria VGA VGA robada opcional. El (G) MCH proporciona un espacio máximo de decodificación de dirección de memoria principal de 4 GB (2 GB para el 82945GC/82945GZ/82945PL). El (G) MCH no vuelve a asignar el espacio de memoria APIC o PCI Express. Esto significa que a medida que la cantidad de memoria física que se llena en el sistema alcanza los 4 GB (2 GB para 82945GC/82945GZ/82945PL), habrá una memoria física que aún no es direccionable y, por lo tanto, el sistema no puede utilizarla.

Como dice, ya que no es compatible con PAE, finalmente no puederemapPCI y todos los demás MMIOabove4 GiB, por lo tanto, parte de la memoria estará sombreada y sin usar. Lo que significa que incluso si se usa con una CPU que admite direccionamiento de 36 bits, la memoria por encima de 4 GiB aún no estará disponibleyalgo de la memoria cerca de 4 GiB límite también no se utilizará.

A la inversa, veamos el Controlador de memoria Intel® 82955X , que está relacionado con el anterior, ¡pero está especificado para admitir 8 GB a diferencia del anterior! El párrafo 2.1 Host Interface Signals de la hoja de datos sugiere que use un bus de dirección de 36 bits a la CPU, lo que es una buena señal. El párrafo 7 System Address Map tiene más ideas. Compare Figure 7-1. System Address Ranges con el que vimos antes: Figure 7-1. System Address Ranges 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 Map establece que MCH supports 64 GB of addressable memory space. Sin embargo, se aclara más, que el máximousableRAM está limitado a 8 GB. Esto nuevamente declara la diferencia entredireccionableyutilizablecomo estaba tratando de transmitir en la sección de la 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.

Permite inspeccionar Intel® Pentium® Processor Extreme Edition 840 . Admite 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 of RAM (por favor, corríjame si me equivoco con esta suposición). Permite revisar la hoja de datos y la tabla Table 4-3. Signal Description. A pesar de que esta CPU tiene capacidad para 64 bits, todavía está limitada porque su bus de direcciones tiene un ancho de 36 bits, por lo que limita aaccesiblerango de direcciones comenzando desde 0 hasta 64 GiB.

Ahora vamos a examinar una CPU más reciente. Tome el procesador Intel® Core ™ i7-7700 por ejemplo. Se anuncia para soportar hasta 64 GB de RAM. Ahora vamos a revisar la hoja de datos de la misma. El párrafo 2.3 System Address Map nos convence de que la CPUdireccionablerango es desde 0 hasta 512 GiB debido al bus de dirección 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, aclara aún más que esta CPU admite hasta 32 GiB ofusableRAM máximo (a diferencia de 64 GB en el sitio web). También hay una imagen de interés aquí Figure 2-2. System Address Range Example: Figure 2-2. System Address Range Example Hace un buen trabajo ilustrando el problema con la memoria de dispositivos PCI, etc. También sugiere una manera de superar este problema mediantemappingun rango de real RAM al rango de dirección superior dentro de la CPU -direccionablerango. Reclamando así esa memoria oculta para su uso. Tenga en cuenta que esta reasignación la realiza BIOS/(U) EFI tras la inicialización del hardware y es exactamente por este motivo que incluí BIOS/(U) EFI en la lista anterior.

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

Ahora vamos a discutir 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 memoriausablecon Linux kernel 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 soporte PAE . Es interesante cómo Windows XP está limitado a 4 GB, mientras que Windows Server 2003 Enterprise/Datacenter SP2 tiene capacidad para 64 GB completos. Lo mismo es para otros pares de Windows de Desktop-Server.

Como puede ver, hay muchas combinaciones entre los componentes enumerados y, en algunos casos, reemplazar una CPU o sistema operativo puede ayudar. 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.

0
PF4Public

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

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

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

0
Blam