stringtranslate.com

Área de alta memoria

Se resalta el área de memoria alta.

En la gestión de memoria de DOS , el área de memoria alta ( HMA ) es el área de RAM que consta de los primeros 65520 bytes por encima del megabyte en una computadora IBM AT o compatible.

En modo real , la arquitectura de segmentación de los procesadores Intel 8086 y posteriores identifica ubicaciones de memoria con un segmento de 16 bits y un desplazamiento de 16 bits, que se resuelve en una dirección física mediante (segmento) × 16 + (desplazamiento). Aunque está destinado a abordar solo 1  megabyte (MB) (2 20 bytes) de memoria, segment:offset aborda FFFF:0010la memoria de referencia y más allá de 1 MB ( FFFF0 + 0010 = 100000). Entonces, en procesadores 80286 y posteriores, este modo en realidad puede direccionar los primeros 65520 bytes de memoria extendida como parte del rango de 64 KB, comenzando 16 bytes antes de la marca de 1 MB, FFFF:0000 (0xFFFF0)hasta FFFF:FFFF (0x10FFEF). Los procesadores Intel 8086 y 8088 , con sólo 1 MB de memoria y sólo 20  líneas de dirección , se ajustaban en el bit 20, por lo que esa dirección FFFF:0010equivalía a 0000:0000. [1]

Para permitir la ejecución de programas DOS existentes que dependían de esta función para acceder a la memoria baja en sus computadoras IBM PC AT más nuevas, IBM agregó circuitos especiales en la placa base para simular la envoltura. Este circuito era una puerta lógica simple que podía desconectar la línea de direccionamiento número 21 del microprocesador, A20 , del resto de la placa base. Esta puerta podría controlarse, inicialmente a través del controlador del teclado , para permitir la ejecución de programas que quisieran acceder a toda la RAM. [1]

Los llamados controladores A20 podrían controlar el modo de direccionamiento dinámicamente, [1] permitiendo así que los programas se carguen en la región de 1024 a 1088 KB y se ejecuten en modo real. [1]

El código adecuado para ser ejecutado en el HMA debe codificarse para que sea independiente de la posición (usando solo referencias relativas), [2] [1] compilarse para funcionar en direcciones específicas en el HMA (normalmente permitiendo solo una o como máximo dos fragmentos de código para compartir el HMA), o debe diseñarse para que sea un límite de párrafo o incluso un desplazamiento reubicable (con todas las direcciones fijadas durante la carga). [2] [1]

Antes de que la CPU pueda direccionar el código (o los datos) en el HMA, el controlador correspondiente debe garantizar que el HMA esté asignado. Esto requiere que dichas solicitudes se canalicen a través de un código auxiliar que queda en la memoria fuera del HMA, lo que invocaría el Controlador A20 para habilitar (temporalmente) la puerta A20 . [2] [1] Si el controlador no muestra ninguna estructura de datos públicos y solo utiliza interrupciones o llamadas ya controladas por el sistema operativo subyacente, podría ser posible registrar el controlador con el sistema de manera que el sistema tome cuidado del propio A20, eliminando así la necesidad de un talón separado. [1] [nota 1]

