Section courante

A propos

Section administrative du site

Introduction

Le mémoire EMS, dont son nom provient de l'abréviation d'origine anglaise d'«Expanded Memory System/Expanded Memory Manager», aussi appelé Mémoire paginée, fournit la possibilité de contourner la limite de 1 Mo que peuvent gérer les microprocesseurs 8086, 8088, 80188, 80186, NEC V20 et NEC V30 grâce à une technique de mémoire paginée. La variante de mémoire EMS la plus connue fut celle développer conjointement par Lotus Software, Intel et Microsoft et ayant l'appellation «LIM EMS». Cependant, il existe également la variante «EEMS» développée par AST Research, Quadram et Ashton-Tate fournissant la possibilité de cartographier n'importe quelle zone de mémoire sous les 1 Mo. Enfin, IBM a créé sa propre variante de mémoire qu'il nomma XMA. Ainsi, généralement, on constatera 4 plages de 16 Ko donnant un accès à une banque de mémoire pouvant aller jusqu'à 32 Mo. Le détail le plus intéressant de ce type de mémoire, c'est qu'il est possible de faire en sorte qu'il utilise le disque dur ou un autre support que la mémoire vive pour entreposer l'information.

Situation actuelle

Avec l'arrivée de Windows 95, ce type de mémoire vive a été progressivement abandonné à cause que le système d'exploitation permet de supporter plus de mémoire sans passer par un pilote. Donc, les systèmes d'exploitation modernes comme Windows, Mac OS X ou Linux ne supportent plus se type de mémoire bien qu'ils prennent tous en charge l'assembleur de la famille 80x86.

Remarques

Fonction du pilote d'interface EMS/EMM

