Windows 95
Windows 95 était bien plus qu'un simple "wrapper" pour MS-DOS . Citant Raymond Chen:
MS-DOS servait à deux fins dans Windows 95.
- Il a servi de chargeur de démarrage.
- Il s'agissait de la couche de pilote de périphérique héritée 16 bits.
Windows 95 a en fait accroché / remplacé presque tout MS-DOS, en le gardant comme couche de compatibilité tout en faisant le gros du travail. Il a également implémenté le multitâche préemptif pour les programmes 32 bits.
Pré-Windows 95
Windows 3.x et les versions antérieures étaient pour la plupart en 16 bits (à l'exception de Win32s, une couche de compatibilité qui relie 16 et 32, mais nous l'ignorerons ici), dépendaient davantage de DOS et utilisaient uniquement le multitâche coopératif - c'est-à-dire celui où ils ne forcent pas un programme en cours à se déconnecter; ils attendent que le programme en cours donne le contrôle (en gros, dites "J'ai terminé" en disant au système d'exploitation de lancer le prochain programme en attente).
Le multitâche était coopératif, comme dans les anciennes versions de MacOS (bien que contrairement à Multitasking DOS 4.x, qui comportait le multitâche préventif). Une tâche devait céder la place au système d'exploitation pour pouvoir planifier une tâche différente. Les rendements ont été intégrés à certains appels API, notamment le traitement des messages. Tant qu'une tâche traitait les messages en temps voulu, tout allait bien. Si une tâche arrêtait de traiter des messages et était occupée à exécuter une boucle de traitement, le multitâche n'existait plus.
Architecture Windows 3.x
En ce qui concerne la façon dont les premiers programmes Windows permettraient de contrôler:
Windows 3.1 utilise le multitâche coopératif, ce qui signifie que chaque application en cours d'exécution doit vérifier périodiquement une file de messages pour déterminer si une autre application demande l'utilisation de la CPU et, le cas échéant, la contrôler. . Cependant, de nombreuses applications Windows 3.1 vérifiaient la file de messages de manière peu fréquente, voire pas du tout, et monopolisaient le contrôle du processeur pendant le temps requis. Un système multitâche préemptif, tel que Windows 95, détournera le contrôle du processeur d'une application en cours d'exécution et le distribuera à celles dont la priorité est supérieure, en fonction des besoins du système.
la source
Tout ce que DOS verrait, c’est cette application unique (Windows ou autre) en cours d’exécution, qui transmettrait le contrôle sans quitter. En théorie, le multitâche préemptif peut de toute façon être implémenté sous DOS avec l'utilisation d'une horloge en temps réel et d'interruptions matérielles pour forcer le contrôle du planificateur. Comme le commente Tonny , certains systèmes d’exploitation fonctionnant sous DOS ont fait cela.
386 mode amélioré?
Remarque: certains commentaires ont été formulés sur le mode amélioré 386 de Windows 3.x, 32 bits, prenant en charge le multitâche préemptif.
C'est un cas intéressant. Pour résumer l' article de blog lié , le mode amélioré 386 était essentiellement un hyperviseur 32 bits, qui exécutait des machines virtuelles. À l’intérieur de l’une de ces machines virtuelles, le mode standard Windows 3.x était exécuté.
MS-DOS s’exécutait également à l’intérieur de ces machines virtuelles et, apparemment, elles étaient multitâches préventives. Il semble donc que l’hyperviseur de mode étendu 386 partage les tranches de temps de l’UC entre les machines virtuelles (l’une d’elles exécutant la version 3.x normale et d’autres fonctionnant sous MS). -DOS), et chaque machine virtuelle fera sa propre chose - 3.x serait multitâche coopérativement, alors que MS-DOS aurait une tâche unique.
MS-DOS
Le DOS lui-même ne comportait qu'une tâche sur papier, mais il prenait en charge les programmes TSR , qui resteraient en arrière-plan jusqu'à ce qu'ils soient déclenchés par une interruption matérielle. Loin du vrai multitâche, mais pas entièrement à tâche unique non plus.
Toutes ces discussions sur les bêtises? J'ai posé des questions sur le multitâche!
Eh bien, à proprement parler, le bit-ness et le multitâche ne sont pas dépendants les uns des autres. Il devrait être possible d'implémenter n'importe quel mode multitâche dans n'importe quel bit-ness. Cependant, le passage des processeurs 16 bits aux processeurs 32 bits a également introduit d'autres fonctionnalités matérielles qui auraient pu faciliter la mise en œuvre du multitâche préemptif.
De plus, les programmes 32 bits étant nouveaux, il était plus facile de les faire fonctionner lorsqu'ils étaient déconnectés de force - ce qui aurait pu casser certains programmes 16 bits hérités.
Bien sûr, tout cela n’est que spéculation. Si vous voulez vraiment savoir pourquoi MS n'a pas implémenté le multitâche préemptif dans Windows 3.x (nonobstant le mode 386 amélioré), vous devrez demander à quelqu'un qui a travaillé là-bas.
En outre, je voulais corriger votre hypothèse selon laquelle Windows 95 était tout simplement un wrapper pour DOS;)