El primer usuario de HMA entre los productos de Microsoft fue Windows/286  2.1 en 1988, que introdujo el controlador de dispositivo HIMEM.SYS . A partir de 1990 con DR DOS 5.0 [3] de Digital Research (vía [4] y CONFIG.SYS ) y desde 1991 con MS-DOS 5.0 [3] (vía ), se podían cargar partes del BIOS y del kernel del sistema operativo. en el HMA también, [3] [5] liberando hasta 46 KB de memoria convencional . [1] Otros componentes, como controladores de dispositivos y programas residentes de terminación y estancia (TSR), al menos podrían cargarse en el área de memoria superior (UMA), pero no en el HMA. En DOS 5.0 y superior, con , el sistema intentaba además mover los buffers del disco al HMA. [5] Bajo DR DOS 6.0 (1991) y superior, los buffers de disco (a través de , y más tarde también ), partes del procesador de comandos COMMAND.COM así como varios controladores especiales de reubicación automática como KEYB , NLSFUNC y SHARE podrían cargarse en el HMA también (usando su opción), liberando así aún más memoria convencional y memoria superior para que funcione el software DOS convencional. [1] TASKMAX parece haber reubicado partes de sí mismo en el HMA también. [6] [7] NLCACHE de Novell de NetWare Lite y las primeras versiones de NWCACHE de Personal NetWare y Novell DOS 7 también podrían utilizar HMA. [8] [9] [7] En MS-DOS/PC DOS, ca. La porción compartida de 2 KB de COMMAND.COM se puede reubicar en HMA, [10] así como mapas de bits DISPLAY.SYS para páginas de códigos preparadas . [10] [11] En MS-DOS 6.2 (1993) y superior, ca. Una porción de 5 KB de DBLSPACE.BIN / DRVSPACE.BIN puede coexistir con DOS en el HMA (a menos que se invoque DBLSPACE / DRVSPACE ). [5] [12] En PC DOS 7.0 (1995) y 2000 , DOSKEY se carga en el HMA (si está disponible), [13]HIDOS.SYS /BDOS=FFFF HIDOS=ONDOS=HIGHDOS=HIGHHIBUFFERSBUFFERSHIGH/MH /NOHMAy SHARE también se puede cargar en el HMA (a menos que /NOHMAse proporcione su opción). [13] En MS-DOS 7.0 (1995) a 8.0 (2000), partes del HMA también se utilizan como un bloc de notas para contener una estructura de datos en crecimiento que registra varias propiedades de los controladores en modo real cargados. [7] [14] [15]

Ver también

Notas

  1. ^ No es necesario un código auxiliar para las extensiones del sistema residente SHARE y NLSFUNC en DR DOS 6.0 y superiores, porque solo conectan la interrupción multiplex INT 2Fh y, por lo tanto, pueden utilizar una interfaz de puerta trasera para conectarse a la cadena de interrupción en el espacio del núcleo para que el núcleo El controlador de puerta A20 proporcionará la funcionalidad del trozo.

