Windows 95
Windows 95 war weit mehr als "nur ein Wrapper" für MS-DOS . Zitat Raymond Chen:
MS-DOS diente in Windows 95 zwei Zwecken.
- Es diente als Bootloader.
- Es fungierte als 16-Bit-Legacy-Gerätetreiberschicht.
Windows 95 hat praktisch alle MS-DOS-Betriebssysteme angehängt / überschrieben, wobei es als Kompatibilitätsebene beibehalten wurde, während das ganze Heben selbst ausgeführt wurde. Außerdem wurde präemptives Multitasking für 32-Bit-Programme implementiert.
Pre-Windows 95
Windows 3.x und älter waren größtenteils 16-Bit (mit Ausnahme von Win32s, einer Art Kompatibilitätsebene, die 16 und 32 verbindet, aber wir werden das hier ignorieren), waren stärker von DOS abhängig und verwendeten nur kooperatives Multitasking - das ist die, bei der sie kein laufendes Programm zum Ausschalten zwingen; Sie warten darauf, dass das ausgeführte Programm die Steuerung übernimmt (sagen Sie "Ich bin fertig", indem Sie das Betriebssystem anweisen, das nächste Programm auszuführen, das wartet).
Multitasking war kooperativ, genau wie in alten MacOS-Versionen (im Gegensatz zu Multitasking DOS 4.x, das präventives Multitasking enthielt). Eine Aufgabe musste dem Betriebssystem nachgeben, um eine andere Aufgabe zu planen. Die Erträge flossen in bestimmte API-Aufrufe ein, insbesondere in die Nachrichtenverarbeitung. Solange eine Aufgabe Nachrichten rechtzeitig verarbeitete, war alles großartig. Wenn eine Task die Verarbeitung von Nachrichten gestoppt hat und gerade eine Verarbeitungsschleife ausführt, wurde kein Multitasking mehr ausgeführt.
Windows 3.x Architektur
Wie früh würden Windows-Programme die Kontrolle übernehmen?
Windows 3.1 verwendet kooperatives Multitasking. Dies bedeutet, dass jede Anwendung, die gerade ausgeführt wird, angewiesen wird, in regelmäßigen Abständen eine Nachrichtenwarteschlange zu überprüfen, um festzustellen, ob eine andere Anwendung die Verwendung der CPU anfordert, und in diesem Fall die Steuerung für diese Anwendung zu übernehmen . Viele Windows 3.1-Anwendungen überprüften die Nachrichtenwarteschlange jedoch nur selten oder gar nicht und monopolisierten die Kontrolle über die CPU so lange wie erforderlich. Ein präventives Multitasking-System wie Windows 95 entzieht einer laufenden Anwendung die CPU-Kontrolle und verteilt diese an diejenigen, die eine höhere Priorität haben, je nach den Anforderungen des Systems.
Quelle
Alles, was DOS sehen würde, ist, dass diese einzelne Anwendung (Windows oder eine andere) ausgeführt wird, die die Steuerung weitergibt, ohne dass sie beendet wird. Theoretisch kann preemptives Multitasking möglicherweise ohnehin über DOS implementiert werden, indem eine Echtzeituhr und Hardware-Interrupts verwendet werden, um die Steuerung des Schedulers zu erzwingen. Wie Tonny bemerkt , wurde dies tatsächlich von einigen Betriebssystemen durchgeführt, die auf DOS liefen.
386 erweiterter Modus?
Hinweis: Es wurden einige Kommentare zum erweiterten 386-Modus von Windows 3.x (32-Bit) und zur Unterstützung von präemptivem Multitasking abgegeben.
Dies ist ein interessanter Fall. Um den verknüpften Blog-Beitrag zusammenzufassen , war der erweiterte 386-Modus im Grunde ein 32-Bit-Hypervisor, auf dem virtuelle Maschinen ausgeführt wurden. Auf einer dieser virtuellen Maschinen wurde der Windows 3.x-Standardmodus ausgeführt, der alle oben aufgeführten Aufgaben ausführt.
MS-DOS würde auch in diesen virtuellen Maschinen ausgeführt, und anscheinend waren sie präventiv Multitasking - so scheint es, dass der 386-Hypervisor im erweiterten Modus CPU-Zeitscheiben zwischen den virtuellen Maschinen (von denen eine normales 3.x und andere, auf denen MS ausgeführt wurde, gemeinsam nutzen wird) -DOS), und jede VM macht ihr eigenes Ding - 3.x würde kooperativ Multitasking ausführen, während MS-DOS Single-Tasking ausführen würde.
MS-DOS
DOS selbst war eine Einzelaufgabe auf Papier, unterstützte jedoch TSR- Programme, die so lange im Hintergrund blieben, bis sie von einem Hardware-Interrupt ausgelöst wurden. Weit entfernt von echtem Multitasking, aber auch nicht vollständig auf einmal.
All das Gerede von Bissigkeit? Ich habe nach Multitasking gefragt!
Genau genommen sind Bit-Ness und Multitasking nicht voneinander abhängig. Es sollte möglich sein, irgendeinen Multitasking-Modus in irgendeiner Bit-Ness zu implementieren. Die Umstellung von 16-Bit-Prozessoren auf 32-Bit-Prozessoren führte jedoch auch andere Hardwarefunktionen ein, die die Implementierung von präventivem Multitasking erleichtern könnten.
Da 32-Bit-Programme neu waren, war es auch einfacher, sie zum Laufen zu bringen, wenn sie gewaltsam ausgeschaltet wurden - was möglicherweise einige ältere 16-Bit-Programme beschädigt hat.
Das ist natürlich alles Spekulation. Wenn Sie wirklich wissen möchten, warum MS in Windows 3.x kein präventives Multitasking implementiert hat (ungeachtet des erweiterten 386-Modus), müssen Sie jemanden fragen, der dort gearbeitet hat.
Außerdem wollte ich Ihre Annahme korrigieren, dass Windows 95 nur ein Wrapper für DOS ist;)