Fonction Description
Interruption 67h, Fonction 40h Cette fonction permet de demander l'état du pilote.
Interruption 67h, Fonction 41h Cette fonction permet de demander l'adresse de la structure de la mise en oeuvre des pages de mémoire.
Interruption 67h, Fonction 42h Cette fonction permet de demander le nombre de pages de mémoire.
Interruption 67h, Fonction 43h Cette fonction permet l'allocation d'un descripteur et de pages de mémoire.
Interruption 67h, Fonction 44h Cette fonction permet de fixer la cartographie d'une page de mémoire étendue.
Interruption 67h, Fonction 45h Cette fonction permet de libérer un identificateur de descripteur et des pages de mémoire lui étant associé.
Interruption 67h, Fonction 46h Cette fonction permet de demander le numéro de la version du pilote.
Interruption 67h, Fonction 47h Cette fonction permet de sauvegarder la structure d'implantation des pages de mémoire.
Interruption 67h, Fonction 48h Cette fonction permet de restaurer la structure d'implantation des pages de mémoire.
Interruption 67h, Fonction 4Bh Cette fonction permet de demander le nombre de descripteur utilisé.
Interruption 67h, Fonction 4Ch Cette fonction permet de demander le nombre de pages qu'utilise un descripteur.
Interruption 67h, Fonction 4Dh Cette fonction permet de demander le nombre de pages qu'utilisent tous les descripteurs réunis.
Interruption 67h, Fonction 4Eh, Sous-Fonction 00h Cette fonction permet de sauvegarder la structure d'implantation des pages de mémoire.
Interruption 67h, Fonction 4Eh, Sous-Fonction 01h Cette fonction permet de restaurer la structure d'implantation des pages de mémoire.
Interruption 67h, Fonction 4Eh, Sous-Fonction 02h Cette fonction permet de sauvegarder la structure d'implantation des pages de mémoire et dit copier le contenu d'un autre tampon.
Interruption 67h, Fonction 4Eh, Sous-Fonction 03h Cette fonction permet de demander la taille des informations contenu dans la structure d'une page de mémoire.
Interruption 67h, Fonction 4Fh, Sous-Fonction 00h Cette fonction permet de sauvegarder partiellement la structure d'implantation des pages de mémoire.
Interruption 67h, Fonction 4Fh, Sous-Fonction 01h Cette fonction permet de restaurer partiellement la structure d'implantation des pages de mémoire.
Interruption 67h, Fonction 4Fh, Sous-Fonction 02h Cette fonction permet de demander la taille des informations d'affectation des pages de mémoire.
Interruption 67h, Fonction 50h, Sous-Fonction 00h Cette fonction permet de rendre accessible plusieurs pages de mémoire à l'aide d'un numéro.
Interruption 67h, Fonction 50h, Sous-Fonction 01h Cette fonction permet de rendre accessible plusieurs pages de mémoire à partir d'une adresse.
Interruption 67h, Fonction 51h Cette fonction permet d'effectuer une nouvelle allocation de pages de mémoire associé à un descripteur.
Interruption 67h, Fonction 52h, Sous-Fonction 00h Cette fonction permet de demander l'attribut de volatilité d'un descripteur.
Interruption 67h, Fonction 52h, Sous-Fonction 01h Cette fonction permet de fixer l'attribut d'un descripteur.
Interruption 67h, Fonction 52h, Sous-Fonction 02h Cette fonction permet de demander les types d'attribut supporté par le pilote.
Interruption 67h, Fonction 53h, Sous-Fonction 00h Cette fonction permet de demander le nom d'un descripteur.
Interruption 67h, Fonction 53h, Sous-Fonction 01h Cette fonction permet de fixer le nom d'un descripteur.
Interruption 67h, Fonction 54h, Sous-Fonction 00h Cette fonction permet de demander les noms de tous les descripteurs.
Interruption 67h, Fonction 54h, Sous-Fonction 01h Cette fonction permet de trouver un descripteur à partir de son nom.
Interruption 67h, Fonction 54h, Sous-Fonction 02h Cette fonction permet de demander le nombre maximal de descripteur supporté par le pilote.
Interruption 67h, Fonction 55h Cette fonction permet de fixer l'affectation de pages et du nombre de page avant le saut.
Interruption 67h, Fonction 56h, Sous-Fonction 00h Cette fonction permet de fixer le numéro de pages physique et d'adresse d'appel.
Interruption 67h, Fonction 56h, Sous-Fonction 01h Cette fonction permet de fixer le segment de pages physique et d'adresse d'appel.
Interruption 67h, Fonction 56h, Sous-Fonction 02h Cette fonction permet de demander la taille nécessaire pour les fonctions «Adresse d'appel».
Interruption 67h, Fonction 57h, Sous-Fonction 00h Cette fonction permet d'effectuer une copie d'une zone de mémoire.
Interruption 67h, Fonction 57h, Sous-Fonction 01h Cette fonction permet d'échanger le contenu de zones de mémoires.
Interruption 67h, Fonction 58h, Sous-Fonction 00h Cette fonction permet de demander l'adresse des pages de mémoire disponibles.
Interruption 67h, Fonction 58h, Sous-Fonction 01h Cette fonction permet de demander le nombre de pages de mémoire disponibles.
Interruption 67h, Fonction 59h, Sous-Fonction 00h Cette fonction permet de demander la configuration matériel.
Interruption 67h, Fonction 59h, Sous-Fonction 01h Cette fonction permet de demander le nombre de pages total physiquement disponible.
Interruption 67h, Fonction 5Ah, Sous-Fonction 00h Cette fonction permet d'effectuer une allocation de descripteur et de pages de mémoire standard.
Interruption 67h, Fonction 5Ah, Sous-Fonction 01h Cette fonction permet d'effectuer une allocation de descripteur et de pages de mémoire non-standard.
Interruption 67h, Fonction 5Bh, Sous-Fonction 00h Cette fonction permet de demander les registres de cartographie alterné.
Interruption 67h, Fonction 5Bh, Sous-Fonction 01h Cette fonction permet d'initialiser les registres de cartographie alterné.
Interruption 67h, Fonction 5Bh, Sous-Fonction 02h Cette fonction permet de demander la taille et l'espace nécessaire de sauvegarde du registres de cartographie alterné.
Interruption 67h, Fonction 5Bh, Sous-Fonction 03h Cette fonction permet d'effectuer l'allocation d'un registre de cartographie alterné.
Interruption 67h, Fonction 5Bh, Sous-Fonction 04h Cette fonction permet de restaurer l'allocation d'un registre de cartographie alterné.
Interruption 67h, Fonction 5Bh, Sous-Fonction 05h Cette fonction permet d'effectuer l'allocation d'un registre de DMA initialisé.
Interruption 67h, Fonction 5Bh, Sous-Fonction 06h Cette fonction permet d'effectuer une validation DMA d'un registre de cartographie alterné.
Interruption 67h, Fonction 5Bh, Sous-Fonction 07h Cette fonction permet de restaurer la validation DMA d'un registre de cartographie alterné.
Interruption 67h, Fonction 5Bh, Sous-Fonction 08h Cette fonction permet de restaurer le contenu d'un registre DMA.
Interruption 67h, Fonction 5Ch Cette fonction permet de préparer le pilote à un démarrage à chaud immédiat de l'ordinateur.
Interruption 67h, Fonction 5Dh, Sous-Fonction 00h Cette fonction permet d'activer des fonctions EMM du système d'exploitation.
Interruption 67h, Fonction 5Dh, Sous-Fonction 01h Cette fonction permet de désactiver des fonctions EMM du système d'exploitation.
Interruption 67h, Fonction 5Dh, Sous-Fonction 02h Cette fonction permet de supprimer les clefs d'accès du pilote.

Code source

Voici des exemples de code source d'utilitaires pour manipuler l'EMS :

Lien Langage de programmation Description Projet
EMSTEST.PAS Turbo Pascal Cette commande permet de tester la mémoire EMS. Cette commande est un clone de la commande EMSTEST du Turbo Pascal 6. Corail

Voir également

Langage de programmation - Assembleur 80x86 - Interruption 67h: Gestionnaire EMS/EMM
Langage de programmation - Turbo Pascal - Référence de procédures et fonctions - «OVRINITEMS»
Langage de programmation - Turbo Pascal pour Windows - Référence de procédures et fonctions - «LIMITEMSPAGES»
Langage de programmation - C pour OS/2 - Référence procédures et fonctions - «LIMITEMSPAGES»
Système d'exploitation - MS-DOS 3.21 Enhanced Amdek - Références de commandes et de programmes - «VMEM»
Système d'exploitation - MS-DOS 5 - Références de commandes et de programmes - «EMM386»
Système d'exploitation - MS-DOS 6 - Références de commandes et de programmes - «EMM386»

Dernière mise à jour : Samedi, le 2 août 2014