Referencias

  1. ^ abcdefghij Paul, Matthias R. (2 de febrero de 2002). "Treiber dynamisch nachladen (Intra-Segment-Offset-Relokation zum Laden von TSRs in die HMA)" [Carga de controladores dinámicamente (reubicación de compensación intrasegmento para cargar TSR en el HMA)] (en alemán). Grupo de noticias : de.comp.os.msdos. Archivado desde el original el 9 de septiembre de 2017 . Consultado el 2 de julio de 2017 .(NB. Ofrece una descripción general completa de la historia y la "naturaleza" del HMA y las restricciones de diseño no obvias que se deben observar al desarrollar extensiones del sistema residente que se cargarán en el HMA. También describe cómo abordar estos problemas utilizando stubs . puertas traseras y reubicación de compensación dentro del segmento, un método utilizado por los controladores DR-DOS capaces de reubicarse en el HMA y similar a un método (más sofisticado) utilizado como base para la eliminación dinámica del código muerto en el controlador FreeKEYB del autor).
  2. ^ abc Ingenoso, Tony (20 de diciembre de 1998). "Capítulo 13 - La puerta A20 y el HMA". Hacer que el código funcione mejor: cómo minimizar el tamaño del código de 80x86 y, a veces, hacerlo más rápido (libro electrónico). Archivado desde el original el 18 de noviembre de 2019 . Consultado el 18 de noviembre de 2019 .
  3. ^ a b C Dryfoos, Mike, ed. (18 de septiembre de 1991) [19 de julio de 1991]. "Informe post-mortem de desarrollo de MS-DOS 5.0" (PDF) (envío por correo como documento judicial). Microsoft . pag. 10. MS-PCA1179169 (MS-PCA1179159-MS-PCA1179191). MS7020988 (MS7020978-MS7021010). Depósito. Ex. 1109. Viene contra Microsoft Prueba documental 3473. CA.No.2:96CV645B Prueba documental 477 del demandante. Archivado (PDF) desde el original el 2 de abril de 2019 . Consultado el 22 de julio de 2019 . […] Uno de los estímulos más importantes para agregar funciones fue la presión competitiva de DRDOS 5.0 , del que nos enteramos por primera vez en la primavera de 1990. El conjunto de funciones de DRDOS nos llevó a agregar compatibilidad con UMB , intercambio de tareas y recuperación. […] Una cantidad considerable de la atención administrativa del equipo se desvió hacia nuevas funciones como software de transferencia de archivos, recuperación e instalación de red […] Finalmente, esta situación alcanzó un punto crítico a finales de julio de 1990 y, liderado por BradS , el equipo La gerencia pasó una ardua serie de reuniones para definir un cronograma y un proceso para cerrar el proyecto […](1+32 páginas)
  4. ^ Banta, K.; Perdiz, D. (18 de agosto de 1994). "Administradores de memoria de terceros". DR DOS 6.0 (Documento de información técnica). Revisión A. Novell . TID800074 (reemplaza a FYI-M-1303). Archivado desde el original el 15 de diciembre de 2021 . Consultado el 15 de diciembre de 2021 .
  5. ^ abc Schulman, Andrés; Marrón, Ralf D .; Maxey, David; Michels, Raymond J.; Kyle, Jim (1994) [noviembre de 1993]. Williams, Andrés (ed.). DOS indocumentado: una guía para programadores sobre funciones y estructuras de datos reservadas de MS-DOS, ampliada para incluir MS-DOS 6, Novell DOS y Windows 3.1 . Serie de programación de Andrew Schulman (primera impresión, 2ª ed.). Reading, Massachusetts, EE.UU.: Addison Wesley Publishing Company . págs. 42, 349–350, 437–438. ISBN 0-201-63287-X. ISBN 978-0-201-63287-3(xviii+856+vi páginas, disquete de 3,5" [1]) Erratas: [2][3]
  6. ^ "Formato del bloque de memoria HMA (kernel DR DOS 6.0 cargado en HMA)". RBIL . 2000. Archivado desde el original el 18 de febrero de 2020 . Consultado el 18 de febrero de 2020 .
  7. ^ abc Paul, Matthias R. (10 de abril de 2002). "[fd-dev] Acceso HMA desde TSR". freedos-dev . Archivado desde el original el 9 de septiembre de 2017 . Consultado el 9 de septiembre de 2017 . […] MS-DOS 7.0 + agrega INT 21h/AX=4A03h e INT 21h/AX=4A04h. RBIL 61 INT 21h/AH=52h tiene información sobre la cadena MS-DOS 7.0+ HMA MCB […] La reubicación de HMA para TSR tiene mucho sentido para DR-DOS : aunque puede cargar grandes partes del BIOS y BDOS , el residente parte del shell, los BUFFERS y los TSR de DR-DOS como SHARE , KEYB y NLSFUNC (y en algunos números partes de TASKMGR y NWCACHE ) en el HMA, normalmente todavía hay espacio libre disponible, normalmente alrededor de 10 Kb (hasta aproximadamente 20 Kb cuando se utiliza un shell de terceros). También tiene sentido para MS-DOS 5.0 - 6.22 y PC DOS hasta 2000 , que normalmente dejan entre 4 y 7 Kb de memoria HMA sin usar (SHARE, KEYB y NLSFUNC no se pueden cargar en el HMA, pero DBLSPACE y HIMEM sí pueden, hasta cierto punto ). medida). El espacio disponible en HMA puede ser bastante limitado con MS-DOS 7.0 +, ya que este problema introdujo una estructura de datos RMD nueva y en su mayor parte indocumentada que generalmente se encuentra en el HMA. El kernel recopila y registra la configuración y los datos del controlador en modo real durante el arranque (tipo de controlador, interrupciones conectadas por el controlador, línea de invocación CONFIG.SYS , etc.) y almacena esta información en un […] complicado […] y […] estructura de datos en crecimiento. Presumiblemente, esta información está destinada a ser utilizada por el núcleo de Windows para obtener una mejor imagen de los controladores cargados en Modo Real en lugar de tratar a DOS como un bloque monolítico, o incluso […] intentar desenganchar o descargar algunos de ellos, sin embargo, es solo se usa de forma muy limitada (por ejemplo, puede ver parte de la información reflejada en los archivos de registro creados al iniciar Windows 9x, y algunas partes del administrador de configuración de Windows también hacen uso de ella), dejando espacio para especulaciones mucho más allá del aspecto técnico - en particular porque nada de lo interesante está documentado... […]
  8. ^ Paul, Matthias R. (30 de julio de 1997) [1 de mayo de 1994]. "II.4. Undokumentierte Eigenschaften externer Kommandos". NWDOS-TIP: consejos y trucos para Novell DOS 7, con un clic para deshacer detalles, errores y soluciones. MPDOSTIP (en alemán) (3 ed.). Archivado desde el original el 5 de noviembre de 2016 . Consultado el 11 de enero de 2012 .(NB. NWDOSTIP.TXTes un trabajo completo sobre Novell DOS 7 y OpenDOS 7.01 , que incluye la descripción de muchas características e componentes internos no documentados. Es parte de la MPDOSTIP.ZIPcolección aún más grande del autor mantenida hasta 2001 y distribuida en muchos sitios en ese momento. El enlace proporcionado apunta a una versión anterior del archivo convertida a HTML.) [4]
  9. ^ Paul, Matías R. (9 de abril de 2001). "II.4. Undokumentierte Eigenschaften externer Kommandos". NWDOS-TIP: consejos y trucos para Novell DOS 7, con Blick auf desdokumentierte Detalles, errores y soluciones . MPDOSTIP (en alemán) (3 ed.).
  10. ^ ab Chappell, Geoff (enero de 1994). Schulman, Andrés; Pedersen, Amorette (eds.). Partes internas de DOS . Serie de programación de Andrew Schulman (primera impresión, primera edición). Compañía editorial Addison Wesley . págs.4, 21, 100–106, 127–129. ISBN 978-0-201-60835-9. ISBN 0-201-60835-9(xxvi+738+iv páginas, disquete de 3,5" [5][6]) Erratas: [7][8][9]
  11. ^ Paul, Matías R. (4 de diciembre de 2002). "[fd-dev] ¿DISPLAY CON?". freedos-dev . Archivado desde el original el 8 de diciembre de 2021. […] algunas ediciones de DISPLAY.SYS (de PC DOS 7/2000 , por ejemplo) almacenan las fuentes actualmente no utilizadas en la memoria XMS . Algunas ediciones anteriores de MS-DOS/PC DOS DISPLAY.SYS parecen haber tenido una función para almacenarlas en el HMA […]
  12. ^ Cooper, Jim (2002). Usando MS-DOS 6.22 (tercera edición especial). Que Editorial . pag. 669.ISBN _ 0-78972573-8. ISBN 978-0-78972573-8 . Archivado desde el original el 18 de febrero de 2020 . Consultado el 18 de febrero de 2020
  13. ^ ab Brooks, Vernon C. (2014). "Esta es una lista detallada de los cambios que hice en PC DOS 7.0". PC DOS Retro . Archivado desde el original el 18 de febrero de 2020 . Consultado el 18 de febrero de 2020 . […] DOSKEY.COM […] Mueva el código a HMA si está disponible. […] SHARE.EXE […] Mueva el código a HMA si está disponible y agregue la opción /NOHMA para forzar la carga baja. […]
  14. ^ Sweger, Kristofer (2007) [15 de julio de 2002]. "ANSIPLUS y Windows". Archivado desde el original el 28 de noviembre de 2021 . Consultado el 28 de noviembre de 2021 . […] El código de ANSIPLUS no se puede cargar en el HMA en MS-DOS 7 (solo Windows 9x) porque aparentemente no hay suficiente memoria HMA no utilizada disponible. […]
  15. ^ Paul, Matías R. (13 de agosto de 2002). "Suche freien Speicherbereich unterhalb von 1 MB, der nicht von OS überschrieben wird" (en alemán). Grupo de noticias : de.comp.lang.assembler.x86. Archivado desde el original el 4 de septiembre de 2017 . Consultado el 3 de septiembre de 2017 .
  16. ^ Paul, Matías R. (2 de octubre de 1997) [29 de septiembre de 1997]. "Caldera OpenDOS 7.01/7.02 Actualización Alpha 3 IBMBIO.COM - README.TXT y BOOT.TXT - Una breve descripción de cómo se inicia OpenDOS". Archivado desde el original el 4 de octubre de 2003 . Consultado el 29 de marzo de 2009 .[10]

Otras lecturas