Memoria convencional

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda
La memoria convencional son los primeros 640 KiB. 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 hardware.

La memoria convencional, en informática, son los primeros 640 kibibytes de memoria en computadores IBM PC y compatibles. Anteriormente a especificaciones como Expanded Memory Specification (EMS), Extended Memory Specification (XMS), y High Memory Area (HMA), las aplicaciones de modo real sólo podían usar esta parte de la memoria. Incluso cuando la memoria extendida está presente, las aplicaciones de modo real tienen que ser especialmente programadas para usarla, implementando un sistema complejo de relaciones (overlays) usando memoria paginada, por lo tanto, muchas aplicaciones continuaron usando solamente memoria convencional.

Historia[editar]

A finales de los años 1980, a medida que las aplicaciones DOS se volvieron más grandes y más complejas, se convirtió en una práctica común liberar tanta memoria convencional como fuera posible, moviendo drivers y programas Terminate and Stay Resident (TSRs) dentro de los Upper Memory Blocks (UMBs).

Para viejos sistemas operativos de modo real como MS-DOS, frecuentemente valía la pena afinar el sistema para cargar drivers y otros componentes del sistema en UMBs (trozos de memoria extendida remapeados en el Upper Memory Area (UMA)) para así dejar libre tanta memoria convencional como fuera posible para poder correr grandes aplicaciones.

Con los sistemas operativos modernos y las máquinas de 32 bits la distinción entre la memoria convencional y extendida es raramente relevante, puesto que en modo protegido, toda la memoria se puede alcanzar uniformemente.

Barrera de los 640 KiB[editar]

La barrera de los 640 KiB es un aspecto de los IBM PC y los compatibles cuando estaban trabajando bajo MS-DOS el cual sólo podía direccionar hasta 640 KiB de memoria para las aplicaciones corrientes. Esto era debido a las limitaciones de IBM PC original, que usó el CPU Intel 8088, y al mapa de memoria que fue diseñado por IBM para este computador.

El término se refiere al tamaño de la memoria convencional del PC. Los 8088 y 8086 eran solamente capaces de direccionar 1024 KiB (1 MiB) de memoria (220 bytes), dado que estos chips ofrecían solamente 20 líneas de dirección. De estos 1024 KiB, la IBM reservó los 384 KiB superiores para propósitos del sistema , esta sección fue llamada la Upper Memory Area (Área de Memoria Superior). Esto dejó solamente los restantes 640 KiB más bajos para los programas y los datos del usuario. Al momento en que el IBM PC fue lanzado, en 1981, 640 KiB habrían parecido más que abundantes para el usuario típico, y tomó algunos años hasta que la mayoría de las nuevas PC incluso tenían toda esa memoria instalada. Cuando apareció el PC, el microcomputador más popular existente, el Apple II+, tenía solamente 64 KiB en la configuración más común y no se podía ampliar fácilmente más allá de esto. El valor de la compatibilidad de las generaciones descendientes de microcomputadores todavía no era percibido tan claramente entonces como lo fue a mediados de los años 1980, de modo que probablemente pocas personas en la IBM o alguna otra parte esperaban que la arquitectura del IBM PC duraría más de algunos años en el mercado.

Para mantener compatibilidad con sistemas operativos viejos, la barrera de los 640 KiB seguía siendo parte del diseño de la PC incluso después que el 8088 fuera reemplazado por el procesador Intel 286, que podía direccionar hasta 16 MiB de memoria. Hoy en día todavía está presente en compatibles del IBM PC cuando están corriendo MS-DOS, y todavía en las más modernas PC basadas en Windows, la memoria RAM sigue teniendo un "agujero" en el área entre 640 y 1024 kibibytes, que sin embargo es invisible los programas de aplicación gracias a la paginación y a la memoria virtual.

Superando la barrera[editar]

La barrera fue solamente superada con la llegada de los DOS Extenders, que permitieron a las aplicaciones DOS correr en memoria extendida, pero éstos no fueron utilizados muy extensamente fuera del área de juegos de computadora. Los primeros sistemas operativos del PC en integrar esta tecnología fueron el DOS 3.31 de Compaq (vía CEMM) y Windows/386 2.1, ambos lanzados en 1988. Las aplicaciones Windows no sufrieron de la barrera de los 640 KiB.

Antes de los DOS Extenders, si un usuario instalaba memoria adicional y deseaba usarla bajo DOS, primero tenía que instalar y configurar drivers para soportar la Expanded Memory Specification (EMS) o la Extended Memory Specification (XMS) para la RAM, y en la mayoría de los casos las aplicaciones solamente podían mover datos hacia y fuera del espacio adicional, pero no usarla in-situ; esto hizo a la memoria más allá de la barrera de los 640 KiB lenta e incómoda para usar.

Una técnica usada en las primeras computadoras IBM XT con pantallas Monochrome Display Adapter (MDA) o Color Graphics Adapter (CGA), era agregar más memoria a la tarjeta madre y usar un chip decodificador de dirección por encargo de programmable read only memory (PROM} para hacer aparecer esta memoria en los 640 KiB; esto movió la barrera a 704 KiB[1].

Los manejadores de memoria en los sistemas basados en el 386 (como QEMM o MemoryMax en DR-DOS) podían alcanzar el mismo efecto, agregando memoria convencional en los 640 KiB y moviendo la barrera a 704 KiB o a 736 KiB. En esta situación, se podría utilizar solamente el CGA, porque el Enhanced Graphics Adapter (EGA) usaba esta memoria para sí mismo.

El AllCard, una tarjeta add-on de Unidad de Manejo de Memoria (memory management unit) (MMU) para las computadoras de la clase XT, permitía a la memoria normal ser mapeada en el rango de direcciones A0000-EFFFF(hex), dando hasta 952 KiB para los programas de DOS. Programas como el Lotus 1-2-3, que accedían a la memoria de vídeo directamente, necesitaron ser parcheados para manejar esta disposición de memoria. Por lo tanto, la barrera de los 640 KiB fue eliminada con el costo de compatibilidad de hardware.

Véase también[editar]

Referencias[editar]

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.