Memoria extendida de ordenadores

Memoria IBM PC

Los ordenadores conocidos como PC-XT y PC-XT que dominaban el mercado hace pocos años, hoy en día están totalmente obsoletos, pero algunas de sus limitaciones, como herencia, para preservar la compatibilidad de los programas escritos para ellos han llegado a los siguientes ordenadores.

Tal y como indicamos en el último número de Elhuyar, la memoria de entre 0 y 640 Kb se denomina Memoria Ordinaria (Conventional Memory). El siguiente tramo de 384 kilobytes sobre él se conoce como Memoria Superior (Upper Memory) y está comprendido entre 640 Kb y 1024 Kb. (Ver figura 1).

Microprocesador 8088 y Sistema Operativo DOS

La razón de estos números mágicos 640 Kb y 1024 Kb proviene del diseño interno del microprocesador 8088 utilizado para el antiguo ordenador personal IBM PC.

El Bus de direcciones que tiene el micro 8088 de Intel está formado por 20 hilos. Dado que en un momento dado se trasmite un bit por cada cable, se puede direccionar un máximo de 220 = 1.048.576 direcciones diferentes o en reposo.

Memori tiene una longitud de 8 bits (un byte) y una dirección define por definición una única pila. Por lo tanto, la capacidad de la memoria puede ser 220 = 1.048.576 inertizados = 1.048.576 bytes = 1.024 Kb = 1 Mb.

Para domiciliar esos 1024 Kb de la memoria mencionada se necesitan 20 bits. Debido a la arquitectura de este microprocesador, el Bus de Datos es de 16 bits y recuerda que las direcciones se transportan desde la Tabla Memori a la Unidad de Control a través del Bus de Datos (Elhuyar 70).

Por lo tanto, ¿cómo se puede obtener una dirección de 20 bits mediante 16 bits? Para ello se ha inventado un direccionamiento segmentado: Dirección real de 20 bits indicando dos números de 16 bits [segmento (base) y offset (desplazamiento)]. El microprocesador 8088, tomando el par segmento/offset, calcula la dirección física real aplicando el siguiente algoritmo:

10h * segmento + desplazamiento

Figura 1.Mapa Memori
del microprocesador 8086/8088: La Memoria Ordinaria, los Datos Básicos y el Sistema Operativo son almacenados obligatoriamente, siendo el espacio restante para la Aplicación de Usuario la parte que va desde la posición del último Programa Residente hasta los 640 Kb.

Desde el punto de vista hardware, si el corazón de PC XT fue 8088 micro, desde el punto de vista software se optó por el Sistema Operativo DOS. Y los programas que se ejecutan bajo el Sistema Operativo DOS utilizan la Memoria Ordinaria.

La interface de los modernos programas de aplicación (comunicación entre el operador y el ordenador) se ha simplificado notablemente, ya que se basa en un extenso gráfico, ventanas, menús, ratones, etc., pero la memoria que requieren todas estas funciones es muy grande y como se puede observar en la figura 1, el espacio que queda para la aplicación del usuario es muy reducido debido a la escasez de la Memoria Simple. En este sentido, y en los ordenadores tipo 8088, el mensaje traducido por alguna aplicación que intenta ejecutar es el habitual de “Memoria insuficiente en el sistema”.

La forma más directa de conocer la memoria de un ordenador es mediante la ejecución del comando CHKDSK transitorio del Sistema Operativo DOS (Figura 2). El comando CHKDSK muestra el tamaño de la memoria completa y lo que está libre en ese momento. Ten en cuenta que para más información y con la versión 4.0 o posterior del Sistema Operativo DOS, se puede utilizar el comando NOM (Figura 3).

Figura . El comando CHKDSK, tras analizar el estado del disco, ofrece su información y la de la memoria. Sólo conoce la Memoria Ordinaria (antes 640 Kb).

Mapa memorial microprocesadores INTEL 8086/8088, 80286 y 80386/80486

Se pensó que la memoria de 640 Kb era suficiente en un tiempo, pero en pocos años ha quedado muy pequeña. Por ello, y en lugar de superar esta limitación, se han abordado dos vías:

  • Desarrollando el uso de la Memoria Ampliada superior a 1024 Kb. Ver (Elhuyar 71)
  • Inventando la Memoria Extendida

