EMM386 es el administrador de memoria expandida de MS-DOS de Microsoft , PC DOS de IBM , DR-DOS de Digital Research y ROM-DOS de Datalight [1] que se utiliza para crear memoria expandida utilizando memoria extendida en CPU Intel 80386. También hay un EMM386.EXE disponible en FreeDOS . [2]
EMM386.EXE puede mapear la memoria en bloques no utilizados en el área de memoria superior (UMA), lo que permite que los controladores de dispositivos y los programas residentes de terminación y permanencia se "carguen en alto", preservando la memoria convencional .
La técnica probablemente apareció por primera vez con el desarrollo de CEMM , incluido con el OEM MS-DOS de Compaq para el Compaq Deskpro 386 en 1986. La versión de Microsoft apareció por primera vez, integrada, con Windows/386 2.0 en 1987 y como EMM386.SYS independiente con MS-DOS 4.0 en 1988; la versión EMM386.EXE más flexible apareció en MS-DOS 5.0 en 1991.
El EMM386 utiliza el modo virtual 8086 del procesador . Esto obliga a que los accesos a la memoria realizados por las aplicaciones DOS pasen por la MMU del procesador (introducida en el 386), y las entradas de la tabla de páginas utilizadas por la MMU están configuradas por el EMM386 para asignar ciertas regiones de la memoria superior a áreas de memoria extendida (obtenidas por el EMM386 a través del administrador de memoria extendida HIMEM.SYS ). Esta técnica habilitaba tanto la EMS (memoria expandida) como las UMB , que aparecen ante las aplicaciones DOS como memoria en el área superior, pero en realidad están asignadas a ubicaciones de memoria física más allá de 1 MB.
Se apaga temporalmente durante una sesión de Windows en modo 386 mejorado , y el kernel del modo protegido de Windows asume su función.
Windows utiliza la API GEMMIS para hacerse cargo de la gestión de memoria de EMM386.EXE. La Especificación de importación global de EMM (GEMMIS) se respalda mediante un documento disponible para un número selecto de proveedores de administradores de memoria ("Especificación de importación de paginación de Windows/386"). [3] [4] [5] [6]
Sólo unos pocos administradores de memoria implementaron la API GEMMIS, algunos de los que la incluyen son: EMM386.EXE, Quarterdeck QEMM , Qualitas 386MAX , Helix Netroom [3] y el DOS integrado de DOSBox . Notablemente, faltan los administradores de memoria de FreeDOS.
Ninguno de los administradores de memoria de FreeDOS (HIMEMX.EXE, JEMM386.EXE, JEMMEX.EXE) implementa la API GEMMIS y Windows no se inicia cuando se ejecuta junto con JEMMxxx, ya que Windows no puede asumir la función de administración de memoria. Windows ME , Windows 98 , Windows 95 , Windows for Workgroups 3.1x y Windows 3.xx fallarán y JEMMxxx mostrará lo siguiente:
No se puede ejecutar Windows mientras el software en modo protegido actualmente instalado esté correr.
Salga del software en modo protegido y vuelva a intentarlo. Es posible que necesites reiniciar tu computadora.
Con JEMMxx, es posible ejecutar Windows 3.x y Windows para Trabajo en Grupo 3.1x con capacidades limitadas al obligar a Windows a utilizar el Modo Estándar; es decir, utilizando el Modo Protegido 80286, no el Modo Mejorado 80386. Se requieren tres condiciones:
Tenga en cuenta que Windows en modo estándar tiene una funcionalidad limitada, carece de memoria virtual, omite la sección [386Enh] en SYSTEM.INI y no se cargan los controladores de dispositivo en [386Enh].