12Sep

Comment le multitâche était-il possible dans les anciennes versions de Windows?

Considérant que DOS était un système d'exploitation mono-tâche et les liens qu'il avait avec les premières versions de Windows, comment les versions précédentes de Windows réussissaient-elles à accomplir un multitâche? Le SuperUser Q & A d'aujourd'hui traite des réponses à cette question.

Question d'aujourd'hui &La session de réponse nous est offerte par SuperUser, une subdivision de Stack Exchange, un regroupement communautaire de sites Web Q & A.

Windows 95 capture d'écran avec la permission de Wikipedia.

La question Lecteur

SuperUser LeNoob veut savoir comment les anciennes versions de Windows pouvaient fonctionner en tant que systèmes multitâches?

J'ai lu que DOS est un système d'exploitation monotâche. Mais si les anciennes versions de Windows( y compris Windows 95?) N'étaient que des wrappers pour DOS, comment pourraient-elles fonctionner comme un système d'exploitation multitâche?

Bonne question! Comment les anciennes versions de Windows ont-elles pu fonctionner en tant que systèmes multitâches?

La Réponse

SuperUser contributeurs Bob et Pete ont la réponse pour nous. Tout d'abord, Bob:

Windows 95 était bien plus que "juste un emballage" pour MS-DOS.Citant Raymond Chen:

  • MS-DOS a servi deux objectifs dans Windows 95: 1.) Il a servi de chargeur de démarrage.&2.) Il a agi en tant que couche de pilote de périphérique héritée de 16 bits.

Windows 95 réellement accroché / override à peu près tout de MS-DOS, en le gardant comme couche de compatibilité tout en faisant tout le lourd soulever lui-même. Il a également implémenté le multitâche préemptif pour les programmes 32 bits.

Pré-Windows 95

Windows 3.x et plus ancien étaient la plupart du temps 16 bits( à l'exception de Win32s, une sorte de couche de compatibilité qui relie 16 et 32, mais nous ignorerons ici), étaient plus dépendants de DOS, etutilisé seulement multi-tâches coopératif - c'est celui où ils ne forcent pas un programme en cours de sortir;ils attendent que le programme en cours cède le contrôle( en principe, disons "j'ai terminé" en disant à l'OS d'exécuter le programme suivant qui attend).

  • Multi-tâches était coopératif, tout comme dans les anciennes versions de MacOS( bien que contrairement au DOS multi-tâches DOS 4.x, qui arborait le multitâche préemptif).Une tâche devait céder à l'OS pour programmer une tâche différente. Les rendements ont été intégrés dans certains appels API, notamment le traitement des messages. Tant qu'une tâche traite les messages en temps opportun, tout va bien. Si une tâche cessait de traiter les messages et était en train d'exécuter une boucle de traitement, le multitâche n'était plus.

Architecture de Windows 3.x

En ce qui concerne le début du contrôle des programmes Windows:

  • 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 si une file d'attente de messages est détectée.une autre application demande l'utilisation de la CPU et, si c'est le cas, donne le contrôle à cette application. Cependant, de nombreuses applications Windows 3.1 ne vérifient que rarement ou pas du tout la file d'attente des messages et monopolisent le contrôle du processeur pendant le temps nécessaire. Un système multitâche préemptif tel que Windows 95 supprimera le contrôle du processeur d'une application en cours et le distribuera à ceux qui ont une priorité plus élevée en fonction des besoins du système.

Source

Tout DOS verrait cette application unique( Windows ou autre) en cours d'exécution, qui passerait le contrôle sans quitter. En théorie, le multitâche préemptif peut éventuellement être implémenté sur DOS de toute façon avec l'utilisation d'une horloge en temps réel et des interruptions matérielles pour donner de force le contrôle au planificateur. Comme le remarque Tonny, cela a été fait par certains systèmes d'exploitation fonctionnant sous DOS.

386 Mode amélioré?

Note: il y a eu quelques commentaires sur le mode amélioré 386 de Windows 3.x étant 32 bits, et prenant en charge le multitâche préemptif.

C'est un cas intéressant. Pour résumer l'article de blog lié, 386 mode amélioré était essentiellement un hyperviseur 32 bits, qui exécutait des machines virtuelles.À l'intérieur d'une de ces machines virtuelles exécutait le mode standard de Windows 3.x, qui fait tout le matériel énuméré ci-dessus.

MS-DOS s'exécutait également à l'intérieur de ces machines virtuelles, et apparemment ils étaient multi-tâches préemptives - il semble donc que l'hyperviseur 386 en mode amélioré partagera des tranches de temps CPU entre les machines virtuelles( dont une normale 3.xet d'autres qui ont exécuté MS-DOS), et chaque VM fera sa propre chose - 3.x coopérerait multi-tâche, alors que MS-DOS serait unique-tâche.