Para comprender bien una vía u otra, vamos a analizar el mapa de memori en función del microprocesador (ver figura 4).

La Memoria Ordinaria se entenderá como expuesta y no se procederá más.

Los 384 Kb de memoria superior se dividen en seis segmentos de 64Kb. La distribución de la memoria superior puede variar de un ordenador a otro, pero, en general, puede parecer:

  • Los segmentos A y B están reservados para la Memoria de Vídeo.
  • El segmento C, para los controladores de vídeo y disco, normalmente está vacío.
  • Segmento D, Ventana Página Memoria Ampliada.
  • El segmento E normalmente vacío.
  • En el segmento F se acumulan las rutinas de ROM bios.

Con este último segmento llegamos hasta 1024 Kb y a partir de ahora la memoria que hay se llama Memoria Ampliada. Está claro que los ordenadores tipo 8088 no disponen de ellos y que la única opción que les queda para superar los 640 Kbytes es la de la Memoria Extendida.

Figura . También conoce el comando SN, (a partir de la versión 4.0) la Memoria Simple y la memoria ampliada que puede estar por encima de ella. En nuestro caso se trata de una AT de 1Mb, 640 Kb Memoria Ordinaria y Alta Memoria (384 Kb), denominada Sistema Operativo extended.

Memoria Extendida

Si el Sistema Operativo MS-DOS se ha mantenido hasta la fecha como estándar, ha sido gracias a la Memoria Extendida. La Memoria Extendida permite romper el límite de 640 Kb y ejecutar programas mayores.

Antes de nada hay que decir que la Memoria Extendida es una trampa ideada por los programadores. Si la Memoria Ampliada es superior a 1 Mb, la Memoria Extendida carece de dirección fija y es un truco propuesto por un grupo de empresas.

Las empresas Lotus-Intel-Microsoft realizaron la especificación LIM EMS o EMS (Expanded Memory Specification) para que los programas del Sistema Operativo DOS superaran los 640 Kb.

La Memoria Extendida está situada en una tarjeta que hay que añadir al ordenador desde fuera. A continuación se muestran, por ejemplo, las características de la Memoria Extendida EMS versión 4.0:

Ancho Memoria Ampliada:
32MbAncho de página
lógica:
16 Kbps Páginas más
lógicas:
2.048 páginas lógicas

Como toda la Memoria Extendida se divide en páginas lógicas de 16 Kb, saldrá 2.048 páginas lógicas.

32 * 1.048.576 (bytes)16
* 1.024 (bytes/páginas)= 2.048

páginas lógicas

Figura . Mapa memorial de ordenadores con microprocesadores INTEL 8086/8088, 80286 y 80386/80486.

Dado que la Memoria Extendida es una memoria adjunta, el Sistema Operativo DOS no podrá domiciliar la existente, ya que la última dirección con significado para el mismo es de 1024 Kb. Es decir, las direcciones que puede utilizar DOS son las que físicamente se pueden definir a través del Bus de Direcciones, comenzando por 0 Kb hasta 1024 Kb.

Al aparecer la alta memoria se ha observado que algunos segmentos eran vacíos, y hay uno reservado para algo concreto: Segmento D, denominado Ventana de Páginas de Memoria Extendida (Page Frame).

Este segmento D ofrece la posibilidad de enlazar el microprocesador con la Memoria Extendida. Cuando una aplicación necesita algo que se encuentra en la Memoria Ampliada, un gestor de memoria MMU (MMU: Memory Management Unit) copia la página lógica correspondiente a este dato al segmento D. La especificación EMS es sólo un intercambio de bancos memoriales. De alguna manera, desde la estrecha ventana de páginas se puede obtener una vista muy amplia. (Ver figura 5).

Especificaciones de la Memoria Extendida

Existen diferentes Memorias Extendidas en el mercado. Las más importantes son: LIM EMS, XMA de IBM y EEMS de AST.

La Memoria Extendida XMA es una especificación de la casa IBM y sólo admite tarjetas de IBM, no es muy utilizada y el controlador XMA2EMS.SYS que ofrece el Sistema Operativo DOS 4.0 transforma la Memoria XMA Extendida en EMS Extendida.

