Memoria expandida


Memoria expandida
Páginas o bancos de memoria expandida dentro del espacio de memoria superior (UMA).

La memoria expandida fue un método desarrollado alrededor de 1984 que proporcionaba memoria paginada extra a los programas de MS-DOS.

Éstos programas, que corrían en la IBM PC original, y sus sucesores como el IBM XT y el IBM AT, eran típicamente aplicaciones como hojas de cálculo y bases de datos que necesitaban una gran cantidad de memoria para trabajar correctamente.

El IBM PC y el IBM XT tenían una arquitectura de memoria de modo real, que solo permitía a los programas usar 1 megabyte de espacio de dirección, de los cuales solo hasta 640 KB estaba disponible como RAM normal para las aplicaciones. El resto entre 640 KB y 1 megabyte era reservado para periféricos, destacándose la memoria para las tarjetas de vídeo. El IBM AT, con su microprocesador Intel 80286 soportaba un modo protegido lo que le permitía direccionar hasta 16 MB, pero este computador también usaba el MS-DOS, un sistema operativo que no usaba la memoria extendida (por arriba del megabyte) directamente.

La idea detrás de la memoria expandida era usar, también para la memoria del programa, parte de los 384 KB restantes normalmente dedicados a los periféricos. Para poder usar potencialmente mucho más memoria que los 384 KB que el espacio de direccionamiento permitía, fue ideado un esquema conmutación de bancos, donde solamente estarían accesibles a un mismo tiempo, porciones seleccionadas de la memoria adicional. Originalmente, era posible una sola ventana de 64 KB de memoria, más adelante esto fue más flexible. Las aplicaciones tuvieron que ser escritas de una manera específica para tener acceso a la memoria expandida.

Contenido

Diferentes implementaciones

Tarjetas de expansión

Una tarjeta de expansión de memoria ISA. La tarjeta está equipada con 4 MB accesibles por medio de páginas de 64 KB.

Esta inserción de una ventana de memoria en el espacio de dirección de los periféricos se podía lograr originalmente solamente a través de tarjetas de expansión específicas, enchufadas en el bus de expansión ISA del computador. Algunas famosas tarjetas de memoria expandida de los años 1980 fueron el RAMPage de AST, el IBM PS/2 80286 Memory Expansion Option, el AT&T Expanded Memory Adapter, y el Above Board de Intel. Dado el precio del RAM de hasta varios cientos de dólares por megabyte durante ese período, y la calidad y la reputación de las marcas mencionadas arriba, una tarjeta de memoria expanida era muy costosa.

Tarjeta madre

Más adelante, algunas tarjetas madres de computadores basados en el Intel 80286 implementaron un esquema de memoria expandida que no requería tarjetas añadidas. Típicamente, interruptores por software determinaban cuánta memoria se debía usar como memoria expandida y cuánta debía ser usada como memoria extendida.

Manejo de memoria nativo en el procesador

Comenzando en 1987, las características incorporadas de manejo de memoria del procesador Intel 80386 modelaron libremente el espacio de dirección cuando corrían software en modo real, haciendo innecesarias las soluciones de hardware. La memoria expandida se podía simular simplemente por software.

DPMI

Una manera más eficiente de tener acceso al espacio de dirección más allá de 640 KB, en el 80286 y procesadores posteriores,, fue usando el Protected Mode Interface del DOS (DPMI) (Interface de modo protegido del DOS). Los DOS extenders eran drivers que permitieron a las aplicaciones correr en modo protegido. En lugar de intentar tener acceso a más memoria por medio de mecanismos de conmutación de memoria, los drivers cambiaban el procesador a modo protegido cuando corrían el programa de aplicación, y regresaban a modo real cuando accedían a servicios del MS-DOS. Esto permitió que los programas accedieran directamente toda la memoria que era configurada como memoria extendida.

El uso de la memoria expandida por las aplicaciones disminuyó a principios de los años 1990, a medida que los DOS Extenders llegaron a ser más predominantes.

Emulación por software

El primer programa de manejo de memoria expandida (por emulación) fue probablemente CEMM, disponible en noviembre de 1987 con el DOS 3.31 de Compaq. Una solución comercial popular con buenas características fue el QEMM de Quarterdeck. Un competidor fue el 386MAX de Qualitas. La funcionalidad fue incorporada más adelante en el MS-DOS 4.01 de 1989 y en el DR-DOS 5.0 de 1990, como el EMM386.

El software de manejo de memoria expandida ofrecía funcionalidad adicional pero estrechamente relacionada. Notablemente, podía crear áreas de memoria ordinaria (Upper Memory Blocks) en las partes no usadas de los384 KB altos (entre 640 KB y 1 MB) del espacio de dirección del modo real y proveyeron herramientas para cargar pequeños programas, típicamente TSRs usando los comandos ("loadhi" o "loadhigh").

La interacción entre la memoria extendida, la emulación de memoria expandida y los DOS Extenders terminó siendo regulada por las especificaciones XMS, VCPI y DPMI.

Ciertos programas de emulación, coloquialmente conocidos como LIMulators, no dependían para nada de la tarjeta madre o las características del 80386. En su lugar, reservaron 64 KB de RAM básica para la ventana de memoria expandida, donde copiaron datos a y desde la memoria extendida o el disco duro cuando los programas de aplicación solicitaban cambios de página. Esto era fácil de implementar programáticamente pero el desempeño era bajo. Esta técnica fue ofrecida por AboveDisk de Above Software y por varios programas shareware.

Detalles

