45 votes

Pourquoi un système d'exploitation 64 bits ne peut-il pas faire fonctionner une application 16 bits ?

Pourquoi est-ce que :

  • un système d'exploitation 32 bits, lorsqu'il est installé sur un processeur 64 bits, peut exécuter d'anciennes applications 16 bits,
  • mais si vous installez un système d'exploitation 64 bits, il ne peut pas exécuter ces applications directement et doit recourir à une sorte d'émulation (qui ne fonctionne pas toujours parfaitement) ?

Pour être plus précis, j'ai un processeur 64 bits (Intel Core 2 Duo). Lorsque j'avais Windows XP et Windows 7 (tous deux 32 bits) installés, ils pouvaient exécuter de vieilles applications DOS et Windows 16 bits.

Maintenant, j'ai installé l'édition 64 bits de Windows 7. Pourquoi ne peut-il plus exécuter ces mêmes applications ?

30voto

Matt Sieker Points 566

D'après ce que j'ai compris, c'est parce que lorsqu'il est exécuté en mode long (x64 natif), le processeur lui-même ne prend pas en charge le passage en mode 16 bits. Voir Wikipedia . Ainsi, pour prendre en charge le mode 16 bits, le NTVDM (la couche 16 bits de Windows) devrait émuler entièrement un processeur 16 bits.

Je suppose qu'ils ont pesé le pour et le contre entre la réimplémentation d'une couche d'émulation et l'utilisation de logiciels de virtualisation déjà existants (VirtualPC, VirtualBox) pour gérer cela, et qu'il a été décidé de supprimer le VDM.

11voto

zaca Points 417

Pour Windows, c'est parce que les versions x86 du système d'exploitation incluent une émulation 16 bits qui leur permet d'exécuter ces anciens processus DOS. Dans les versions x64, ils doivent déjà émuler l'exécution x86 (ils l'appellent WoW64) pour permettre aux processus 32 bits de fonctionner, et je suppose que l'utilisation de Wow64 pour émuler davantage l'émulateur 16 bits a causé trop de problèmes.

Une poignée de processus 16 bits reconnus fonctionneront car l'émulation est codée en dur pour les gérer, mais le reste ne fonctionne pas car l'émulation n'est pas incluse dans x64.

Voir "Pas de code 16 bits" dans l'article du MSKB : http://support.microsoft.com/kb/282423

6voto

plugwash Points 5642

La situation est différente pour les applications Dos et les applications Windows 16 bits.

Pour les applications Dos, le problème est que le mode 8086 virtuel n'est pas disponible en mode long. Il s'agit d'une limitation de l'architecture du processeur.

Pour les applications Windows 16 bits (qui s'exécutent en mode protégé 16 bits), la raison est que MS n'était pas prêt à faire le travail pour mettre en œuvre une couche de compatibilité appropriée. Curieusement, Wine est parfaitement capable d'exécuter des applications Windows 16 bits sur linux 64 bits.

3voto

MichaelS Points 199

Corrigez-moi si je me trompe, mais d'après ce que j'ai compris, c'est juste à cause d'un problème spécifique à Windows que NTVDM utilise le mode 8086 virtuel. Le mode de compatibilité sur les processeurs x64 (en mode long) prend en charge le mode protégé 'propre' complet, 16 et 32 bits d'après ce que j'ai trouvé ici : http://en.wikipedia.org/wiki/Long_mode mais pas certains ajouts du 386 tels que le mode 8086 virtuel. Il n'est donc pas pris en charge, très probablement parce qu'il n'est pas rentable pour Microsoft de reprogrammer NTVDM, ce qui nécessiterait probablement d'ajouter un peu plus d'émulation, car certaines applications en mode protégé 16 bits peuvent utiliser le mode 8086 virtuel, même si la plupart ne le font pas. Je suppose qu'avec suffisamment de travail, il est possible d'écrire quelque chose de plus rapide que dosbox fonctionnant en mode long, puisqu'il existe un support matériel pour les applications 16 bits.

2voto

sadmicrowave Points 1058

Je pense que la raison la plus probable est que seul un infime pourcentage de propriétaires de PC souhaite réellement pouvoir exécuter d'anciennes applications 16 bits sur leur nouveau matériel 64 bits. Microsoft s'est probablement dit que cela ne valait pas la peine de continuer à supporter les applications 16 bits.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X