MS-DOS

DOS lui-même était unique sur le papier, mais il avait un support pour les programmes TSR qui resterait en arrière-plan jusqu'à ce qu'il soit déclenché par une interruption matérielle. Loin du vrai multitâche, mais pas entièrement unique.

Tout cela parle de bit-ness? J'ai posé des questions sur le multitâche!

Eh bien, à proprement parler, le bit-ness et le multitâche ne dépendent pas l'un de l'autre. 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 rendre le multitâche préemptif plus facile à implémenter.

De plus, étant donné que les programmes 32 bits étaient nouveaux, il était plus facile de les faire fonctionner lorsqu'ils étaient désactivés de force, ce qui peut avoir brisé 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( mode amélioré 386), vous devrez demander à quelqu'un qui y a travaillé.

Aussi, je voulais corriger votre hypothèse que Windows 95 était juste un emballage pour DOS.

Suivi de la réponse de Pete:

Dans un système d'exploitation moderne, le système d'exploitation contrôle toutes les ressources matérielles et les applications en cours d'exécution sont conservées dans des sandbox. Une application n'est pas autorisée à accéder à la mémoire que le système d'exploitation n'a pas allouée à cette application et elle ne peut pas accéder directement aux périphériques matériels de l'ordinateur. Si un accès matériel est requis, l'application doit communiquer via les pilotes de périphérique.

Le système d'exploitation peut appliquer ce contrôle, car il force le processeur à entrer en mode protégé.

DOS, d'autre part, ne passe jamais en mode protégé, mais reste en mode réel( * voir ci-dessous).En mode réel, les applications en cours d'exécution peuvent effectuer tout ce qu'elles veulent, c'est-à-dire accéder directement au matériel. Mais une application fonctionnant en mode réel peut également demander au CPU d'entrer en mode protégé.

Et cette dernière partie permet à des applications comme Windows 95 de démarrer un environnement multithread même si elles ont été lancées à partir de DOS.

DOS( système d'exploitation de disque) était, autant que je sache, pas beaucoup plus qu'un système de gestion de fichiers. Il a fourni un système de fichiers, des mécanismes pour naviguer dans le système de fichiers, quelques outils et la possibilité de lancer des applications. Cela a également permis à certaines applications de rester résidentes, c'est-à-dire les pilotes de souris et les émulateurs EMM.Mais il n'a pas essayé de contrôler le matériel de l'ordinateur comme un système d'exploitation moderne.

* Lors de la création du DOS dans les années 1970, le mode protégé n'existait pas dans la CPU.Ce n'est que lorsque le processeur 80286 au milieu des années 1980 que le mode protégé est devenu une partie du processeur.

Assurez-vous de naviguer sur le fil d'origine et lisez la discussion animée sur ce sujet en utilisant le lien ci-dessous!

Avoir quelque chose à ajouter à l'explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d'autres utilisateurs de Stack Exchange? Découvrez le fil de discussion complet ici.