|
Les VDM, Virtual DOS Machines
Windows NT propose deux types de Machine Virtuelle DOS (VDM) : une VDM MS-DOS et une VDM Win16. Elles sont là pour que Windows NT supporte les
anciennes applications DOS et Windows 16 bits. Elles reconstituent donc l'environnement adéquate pour ces applications. Toutefois, elles ne sont pas considérées comme des sous-systèmes
d'environnement parce-qu'elles tournent (ce sont des programmes) dans le sous-environnement Win32. Ces deux VDM ont certaines différences :
|
La VDM MS-DOS Il s'agit d'une application Win32 qui émule un ordinateur X86. Les
applications DOS pouvaient directement accéder physiquement au matériel. Cet accès direct est simulé sous NT avec cette VDM. Pour les processeurs à base Intel, Windows NT
peut tourner dans un mode spécifique appelé le mode "Virtual-86". L'accès direct au matériel est simulé par ce mode. Pour les autres types de processeurs, les
instructions X86 sont émulées par un module appelé "Instruction Execution Unit". Les services d'interruptions ROMBIOS et 21 d'MS-DOS sont fournis par le module
d'émulation MS-DOS. La partie physique est représentée virtuellement avec les VDDs : Virtual Device Drivers. Une application DOS dispose de sa propre VDM, avec son propre espace
d'adressage. La VDM supprime la limitation de mémoire que l'on a en DOS classique.. Windows NT peut faire tourner un nombre illimité de VDM MS-DOS.
|
|
La VDM Win16 Il s'agit d'une application émulant un environnement 16 bits, pour les
applications fonctionnant sous Windows 3.X. Windows 3.X n'est en fait que l'interface graphique du DOS. La VDM Win16 tourne donc sur une VDM MS-DOS. La VDM Win16 dispose d'une
couche WOW : Win16 On Win32, qui est chargée de
traduire les API 16 bits en API 32 bits et vice versa. Ce procédé s'appelle le thunking. WOW fait la liaison avec le sous-système Win32. Le système Win16 est multi-threadé
coopératif. C'est-à-dire que ce sont les applications qui doivent d'elles-mêmes rendre la main au processeur.
Windows NT a dû garder ce principe. Pour ce faire, toutes les applications 16 bits tournent dans la même VDM Win16. Entre elles, les applications Win16 sont multi-threadées coopératives. Le système Windows NT reste multi-thredé préemptif. Quand le système d'exploitation laisse la main à la VDM Win16, il va reprendre l'application Win16 qu'il avait préempté pour une autre application (Win32, DOS, POSIX ou OS/2). C'est l'application Win16 qui devra rendre la main pour que les autres applications Win16 puissent continuer. Les processus Win16 ont donc un statut spécial.
Pour résumer, les applications Win16 tournent en mode multi-threadé coopératif, mais restent en mode multi-threadé préemptif vis-à-vis des
autres applications du système d'exploitation. Une application Win16 pourra donc bloquer les autres applications Win16, mais pas les autres.
|
|