El nombre de la Memoria Extendida EEMS, Enhanced Expanded Memory Specification, indica que EMS es mejorado y se le anuncia un futuro prometedor.

La Memoria Extendida LIM EMS es del trío Lotus-Intel-Microsoft y sin duda la más habitual. Está tan presente en el mercado que cuando alguien habla de la Memoria Extendida, si no añade precisión se puede decir que se refiere a este LIM EMS mencionado.

Figura . En el caso EMS 4.0 La ventana de páginas ocupa los segmentos C, D y E (192 Kb en total) y forma 12 páginas físicas de 16 Kb. A estas páginas físicas se accede a la información a tratar. Cualquier cambio en la página física se realiza automáticamente en la página lógica manteniendo actualizados los datos.

Conversiones entre Memoria Extendida y Memoria Ampliada

La Memoria Ampliada (Extended Memory) es la memoria RAM propia de los ordenadores 80286//80386/80486, con una posición superior a 1024 Kb.

El microprocesador debe estar protegido para poder utilizar la Memoria Ampliada. El par de segmentos/offset indicado anteriormente sirve para indicar direcciones de 20 bits pero no para buses de direcciones de 24 bits (80286) o 32 bits (80386). Por ello se utiliza un par de seleccionadores/offset. El selector es el índice de una tabla de direcciones físicas.

Como se ha dicho, son muchos los programas de aplicación que se ejecutan en la Memoria Extendida. Para poder utilizar la Memoria Ampliada, los programas deben tener en cuenta el modo protegido del microprocesador y deben redactarse específicamente para la Memoria Ampliada, ejemplos de ello son los Sistemas Operativos UNIX y OS/2.

Existen en el mercado algunos programas de aplicación ejecutables en la Memoria Ampliada, pero son pocos. Como desde el punto de vista del programador la Memoria Extendida es más sencilla, prácticamente todos los programas del mercado lo aceptan, con el inconveniente de tener que añadir una tarjeta especial.

En resumen, la situación sería la siguiente: los ordenadores más comunes que actualmente están a la venta en la tienda son 80286, 80386 y 80486, con una enorme Memoria Ampliada, pero sin un programa de aplicación adecuado.

La solución es configurar la Memoria Ampliada que contienen como una Memoria Extendida sin añadir ninguna tarjeta, es decir, que la Memoria Ampliada simula la Memoria Extendida. Para ello es necesario instalar un controlador de dispositivo especial en el fichero de configuración CONFIG.SYS. Por ejemplo:

DEVICE = EMS4.SYSDEVICE
= EMM386.SYSDEVICE =
XMSAEM.SYS

Los tres convierten la Memoria Ampliada en Memoria Extendida. El controlador EMS4 simula la Memoria Ampliada LIM-EMS 4.0. Apto para ordenadores PC-AT y 80286. Devuelve la Memoria Ampliada a la versión 4.05 de LIM-EMS a través del fichero EMM386, especial para ordenadores 80386. El controlador XMSAEM pasa la Memoria Ampliada a la Memoria Extendida tipo XMA, normalmente este XMSAEM.SYS se utiliza junto con otro fichero (XMA2EMS.SYS), de forma que se accede de la Memoria XMA Extendida de IBM a la Memoria Extendida LIM-EMS.

Diccionario

En los tres últimos artículos sobre la memoria de los ordenadores ha aparecido una nueva batería de palabras y para que los pasos hacia adelante en la normalización del euskera, es necesario que exista un consenso absoluto en la fijación de la terminología. Las aquí puestas son opiniones del autor. He aquí los términos dudosos en la lengua original y las traducciones propuestas:

MemoryConvent>MemoryUpper
MemoryHigh

MemoryExtendded MemoryVideo
MemoryPage Frame



Memoria Memoria

Normal Memoria Memoria
AmpliadaMemoria AmpliadaMemoria
AmpliadaVídeomemoria



Si alguno de ellos no fuera correcto, estaríamos dispuestos a aceptar inmediatamente los sustitutos que fueran más adecuados.

Nota: Para ver bien las imágenes accede al pdf.

Babesleak
Eusko Jaurlaritzako Industria, Merkataritza eta Turismo Saila