Distribución de Memoria

Publicado por
  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon
  • Add to favorites
  • RSS

distribucion de memoria RAMLa computadora IBM original (basada en el procesador de 8 bits modelo 8088 de Intel) era capaz de accesar solamente hasta 1MB de memoria de sistema. Los últimos 384KB de memoria (llamada Área de Memoria Superior, o UMA por sus siglas en ingles) estaban reservados para uso del sistema para que este pudiera comunicarse con los componentes instalados, como a la tarjeta de video y al BIOS. Esto nos dejaba con 640KB de memoria utilizable por el sistema operativo, programas y controladores (drivers) de los componentes. Cualquier memoria adicional después de este punto no podía ser utilizado por el procesador; a este punto se le llamaba “la barrera de memoria convencional.”

Software viejo no podía correr en los procesadores siguientes como el 286 de la Intel, los cuales no eran compatibles con el viejo 8088. Ninguna compañía de software estaba dispuesta a escribir aplicaciones totalmente nuevas porque no serian compatibles con sistemas más viejos, así que ¿de qué servia la capacidad del procesador de accesar 16MB de RAM si el software solamente podía accesar de 1MB de ella? Con la finalidad de mantener compatibilidad con software mas viejo, el 286 podía funcionar con lo que se le conoció como “Modo Real” (Real Mode), en el cual estaba, imitando (emulando) a un 8088, con todas las limitaciones de la 8088, incluyendo el limite de memoria de 1MB.

Desde temprano, los programadores de la IBM encontraron un pequeño error en el 286 que dejaba la línea A20 activa, la cual causaba problemas con operaciones en modo real. Ellos crearon un método que permitía que esto fuera activado o desactivado utilizando algunas funciones no utilizadas del chip controlador del teclado, de manera que el 286 y procesadores siguientes pudieran emular el 8088 de manera adecuada y al mismo tiempo manteniendo la habilidad de regresar a operación de modo protegido.

Microsoft se dio cuenta de que ellos podían utilizar este error como un “extra”, y escribió el programa “Himem.sys”, el cual tomaba control de la línea GateA20 y a través de esta conseguía unos 64KB de memoria alta (HMA) al mismo tiempo de que mantenía una emulación correcta del 8088. Esta memoria “libre” podía ser utilizada para controlar acceso a la memoria por encima de 1MB sin el procesador tener que regresar a operación protegida, y hasta podía ser utilizado para guardar algunos programas, como el DOS. El problema estaba en que no se había establecido ningún patrón para accesar la memoria por encima de 1MB, y el procesador estaba incapacitado de accesar esta memoria (ya que estaba funcionando en modo real.) Con esto, la Microsoft creo la “Especificación de Memoria Expandida” (conocida también como EMS.) El Himem.sys controlaba la memoria, y le daba acceso a esta memoria a los programas que conocieran el protocolo EMS. Este protocolo permitía que solamente un segmento de memoria podía ser utilizado a la vez, lo que lo hacia muy ineficiente.

Para resolver las limitaciones del EMS, se creo la memoria extendida (XMS.) Se creó un controlador llamado “EMM386.exe” el cual, junto con el Himem.sys, era utilizado para tomar ventaja del modo nuevo del procesador 386, llamado “Modo Real Virtual” (Virtual Real Mode). En este proceso, memoria extendida por encima de 1MB estaba repartida en pedazos de 1MB, cada una manipulada por el sistema como bloques de memoria convencional independientes, incluyendo los 384KB de memoria reservada, de manera que esto dejaba 640KB para cada programa. Estando en el Modo Real Virtual, el sistema era capaz de ejecutar varias sesiones de DOS, cada una con su propio espacio de memoria; esto protegía el sistema de inestabilidad y de conflictos de software, pero también desperdiciaba algo de memoria, ya que cada sesión Real Virtual tenia que emular los 385KB reservados para el sistema, aunque este no era actualmente utilizado por él.

El EMM386.exe también tiene la capacidad de reservar y emular memoria EMS para aquellos programas que aun la requiere. Cualquier memoria reservada para EMS se pierde para el sistema para uso EMS hasta que el usuario cambia la configuración. Uso del EMM386.exe requiere de que el Himem.sys este cargado antes para tomar control de la línea GateA20 (ya que esta abre la ventana hacia la memoria superior), luego el EMM386.exe toma el control de la memoria superior desde ese punto.

Share and Enjoy