Comment le multi-tâches était-il possible dans les anciennes versions de Windows?
Étant donné que DOS était un système d’exploitation mono-tâche et les liens qu’il entretenait avec les premières versions de Windows, comment les versions précédentes de Windows ont-elles réussi à accomplir le multitâche? Le post de SuperUser du jour porte sur les réponses à cette question.
La séance de questions et réponses d'aujourd'hui nous est offerte par SuperUser, une sous-division de Stack Exchange, un groupe de sites Web de questions-réponses dirigé par la communauté..
Capture d'écran de Windows 95 avec la permission de Wikipedia.
La question
Lecteur superutilisateur 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 mono-tâche. Mais si les anciennes versions de Windows (y compris Windows 95?) N'étaient que des wrappers pour DOS, comment pourraient-elles fonctionner en tant que système d'exploitation multitâche?
Bonne question! Comment les anciennes versions de Windows ont-elles réussi à fonctionner en tant que systèmes multitâches??
La réponse
Les contributeurs du super-utilisateur, Bob et Pete, ont la solution pour nous. Tout d'abord, Bob:
Windows 95 était bien plus qu'un simple «wrapper» pour MS-DOS. Citant Raymond Chen:
- MS-DOS servait à deux fins dans Windows 95: 1.) Il servait de chargeur de démarrage. & 2.) Il s’agit de la couche de pilote de périphérique hérité 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 sorte de couche de compatibilité reliant 16 et 32, mais nous l'ignorerons ici), dépendaient davantage de DOS et utilisaient uniquement le multi-tâches coopératif. - c'est 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 au multitâche 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'était plus.
Architecture Windows 3.x
En ce qui concerne la manière dont les premiers programmes Windows permettraient de contrôler:
- Windows 3.1 utilise le mode 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, céder le contrôle à une autre application. cette application. 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 à ceux qui ont une priorité plus élevée 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 permet de passer 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, cela a été fait par certains systèmes d’exploitation fonctionnant sous DOS.
386 Mode amélioré?
Remarque: des commentaires ont été formulés sur le mode amélioré 386 de Windows 3.x, 32 bits, prenant en charge le mode multitâche préventif..
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 multi-tâ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’entre elles fonctionnant en mode normal 3.x et d’exécution de MS-DOS) et chaque machine virtuelle fera sa propre chose - 3.x serait multitâche en coopération, tandis 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 multitâche, mais pas totalement à la tâche non plus.
Toutes ces discussions sur le bit-ness? 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. 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, étant donné que les programmes 32 bits étaient nouveaux, il était plus facile de les faire fonctionner lorsqu'ils étaient basculés de force - ce qui aurait pu casser certains programmes 16 bits hérités.
Bien sûr, ce ne sont que des spéculations. 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 y a travaillé..
En outre, je voulais corriger votre hypothèse selon laquelle Windows 95 n’était qu’un wrapper pour DOS..
Suivie 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 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 des pilotes de périphérique..
Le système d'exploitation peut appliquer ce contrôle car il oblige la CPU à entrer en mode protégé..
Par contre, DOS n’entre 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 exécuter tout ce qu'elles souhaitent, à savoir accéder directement au matériel. Mais une application fonctionnant en mode réel peut également indiquer au processeur de passer en mode protégé..
Et cette dernière partie permet aux applications telles que Windows 95 de démarrer un environnement multithread même si elles ont été lancées à partir de DOS..
Le DOS (système d'exploitation à disque) n'était, à ma connaissance, guère plus qu'un système de gestion de fichiers. Il fournissait un système de fichiers, des mécanismes de navigation dans le système de fichiers, quelques outils et la possibilité de lancer des applications. Cela permettait également à certaines applications de rester résidentes, à savoir les pilotes de souris et les émulateurs EMM. Mais il n’a pas tenté de contrôler le matériel de l’ordinateur comme le fait un système d’exploitation moderne..
*Lorsque DOS a été créé dans les années 1970, le mode protégé n'existait pas dans la CPU. Ce n’est que jusqu’au milieu des années 1980, le processeur 80286 a été intégré au mode protégé..
Assurez-vous de parcourir le fil d'origine et de lire la discussion animée sur ce sujet en utilisant le lien ci-dessous.!
Avez-vous quelque chose à ajouter à l'explication? Sound off dans les commentaires. Voulez-vous lire plus de réponses d'autres utilisateurs de Stack Exchange doués en technologie? Découvrez le fil de discussion complet ici.