Cette technique est probablement apparue pour la première fois avec le développement de CEMM , inclus dans le MS-DOS OEM de Compaq pour le Compaq Deskpro 386 en 1986. La version de Microsoft est apparue pour la première fois intégrée à Windows/386 2.0 en 1987 et en tant que programme autonome EMM386.SYS avec MS-DOS 4.0 en 1988 ; la version plus flexible EMM386.EXE est apparue dans MS-DOS 5.0 en 1991.
EMM386 utilise le mode virtuel 8086 du processeur . Ceci force les accès mémoire effectués par les applications DOS à transiter par l' unité de gestion de la mémoire (MMU) du processeur (introduite sur l'architecture 386). Les entrées de la table des pages utilisées par la MMU sont configurées par EMM386 pour mapper certaines régions de la mémoire supérieure à des zones de mémoire étendue (obtenues par EMM386 via le gestionnaire de mémoire étendue HIMEM.SYS ). Cette technique a permis la mise en œuvre de la mémoire étendue (EMS) et des UMB , qui apparaissent aux applications DOS comme de la mémoire située dans la zone supérieure, mais sont en réalité mappées à des emplacements mémoire physiques au-delà de 1 Mo.
Il s'arrête temporairement pendant une session Windows en mode amélioré 386 , le noyau en mode protégé de Windows prenant alors le relais.
Windows utilise l'API GEMMIS pour prendre le relais de la gestion de la mémoire d'EMM386.EXE. La spécification d'importation EMM globale (GEMMIS) est prise en charge par un document disponible pour un nombre restreint de fournisseurs de gestionnaires de mémoire (« Spécification d'importation de pagination Windows/386 »).
Seuls quelques gestionnaires de mémoire implémentaient l'API GEMMIS ; parmi eux, on peut citer : EMM386.EXE, Quarterdeck QEMM , Qualitas 386MAX , Helix Netroom et le gestionnaire de mémoire intégré à DOSBox . Les gestionnaires de mémoire de FreeDOS, quant à eux, sont notamment absents.
Aucun des gestionnaires de mémoire FreeDOS (HIMEMX.EXE, JEMM386.EXE, JEMMEX.EXE) n'implémente l'API GEMMIS et Windows ne démarre pas lorsqu'il est exécuté conjointement avec JEMMxxx, car Windows ne parvient pas à prendre en charge la gestion de la mémoire. Windows ME , Windows 98 , Windows 95 , Windows for Workgroups 3.1x et Windows 3.xx rencontreront tous cette erreur avec JEMMxxx, affichant le message suivant :
Impossible d'exécuter Windows pendant que le logiciel en mode protégé actuellement installé est en cours d'exécution. en cours d'exécution.
Quittez le logiciel en mode protégé, puis réessayez. Vous devrez peut-être redémarrer votre ordinateur.
Avec JEMMxx, il est possible d'exécuter Windows 3.x et Windows pour groupes de travail 3.1x avec des fonctionnalités limitées en forçant Windows à utiliser le mode standard ; c'est-à-dire le mode protégé 80286 et non le mode amélioré 80386. Trois conditions sont requises :
- Limiter le total des XMS à 64 Mo
- EMS doit être activé ; l'option NOEMS ne peut pas être utilisée. Par exemple : JEMMEX X2MAX=65422
- Windows fonctionne uniquement en mode standard, WIN /S ou WIN /2
Notez que Windows en mode standard est limité en fonctionnalités, il manque de mémoire virtuelle, il ignore la section [386Enh] dans SYSTEM.INI et aucun pilote de périphérique dans [386Enh] n'est chargé.
Histoire
| Ensemble avec | Date | Nom de fichier | Version |
|---|---|---|---|
| MS-DOS 4.01 | Novembre 1988 | EMM386.SYS | 4.00 |
| Windows 3.0 | Mai 1990 | EMM386.SYS | 4.10.0419 |
| MS-DOS 5.0 | Juin 1991 | EMM386.EXE | 4.20.06x |
| IBM PC DOS 5.0 | Juin 1991 | EMM386.EXE | 4.20.06x |
| IBM PC DOS 5.02 | Septembre 1992 | EMM386.EXE | 4,33 |
| MS-DOS 5.00a | Novembre 1992 | EMM386.EXE | 4,33 |
| Windows 3.1 | Avril 1992 | EMM386.EXE | 4.44 |
| Windows pour groupes de travail 3.1 | Octobre 1992 | EMM386.EXE | 4.44 |
| MS-DOS 6.0 | Mars 1993 | EMM386.EXE | 4,45 |
| IBM PC DOS 6.1 | Juin 1993 | EMM386.EXE | 4,45 |
| MS-DOS 6.2 | Septembre 1993 | EMM386.EXE | 4,48 |
| Windows 3.11 | Novembre 1993 | EMM386.EXE | 4,48 |
| Windows pour groupes de travail 3.11 | Novembre 1993 | EMM386.EXE | 4,48 |
| MS-DOS 6.21 | Mars 1994 | EMM386.EXE | 4,48 |
| IBM PC DOS 6.3 | Avril 1994 | EMM386.EXE | 4,48 |
| MS-DOS 6.22 | Juin 1994 | EMM386.EXE | 4,49 |
| IBM PC DOS 7.0 | Avril 1995 | EMM386.EXE | 4,50 |
| IBM PC DOS 2000 | Mai 1998 | EMM386.EXE | 4,50 |
| Windows 95 | Août 1995 | EMM386.EXE | 4,95 |
| Windows 98 | Juin 1998 | EMM386.EXE | 4,95 |