|
Accueil-->VxD W9x en ASM - Chapitre 2
Le Virtual Machine Manager1 IntroductionLe Virtual Machine Manager (VMM) est le véritable système d’exploitation caché derrière Windows 9x. Il bâtit et entretient le support chargé de piloter les machines virtuelles. Il fournit aussi beaucoup de prestations aux autres. Les trois plus importantes sont la gestion de la mémoire, le traitement des interruptions, et le partage de temps. 2 Gestion de la mémoire2.1 GénéralitésLe VMM exploite les possibilités de pagination des processeurs Intel 80386 et ultérieurs pour créer un espace virtuel d’adressage pour la machine virtuelle système. 2.2 Les espaces d’adressage2.2.1 L’espace d’adressage V86 de l’adresse 0h à 10FFEFh. Cette région appartient à la machine virtuelle en cours. 2.2.2 L’espace d’adressage privé de l’application de 4Mo à 2Go. C’est dans cette zone que les applications win32 fonctionnent. Chaque process win32 dispose de son propre espace privé de 2GB (moins 4 MB). 2.2.3 L’espace d’adressage partagé de l’application de 2 Go à 3 Go. Cette région est partagée entre toutes les applications fonctionnant dans la machine virtuelle système. Ces ici que les DLL système (user32, kernel32, et gdi32) résident. Toutes les applications fonctionnent dans set espace. Les fichiers mappés en mémoire sont stockés ici, ainsi que la mémoire allouée pour les appels DPMI. 2.2.4 L’espace d’adressage partagé système de l’adresse 3Go à 4Go. Cette zone est réservée au VMM ainsi qu’aux VxD. 2.3 Mode de gestion de la mémoire des VxD par la VMM2.3.1 Gestion par page. Cette fonctionnalité alloue et gère la mémoire par pages de 4 Ko. C’est le mode de gestion de plus bas niveau. Tous les autres modes dérivent de ce mode primaire. 2.3.2 Gestion par tas (Heap) Allocation et gestion par petits blocs. C’est le mode de gestion de plus haut niveau, construit à la base sur une gestion de pages. 2.3.3 Gestion par blocs fixes. Allocation et gestion par blocs de taille fixe convenant aux listes chaînées. 3 Traitement des interruptions3.1 GénéralitésLes interruptions en mode protégé se font via la table de description des interruptions (IDT). VMM supervise les IDT de chaque VM avec l’appui des VxD. Normalement le VMM traite la plupart des entrées des IDT. Il contient le gestionnaire d’interruption de premier niveau qui sauvegarde l’état du programme interrompu sur la pile et se contente de transférer le contrôle au gestionnaire d’interruption de second niveau pouvant être dans un VxD quelconque et chargé du traitement par lui-même. Quand le gestionnaire de second niveau termine son travail, il transfère le contrôle à la routine de ré acheminement chargée de restaurer l’état du programme interrompu et de reprendre l’exécution a l’endroit interrompu. 3.2 RestrictionsCette description est toutefois par trop simplifiée de par les faits suivants :
4 Partage de temps4.1 IntroductionLe VMM utilise des programmateurs pour implémenter le multitâche préemptif dans les unités d’exécution (Threads) et les VM : les ordonnanceurs primaire et secondaire. 4.2 L’ordonnanceur primaireL’ordonnanceur primaire dont la tache est de sélectionner et basculer l’exécution vers le thread ayant la plus haute priorité. Cette sélection se produit même si le VMM est en train de traiter une interruption comme les interruptions du timer). Le résultat détermine à quel thread ou VM sera donné le contrôle quand le VMM aura fini de traiter l’interruption. L’ordonnanceur primaire marche suivant des règles simplistes.
VMM et les autres VxD peuvent modifier l’ordre de priorité des threads par les services VMM. Par exemple, si une interruption hardware survient, le VMM augmentera la priorité du gestionnaire d’interruption pour qu’il ait une plus grande chance de se terminer le plus vite possible. 4.3 L’ordonnanceur secondaireL’ordonnanceur secondaire utilise le service de l’ordonnanceur primaire pour allouer des tranches de temps et répartir le temps CPU parmi les threads qui ont tous le même niveau de priorité le plus élevé. Quand un thread s’exécute jusqu’à ce que sa tranche de temps expire, l’ordonnanceur secondaire accélère la priorité du thread suivant de manière à ce qu’il soit sélectionné par l’ordonnanceur primaire. 4.4 RéférencesVous pouvez obtenir plus de détails à ce sujet en lisant le livre de Walter Oney's intitulé Systems Programming for Windows 95 ainsi que la documentation du DDK Windows 9x.
Page:
1
2
3
4
5
6
7
8
9
Copyright © Jean-Pierre Fayeulle |