Falta memoria RAM

La pregunta difícil de la semana (menos mal que no me ha tocado directamente): «El Windows de mi flamante nuevo PC con 4 GB de RAM (más vale que zozobre y no que zofalte) dice que sólo hay algo más de 3 GB… ¿Qué pasa?». Posiblemente, se deba a un fallo en una de las memorias y por eso no se detecta. Se abre el equipo y empieza el test: cambio memoria arriba, cambio memoria abajo y parece que todas funcionan. Tras probar diversas combinaciones resultan que sólo falla al meter los 4 juntos 😦 y tenemos un bonito expediente X.

La explicación es sencilla. En la actualidad, los sistemas operativos tienen versiones de 32 y 64 bits. Este número indica el tamaño máximo de una dirección de memoria y, por lo tanto, la cantidad máxima de memoria que puede manejar el sistema. Suponiendo un sistema operativo de 32 bits, el tamaño máximo de memoria es 232 direcciones = 4Gb. Según esto, cualquier sistema de 32 bits debería ser capaz de «ver» los 4Gb de RAM.

Sin embargo, no todas esas direcciones pueden utilizarse. Una parte de ellas permiten acceder a las tarjetas conectadas a la máquina: son los denominados dispositivos proyectados en memoria. Cuando se accede a una dirección de memoria reservada a estos dispositivos (habitualmente, las más altas) se redirigen al dispositivo en lugar de a la memoria RAM aunque realmente exista. En los ordenadores actuales, esta técnica es empleada por múltiples dispositivos que reservan rangos disjuntos. Debido a esto, de los 4GB gestionables por un sistema operativo de 32 bits, parte de ellos (algo más de medio GB) están reservados para acceder a los dispositivos. Esto deja algo menos de 3’5Gb de memoria RAM accesibles.

Mapa de memoria para un SO de 32 y 64 bits

Un ejemplo es la tarjeta gráfica. Las actuales son de 256 ó 512 Mb. El sistema necesita direcciones para acceder a esa información y asigna ese espacio entre los 4Gb disponibles reduciendo las direcciones disponibles para la memoria RAM. Esto no significa que la memoria no esté sino que no puede accederse por el límite de direcciones.

[ Publicado originalmente el 25 de junio de 2007 ]
 
Imagen vía:
The Inquirer ES

4 comentarios

  1. hola · diciembre 2, 2008

    Que tonteria… yo tengo n 32 bits con 4gb de ram y me salen las 4gb.

  2. Maibok · febrero 23, 2009

    Y por qué las tarjetas gráficas tienen memoria RAM?. No debería bastar con esa memoria sin tener que usar la RAm del PC?. Es decir, si usa parte de mis 4 gigas de ram y la ram de la gráfica está usando el doble, no?. Podrías explicarme eso?

    No entiendo por qué si la propia tarjeta gráfica tiene 512 de RAM, utiliza la RAm del PC. No se podría entonces eliminar la RAM de la Tarjeta???.

    Gracias y un saludo.

    • Oscar · febrero 23, 2009

      Casi todos los dispositivos del ordenador tienen una «memoria RAM» (o equivalente) de trabajo para intercambiar. Por ejemplo, una tarjeta gráfica almacena en su memoria qué tiene que dibujar en la pantalla (incluso varias copias para evitar parpadeos) o el disco duro de los últimos datos a leer o escribir.

      Estos dispositivos utilizan su propia memoria y no la RAM del PC. Sin embargo, para que la CPU pueda acceder a ella (por ejemplo, a la controladora del disco duro para leer o escribir datos) para intercambiar información es necesario asignarla una dirección (numerar cada posición secuencialmente). Por ejemplo, entre las direcciones 1000 y 1500 está la tarjeta «resuelve sudokus». En muchos casos, las direcciones de las tarjetas y de la RAM se comparten por sencillez y costes en el diseño del procesador, buses…

      Ahora bien, un sistema operativo de 32 bits utiliza direcciones de 32 bits (2^32 = 4.294.967.296 = 4GB). Si el PC tiene 4GB de RAM no quedan más direcciones para asignar a la tarjeta. En este caso la decisión es «perder memoria» (no se le asigna dirección) para poder utilizar las tarjetas.

      Hace pocos años, un PC con 1 GB de RAM era gama alta por lo que no había problema en usar las 1.073.741.824 (1GB) primeras direcciones para la RAM y las últimas 33.554.432 (32 MB que eran tarjetas habituales) para la tarjeta de vídeo y sobraba mucho espacio.

      La solución son los sistemas operativos de 64 bits que utilizan direcciones de, obviamente, 64 bits (2^64 = 18.446.744.073.709.551.616 = 16 EB). El funcionamiento es equivalente pero el número de direcciones se ha incrementado sustancialmente por lo que se suprime el problema hasta que tengamos equipos de 16 EB (para entonces habrá que ir pensando en máquinas de 128 bits ;-))

      Además de tener un sistema operativo de 64 bits es necesario disponer de un hardware de 64 bits que carezca de ese límite de memoria.

  3. Josan · marzo 9, 2010

    Buenas. Yo estoy contigo Óscar, en cuanto a las apreciaciones de las incompatibilidades entre arquitectura de 32 bits y los problemas con las memorias para alcanzar los 4Gb de los que hablas. A mi el «Expediente X» que me ocurre es que tengo un Intel Core 2 y el windows 7 Enterprise (x64) y se supone que ambos son de están preparados para 64 bits pero el sistema operativo me dice que de los 4Gb sólo 3Gb son utilizables!!!! ¿no tengo ni idea de dónde puede estar el problema, pues lo del Dual Channel se supone que tiene que deshabilitarse en el momento que le instalo los 4 módulos de memoria de 1Gb que he puesto en la placa, ¿no?

Los comentarios están cerrados.