Área de memoria superior

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 14 de marzo de 2013; las comprobaciones requieren 18 ediciones .

Área de memoria superior ( UMA ), bloques de memoria superior ( UMB ), memoria superior informal  : 384 kilobytes de memoria , ubicada después de la memoria principal en direcciones desde A0000 16 (640 KB) hasta FFFFF 16 (1024 KB, 1 MB). Característica de las arquitecturas compatibles con IBM PC .

Descripción

IBM reservó el área de memoria superior de su computadora IBM PC para la placa base y la ROM y RAM de accesorios , así como los puertos de E/S de entrada/salida asignados a la memoria. Esta área de memoria se denomina UMA y se ubica entre las direcciones A0000 16 (640 KB) y FFFFF 16 (1 MB).

Por ejemplo, esta área de memoria contiene la RAM y la ROM de un adaptador de video compatible con EGA y la ventana de visualización de memoria extendida .

La memoria superior se divide condicionalmente en tres áreas de 128 KB cada una. La asignación de memoria superior predeterminada se ve así:

Uso

En un sistema real, no se asigna toda el área de memoria reservada (UMA). Las computadoras con el procesador 80386 y superior pueden asignar memoria adicional a áreas UMA libres. Por lo tanto, se forman bloques de memoria superiores (Upper Memory Block, UMB), que pueden colocarse bajo el control del sistema operativo y distribuirse entre aplicaciones.

MS-DOS 5.0 y versiones posteriores admiten el control UMB. Para ello, incluye los controladores HIMEM.SYS y EMM386.EXE (con la ayuda de los cuales se muestra memoria adicional en la UMA en modo 8086 virtualdos=umb ) y los comandos devicehighy loadhigh. Para asignar la memoria adicional a la UMA y habilitar las funciones de administración de la UMB, agregue las siguientes líneas al archivo CONFIG.SYS :

dispositivo=HIMEM.SYS dispositivo=EMM386.EXE NOEMS dos=UMB devicehigh = ... (este controlador se cargará en UMB)

También había controladores para mapear la memoria RAM oculta en modo real de UMB usando funciones de chipset [1] [2] .

Los programas residentes se pueden cargar en UMB usando loadhigh. Sin embargo, no todas las aplicaciones funcionan correctamente cuando se cargan en UMB.

Además, cualquier aplicación puede transferirse de forma independiente o algunos de sus datos a la UMB utilizando la función DOS 58xx.

Debido a que una aplicación puede ocupar más memoria en el momento del arranque que su parte residente, DOS normalmente asigna un tamaño de bloque máximo. [3] Como resultado, la UMA está muy fragmentada, e incluso si la cantidad total de memoria libre en bloques es mayor de lo necesario, es posible que la aplicación no quepa en ningún bloque libre. Para un llenado óptimo de UMA, se debe seleccionar el orden de carga de los controladores y los programas residentes y utilizar la sintaxis extendida de los comandos devicehighy loadhigh(con los que se puede especificar en qué bloque cargar el programa).

Confusión de nombres

palabra inglesa  superior generalmente se traduce al ruso como "superior" ("ubicado en la parte superior" [4] ), pero la palabra alto también se puede traducir como "superior" (o "alto" - "ubicado en la parte superior" [5] ) . Muchas inexactitudes están asociadas con esto al traducir los nombres Área de memoria superior (Bloque de memoria superior) y Área de memoria alta .

Como resultado, las ortografías originales en inglés UMB y HMA continúan usándose en la literatura en idioma ruso (la abreviatura UMA prácticamente no echó raíces).

Además, los comandos devicehighy loadhigh, a pesar de la palabra alta en el nombre, cargan programas en UMB, no en HMA. DOS usa HMA solo para cargar su kernel (si se usa el comando dos=higho dos=high,umb).

Notas

  1. UMBPCI: un controlador UMB de hardware para DOS y Win95 . Consultado el 10 de diciembre de 2014. Archivado desde el original el 31 de diciembre de 2014.
  2. Índice de /scene96-2/misc/utilz/rdosumb . Consultado el 10 de diciembre de 2014. Archivado desde el original el 11 de diciembre de 2014.
  3. Hay campos en el encabezado de los archivos .EXE para especificar la memoria mínima y máxima solicitada; al cargar un programa, DOS selecciona para él el bloque más grande cuyo tamaño está entre estos dos valores. Pero, como regla, en el campo de memoria máxima hay un valor que indica la asignación de toda la memoria disponible y, en este caso, DOS no limita el tamaño de los bloques asignados. Los archivos .COM no tienen encabezado, por lo que está implícito el requisito de un bloque de memoria de programa máximo en este formato.
  4. superior  (enlace inaccesible)  (enlace inaccesible desde el 14/06/2016 [2323 días]) en Yandex.dictionaries
  5. alta  (enlace no disponible)  (enlace no disponible desde el 14/06/2016 [2323 días]) en Yandex.dictionaries