Una tarjeta de memoria expandida era un periférico de hardware, necesitaba un software de controlador de dispositivo, que exportaba sus servicios. Este controlador de dispositivo fue llamado "expanded memory manager" (manejador de memoria expandida). Su nombre fue variable; las tarjetas previamente mencionadas usaron respectivamente remm.sys (AST), ps2emm.sys (IBM), aemm.sys (AT&T) y emm.sys (Intel). Más adelante, la expresión llegó a ser asociada con soluciones solo de software que requerían el procesador 80386, por ejemplo el QEMM de Quarterdeck (ver abajo).

La memoria expandida era un término común para algunas variantes de tecnología incompatibles. La Expanded Memory Specification (EMS) (especificación de memoria expandida) fue desarrollada en común por Lotus, Intel, y Microsoft, así que esta especificación fue referida a veces como "LIM EMS". EEMS, un estándar competidor de manejo de memoria expandida, fue desarrollado por AST Research, Quadram y Ashton-Tate. Este estándar también permitió remapear alguno o todos los 640 KB de la parte baja de memoria, de modo que programas enteros pudieran ser conmutados dentro y fuera de la RAM extra. Los dos estándares fueron eventualmente combinados como LIM EMS 4.0.

Programación

Un bloque de 64 KB, el page frame fue reservado en upper memory area o en memoria convencional. El page frame en sí mismo constaba de cuatro páginas EMS de 16 KB, cada una de las cuales podía ser fijada independientemente para "apuntar" a algunas partes de la memoria expandida bajo el control del programa. Cambiar el llamado mapeo del page frame era costoso, así que en consecuencia se tenían que organizar los datos. Versiones posteriores de la especificación del LIM EMS no imponen más el uso de un page frame, pero esto fue apenas usado.

Usar memoria expandida era oneroso, y la tarea fue temida y odiada por todos los programadores de PC. No obstante, era una manera de usar más memoria, y para software exigente en memoria, usarla en una manera penosa era mejor que no usarla. Un desafío constante de diseño era determinar qué datos se debían almacenar en los fáciles de usar 640 KB bajos de la memoria, y qué datos se debían almacenar en la memoria expandida con su sobrecarga inherente de manejo.

Antes de la estandardización impuesta por el LIM EMS, cada tarjeta de memoria venía con su propio driver y con diferentes APIs. Después de LIM EMS, Microsoft alteró ligeramente su implementación en el DOS 3.31, de modo que la memoria fuera alineada en límites de palabra en vez de límites de byte como determinada la especificación original, haciendo fallar en funcionar correctamente a algunas aplicaciones. En la práctica, los usuarios tuvieron que alterar la configuración de sus computadoras para usar el LIM EMS o Microsoft EMS de acuerdo a la aplicación que desearan usar.

Véase también

Referencias

Este artículo (o una versión anterior) está basado originalmente en material de Free On-line Dictionary of Computing, utilizado con permiso. Actualícelo a discreción.


Wikimedia foundation. 2010.

Mira otros diccionarios:

  • Memoria extendida — La memoria extendida está por arriba de 1 MB, por arriba de la memoria convencional y el UMA. En un IBM PC o compatible con un microprocesador 80286 o posterior, la memoria extendida se refiere a la memoria por arriba del primer megabyte de… …   Wikipedia Español

  • Memoria — (Del lat. memoria.) ► sustantivo femenino 1 SICOLOGÍA Capacidad para evocar hechos o experiencias del pasado: ■ a raíz del accidente ha perdido la memoria. 2 Capacidad de retener y repetir lo que se ha aprendido: ■ recuerda la lista de los reyes… …   Enciclopedia Universal

  • Memoria convencional — La memoria convencional son los primeros 640 KB. En los primeros computadores IBM PC y compatibles, era la porción de memoria disponible para los programas en MS DOS. Arriba de ella estaba el UMA, originalmente reservada para dispositivos de… …   Wikipedia Español

  • Área de memoria superior — El área de memoria superior (UMA) ocupa 384 KB y va desde los 640 KB hasta 1 MB. El Upper Memory Area (UMA) o área de memoria superior es una característica de diseño de los computadores compatibles con el IBM PC de arquitectura x86. Esta es la… …   Wikipedia Español

  • Especificación de memoria extendida — La especificación de memoria extendida o XMS es la especificación que describe el uso de la memoria extendida para almacenar datos, (pero no código ejecutable), en el modo real del IBM PC y compatibles. La memoria se hace disponible mediante… …   Wikipedia Español

  • Área de memoria alta — El área de memoria alta (HMA), son los primeros 64 KB 16 bytes de la memoria extendida, justo por arriba de 1 MB. El área de memoria alta o High Memory Area (HMA) es el área del RAM que consiste en los primeros 64 kilobytes (KB), menos 16 bytes… …   Wikipedia Español

  • IBM PC — (modelo 5150) IBM PC 5150 con teclado y monitor monocromático verde (5151), ejecutando MS DOS 5.0 Tipo Computador personal Comercializado …   Wikipedia Español

  • Compatible IBM PC — Se denomina Compatible IBM PC o IBM PC compatible hace referencia a un tipo de ordenadores similares al IBM PC, IBM Personal Computer XT e IBM Personal Computer/AT. Estos ordenadores también llamados PC clones, IBM clones o clónicos, se denomina… …   Wikipedia Español

  • Windows 2.1x — Parte de la familia Microsoft Windows Desarrollador Microsoft Información general Modelo de desarrollo …   Wikipedia Español

  • Microsoft Windows — En este artículo sobre informática se detectaron los siguientes problemas: No tiene una redacción neutral. Necesita ser wikificado conforme a las convenciones de estilo de Wikipedia. Por favor …   Wikipedia Español