Wenn DOS Single-Tasking ist, wie war Multitasking in der alten Windows-Version möglich?

113

Ich habe gelesen, dass DOS ein Single-Tasking-Betriebssystem ist.

Aber wenn alte Windows-Versionen (auch Windows 95?) Nur DOS-Wrapper wären, wie könnte Windows dann als Multitasking-Betriebssystem ausgeführt werden?

Arkonix
quelle
8
Es heißt preemptive Multitasking - support.microsoft.com/kb/117567
Joeqwerty
20
Du wirst "alt" viel besser definieren müssen. DOS + Windows 9x und DOS + Windows 3.x im "386 Enhanced Mode" unterschieden sich in dieser Hinsicht erheblich von DOS + Windows 3.x / 2.x im "Standard Mode" und "Real Mode". Und wie Joeqwerty andeutet, gab es sowohl kooperatives Multitasking als auch präventives. Es wurden ganze Bücher darüber geschrieben, daher ist eine bestimmte Frage besser.
JdeBP
5
@joeqwerty Die großartigste IMO ist, dass Microsoft die Dokumentation über so antike Software online hält. Es gibt sogar Artikel über fortgeschrittene Themen zu älteren Versionen von MS-DOS ... Wirklich nett von ihnen, um das am Leben zu erhalten.
NothingsImpossible
6
DOS gibt Ihnen kein Multitasking. Sie können weiterhin vollständig Multitasking-Programme darüber schreiben, ohne die Hilfe von DOS zu benötigen, wie es Windows in früheren Versionen tut. Windows 95 ist sicherlich nicht nur ein "Wrapper" für DOS.
Boann
3
@NigelNquande Ich habe festgestellt, dass MS ziemlich gut darin ist, alte Dokumentationen zu pflegen. Die meisten der im Ruhestand befindlichen KB-Artikel sind online (z. B. zufällige Windows 3.1-KB oder Dokumente zum printDienstprogramm für Windows 2.1-3.0 oder ansi.sys unter MS-DOS 5.0), auch nach Ablauf der angegebenen 12 Monate -Lebensfrist. Es ist einfach nicht so einfach zu durchsuchen wie die aktive Produktdokumentation. Sie müssen bei Ihren Suchanfragen genau sein.
Jason C

Antworten:

160

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;)

Bob
quelle
4
Sehr schöne Zusammenfassung. Wenn ich mich richtig erinnere (die OS-Designklasse war vor vielen Jahren für mich), hat Windows 9x die Timer-Interrupts angehakt, um seinen eigenen Scheduler zu erzwingen, so wie Sie es in Ihrem 2. bis letzten Absatz vorgeschlagen haben. Neben DOS gab es noch andere Betriebssysteme, die dasselbe taten. Ich erinnere mich noch genau an AMX (Echtzeitbetriebssystem für industrielle Anwendungen) und XINU (kleines Unix / Posix-ähnliches Betriebssystem für Bildungszwecke), die beide auf DOS liefen. (AMX konnte auch Bare-Metal direkt vom EPROM ausführen. Unter DOS war das Testen / Debuggen viel einfacher. Sie konnten nicht für jeden Test die EPROMs erneut brennen.)
Tonny
@Tonny Danke für die Bestätigung, dass dieses Schema möglich ist (und in der Praxis verwendet wird). Vermutlich war der Grund, warum Windows 1-3 kein präventives Multitasking verwendete, nicht so groß, dass dies nicht möglich war (MS-DOS 4 hatte es, obwohl es nicht freigegeben war), sondern es hätte die Abwärtskompatibilität mit DOS beeinträchtigt Programme.
Bob
3
Mmmmhhh Betrachtet man Windows 1-3: Die Tatsache, dass es sich um eine gängige Codebasis für 8086-CPUs und höher handelt, hat möglicherweise mehr damit zu tun. Eine ordnungsgemäße Handhabung von ring0-3 war nur mit 80286 und höher möglich, und mit Win9x wurde Multitasking implementiert. 4DOS und andere haben bereits ein begrenztes Multitasking unter DOS bereitgestellt (80286 wurde benötigt, wenn ich mich richtig erinnere). Sie könnten sogar Win3 selbst als separaten Prozess in 4DOS ausführen.
Tonny
1
Xinu lief wirklich nicht auf DOS. Es begann immerhin als LSI-11-Betriebssystem. Die Aussage, dass es unter DOS + Windows 3.x kein präventives Multitasking gab, ist falsch. Im 386 Enhanced Mode gab es mit freundlicher Genehmigung des VMM. Und der Quatsch über 4DOS gibt Ihnen eine häufig gestellte Antwort: 4DOS ist kein Betriebssystem . Aussagen, die Multitasking lieferten, sind völlig falsch.
JdeBP
2
Der PDP-8 unterstützte vorbeugendes Multitasking, und das war nur ein 12-Bit-Computer.
David25272
26

Es lief ununterbrochen ein einzelnes Programm, das als Windows bezeichnet wurde. Dieser verteilt die CPU-Zeit (und andere Ressourcen) auf verschiedene Programme.

Betrachten Sie diese Analogie:

Sie haben ein Büro, in dem jeweils nur eine Person arbeiten kann (diese Person heißt Mister oder Missus DOS). Diese Person arbeitet zu der Zeit an einer Sache. ZB ruft es eine einzelne Person an und fängt an, 24/7 mit ihr zu plaudern.

Jetzt ersetzen Sie diese Person durch Herrn Sekretär. (Fenster). Es wird jemanden anrufen und die ganze Zeit damit sprechen (immer noch eine einzige Aufgabe). Dann sagt die andere Person nach einiger Zeit: "Ich habe jetzt genug geredet. Sprich mit jemand anderem und ruf mich gleich zurück."

Herr Sekretär wird die andere Person anrufen. Chatte mit dieser Person, bis sie dasselbe sagt. Dann ruft es die nächste Person an, bis es am Ende der Liste der Personen steht, mit denen gesprochen werden soll. Zu diesem Zeitpunkt wird es wieder an der Spitze beginnen.

  • In technischer Hinsicht spricht man von kooperativem Multitasking. Es erfordert die andere Person zu sagen, dass er / sie genug CPU-Zeit hatte. Wenn man das nicht tut, fällt alles auseinander.
  • Moderne Systeme sind viel schlauer. Inklusive vorbeugendem Multitasking. Denken Sie an die Sekretärin, die einen Wecker stellt und die andere Person nach 5 Minuten abschaltet. "Das ist nett, Jane. Aber ich muss jetzt mit Joe sprechen. Ich rufe dich gleich zurück. - Klick."

Wenn Sie mehrere Prozessoren hinzufügen, wird dies noch komplizierter. :)

Hennes
quelle
1
Meinen Sie nicht in Ihrem ersten Punkt kooperatives / nicht präventives Multitasking? Interessanterweise führte Windows 95 auch präemptives Multitasking für 32-Bit-Programme ein. Es war nicht so sehr ein Wrapper für DOS, sondern ein Betriebssystem, das DOS als Bootloader verwendete, aber wesentliche Teile davon ersetzte (genug für die Unterstützung von 16-Bit / DOS-Programmen).
Bob
Herr oder Fräulein, warum nicht "Dr." DOS?
Gtrak
1
"Es wurde ununterbrochen ein einziges Programm ausgeführt ... Dieses Programm hat die CPU-Zeit (und andere Ressourcen) auf verschiedene Programme verteilt." Kann man das nicht über ein Betriebssystem sagen? Obwohl die Frage impliziert, dass MS-DOS nicht konnte. Ich bin stark gegen Analogien / Metaphern, wenn ich technische Details der Technologie nicht benutze. Ok, jetzt wissen wir also, wie ein hypothetisches Büro funktioniert? Das erklärt die Antwort auf die Frage nicht wirklich.
Celeritas
13

In einem modernen Betriebssystem steuert das Betriebssystem alle Hardwareressourcen und laufende Anwendungen werden in Sandkästen gespeichert. Eine Anwendung darf nicht auf Speicher zugreifen, den das Betriebssystem dieser Anwendung nicht zugewiesen hat, und sie kann nicht direkt auf Hardwaregeräte im Computer zugreifen. Wenn Hardwarezugriff erforderlich ist, muss die Anwendung über Gerätetreiber kommunizieren.

Das Betriebssystem kann diese Steuerung erzwingen, da die CPU gezwungen wird, in den geschützten Modus zu wechseln .

DOS hingegen wechselt nie in den geschützten Modus, sondern bleibt im realen Modus *. Im Real-Modus können die laufenden Anwendungen alles ausführen, was sie möchten, z. B. direkt auf die Hardware zugreifen. Eine im Real-Modus ausgeführte Anwendung kann die CPU jedoch auch anweisen, in den geschützten Modus zu wechseln.

Und dieser letzte Teil ermöglicht es Anwendungen wie Windows 95, eine Umgebung mit mehreren Threads zu starten, obwohl sie im Grunde genommen unter DOS gestartet wurden.

DOS (Disk Operating System) war nicht viel mehr als ein Dateiverwaltungssystem. Es bot ein Dateisystem, Mechanismen zum Navigieren im Dateisystem, einige Tools und die Möglichkeit, Anwendungen zu starten. Einige Anwendungen, z. B. Maustreiber und EMM-Emulatoren, konnten ebenfalls resident bleiben. Es wurde jedoch nicht versucht, die Hardware im Computer so zu steuern, wie es ein modernes Betriebssystem tut.

* Als DOS in den 70er Jahren zum ersten Mal erstellt wurde, gab es in der CPU keinen geschützten Modus. Erst mit dem 80286-Prozessor Mitte der 80er Jahre wurde der geschützte Modus Teil der CPU.

Pete
quelle
2
Beachten Sie, dass CPUs zu dieser Zeit keinen geschützten Modus hatten.
jwenting
1
@jwenting - guter Punkt, ich habe einen Hinweis dazu hinzugefügt
Pete
6

Vor Windows 3.x, der ersten Version für Multitask-DOS-Anwendungen, gab es Programme wie DesqView, die dies ebenfalls konnten. Wenn beispielsweise drei DOS-Sitzungen gleichzeitig ausgeführt werden, erstellt DesqView vier virtuelle Maschinen. Bei den drei DOS-Sitzungen wurde jeweils angenommen, dass sie den gesamten Computer "besaßen", mit der Ausnahme, dass keiner von ihnen tatsächlich Datei-E / A-Vorgänge ausführte. Stattdessen wird die in jeder Sitzung ausgeführte DOS-Version gepatcht, sodass alle Anforderungen für Datei-E / A an eine spezielle Sitzung weitergeleitet werden, die diesem Zweck gewidmet ist. Da die Textmodushardware des PCs den Inhalt eines Speicherbereichs kontinuierlich als Zeichen anzeigt; DesqView kann jeder Sitzung einen eigenen virtuellen Bildschirm zuweisen, indem der 0xB8000-0xB9FFF-Bereich jeder Sitzung ihrem eigenen RAM-Bereich zugeordnet wird. und periodisches Kopieren des Bereichs der aktuellen Anwendung in den physischen Bildschirmpuffer. Die grafische Unterstützung war viel schwieriger, da 256 KB RAM auf der Anzeigetafel mit 64 KB Adressraum, einigen E / A-Registern und "interessanter" Hardware gesteuert wurden, bei der bestimmte Sequenzen gelesen und geschrieben werden mussten. Im Textmodus konnte DesqView, wenn eine Anwendung etwas in den Textpuffer schrieb, ein Flag setzen, das angibt, dass es beim nächsten Timer-Tick auf die Anzeige kopiert werden soll. Nur das erste Schreiben in den Textpuffer in einem bestimmten Zeitintervall würde das Eingreifen von DesqView erfordern. Alle anderen werden auf den nächsten Timer-Tick konsolidiert. Da 256 KB RAM auf der Anzeigetafel mit 64 KB Adressraum, einigen E / A-Registern und "interessanter" Hardware gesteuert wurden, mussten die Daten in bestimmten Sequenzen gelesen und geschrieben werden. Im Textmodus konnte DesqView, wenn eine Anwendung etwas in den Textpuffer schrieb, ein Flag setzen, das angibt, dass es beim nächsten Timer-Tick auf die Anzeige kopiert werden soll. Nur das erste Schreiben in den Textpuffer in einem bestimmten Zeitintervall würde das Eingreifen von DesqView erfordern. Alle anderen werden auf den nächsten Timer-Tick konsolidiert. Da 256 KB RAM auf der Anzeigetafel mit 64 KB Adressraum, einigen E / A-Registern und "interessanter" Hardware gesteuert wurden, mussten die Daten in bestimmten Sequenzen gelesen und geschrieben werden. Im Textmodus konnte DesqView, wenn eine Anwendung etwas in den Textpuffer schrieb, ein Flag setzen, das angibt, dass es beim nächsten Timer-Tick auf die Anzeige kopiert werden soll. Nur das erste Schreiben in den Textpuffer in einem bestimmten Zeitintervall würde das Eingreifen von DesqView erfordern. Alle anderen werden auf den nächsten Timer-Tick konsolidiert. DesqView könnte ein Flag setzen, das angibt, dass es beim nächsten Timer-Tick auf die Anzeige kopiert werden soll. Nur das erste Schreiben in den Textpuffer in einem bestimmten Zeitintervall würde das Eingreifen von DesqView erfordern. Alle anderen werden auf den nächsten Timer-Tick konsolidiert. DesqView könnte ein Flag setzen, das angibt, dass es beim nächsten Timer-Tick auf die Anzeige kopiert werden soll. Nur das erste Schreiben in den Textpuffer in einem bestimmten Zeitintervall würde das Eingreifen von DesqView erfordern. Alle anderen werden auf den nächsten Timer-Tick konsolidiert.

Im Gegensatz dazu müsste DeskView für die Virtualisierung des Grafikmodus jeden einzelnen Schreibvorgang abfangen, um den Speicher oder die E / A-Register anzuzeigen. Da dies das Schreiben des Speichers um den Faktor 100 verlangsamen würde und Grafikprogramme viel mehr Daten schreiben mussten als Textprogramme, war die Echtzeitvirtualisierung der meisten Grafiksoftware nicht praktikabel. Stattdessen wurde für Grafiken eine Nicht-Vordergrundanwendung verwendet, bei der versucht wurde, die Grafik anzuhalten, bis sie zur Vordergrundanwendung wurde, und die dann die vollständige Kontrolle über den Bildschirm ausübte. Wenn die Steuerung zu einer anderen Anwendung wechselt, versucht DesqView, den Status aller Grafikregister zu kopieren und dann zu wechseln. Beim Zurückschalten zur grafischen Anwendung stellte DesqView den gespeicherten Zustand wieder her.

In gewisser Weise war das Multitasking nicht grafischer DOS-Anwendungen einfacher als das Multitasking von Windows-Anwendungen, da nur sehr wenige Ressourcen gemeinsam genutzt wurden und die Anwendungen nicht miteinander interagieren mussten. Im Gegensatz dazu ist es in Windows erforderlich, sich mit Dingen wie der Zwischenablage oder der Möglichkeit zu befassen, dass sich die Fenster eines Programms so bewegen, dass die Fenster eines anderen Programms verdeckt werden. Windows 95 war die erste Version von Windows, die solche Einschränkungen überwinden konnte, indem sie Dinge wie ein Fenstersystem einbezog, bei dem ein Bereich des Bildschirms nicht mehr verfügbar war, während der Code versuchte, darauf zu zeichnen (mit dem Effekt, dass die Zeichnung ausgeblendet wurde) ).

Superkatze
quelle
Vielen Dank, dass Sie mich an DesqView erinnert haben. Ich habe es die ganze Zeit benutzt, hatte es aber völlig vergessen.
Emmet
3

Multitasking ist nichts anderes als die Illusion, Anwendungen gleichzeitig auszuführen. Es wird als gleichzeitige Ausführung auf Ihrer Seite angesehen, aber tatsächlich teilen sich die Prozesse A, B und C die CPU-Zeit in dieser Reihenfolge: A, B, C, A, B, C, A, B ... sie schalten sich einfach ein und sehr schnell ab. Es werden tatsächlich keine zwei Prozesse gleichzeitig ausgeführt.

Es ist also durchaus möglich, MS-DOS-Multitasking auszuführen, indem Sie einen Prozess anhalten, den nächsten für einen kurzen Zeitraum ausführen, diesen anhalten, zum ersten zurückspringen und so weiter.

Multitasking ist nur eine clevere Funktion, die entwickelt wurde, als die CPUs schnell genug waren, um diese Prozesse fortlaufend zu durchlaufen und sie für den Endbenutzer simultan erscheinen zu lassen.

Für diejenigen, die sich erinnern, wurden Spiele immer noch unter DOS4GW ausgeführt, weil Windows einfach zu langsam war.

Dan Horvat
quelle
1
und zum größten teil funktioniert das noch heute in betriebssystemen. Aus diesem Grund können Sie beispielsweise 10 Dinge gleichzeitig auf einer 4-Kern-CPU ausführen.
jwenting
2
Es ist nicht wirklich so, dass „CPUs schnell genug geworden sind“. Es war möglich, Multi-User-Multi-Tasking-Betriebssysteme auf einem 286er- Computer auszuführen (z. B. Coherent von The Mark Williams Company , ein Betriebssystem, das 1983 in den PC eingeführt wurde). MS-DOS und Windows (nicht NT) -Versionen bis (und einschließlich) „Millenium“ waren wirklich fürchterlich, selbst nach den technischen Standards der damaligen Zeit, aber als MS-DOS von IBM als Standard für PCs eingeführt wurde, Microsoft Marketing und Momentum (ganz zu schweigen vom kriminellen Missbrauch ihrer Monopolmacht) haben den besseren Wettbewerb für eine sehr lange Zeit effektiv ausgeschlossen.
Emmet
2
"Multitasking ist nur eine clevere Funktion, die entwickelt wurde, als die CPUs schnell genug wurden ..." Sie meinen, wie der Apollo Guidance Computer ein Multitasking-Design war ?
ein Lebenslauf vom
1
Als ich "CPUs" sagte, meinte ich die Massenproduktion, und als ich "Multitasking" sagte, meinte ich das Multitasking von PC-Anwendungen. Und schließlich meinte ich mit dem "Endbenutzer" das Kind hinter dem PC, nicht den Astronauten. Trotzdem ein großes Lob für den interessanten Kommentar.
Dan Horvat
0

Auch wenn es sich nur auf eine Aufgabe konzentrieren kann, ist dies ein einfacher Schritt, um schnell von einer zur anderen zu gelangen. Auf diese Weise schien es, dass es Multitasking war, aber in Wahrheit konzentriert es sich nur auf 1, dann auf einen anderen, dann auf einen anderen usw.

Thoth
quelle
Sie verschmelzen dort Multitasking mit Multiprozessor-Computing . Das schnelle Wechseln zwischen mehreren Aufgaben ist in der Computerwelt ein Multitasking. Die übliche Definition nicht verlangt parallele Ausführung. Verschiedene "alte Windows-Versionen" haben Multitasking auf unterschiedliche Weise ausgeführt, je nachdem, in welcher Windows-Version, in welchem ​​Modus sie ausgeführt wurden und ob sie überhaupt DOS-basiert waren. (Windows NT 3.1 ist älter als DOS + Windows 95 und kann SMP ausführen.) Wie ich in einem anderen Kommentar ausgeführt habe, wurden ganze Bücher darüber geschrieben. Das ist wirklich nicht die beste 2-Satz-Zusammenfassung.
JdeBP
@JdeBP ... Ich kenne den Unterschied zwischen Multitasking und Multiprozessor, da ich hauptsächlich noch Single-Core-Prozessoren verwende! Computer arbeiten seriell. Wahre Parallelen gibt es nur im Quantencomputing.
Thoth
0

Eine Sache, die ich hier nicht erwähnt habe, ist irgendwie interessant:

Windows 3.0 war kein vorbeugendes Multitasking-System, sondern wie alle MacOS-Versionen kooperativ, bis OS X - Eine App von einem Anruf zurückkehren musste, bevor eine andere App Maßnahmen ergreifen konnte.

Ein Kommentator erinnerte mich jedoch daran, dass DOS-Apps mehrere Aufgaben haben. Dies liegt daran, dass sie nicht für "Kooperativ" -Multitask geschrieben wurden (Dies muss immer in Systeme eingebaut werden, die es verwenden).

Zu dieser Zeit gab es Programme namens TSRs (Terminate-Stay Resident), die die heutigen Gerätetreiber ersetzten. Diese Treiber würden unabhängig voneinander ausgeführt - im Allgemeinen auf ihrem eigenen Thread, indem sie sich in einen der Event-Handler des Betriebssystems einfügen. Windows wusste im Allgemeinen nichts über sie, sie liefen auf einer niedrigeren Ebene.

Hierbei handelte es sich nicht wirklich um Windows-Apps, sondern darum, wie alle Threading-Aktivitäten vor Windows 3.1 stattfanden, z. B. Druckertreiber, Com-Treiber usw.

Windows 3.1 war zwar multitaskingfähig, DOS jedoch nicht. Windows 3.1 schob DOS jedoch einfach aus dem Weg und übernahm beim Start das Kommando (Damals wurde Windows häufig über eine DOS-Eingabeaufforderung gestartet).

Bill K
quelle
Windows 3.0 unterstützte das preemptive Multitasking von DOS-Anwendungen, wenn es auf einem 386-Prozessor oder höher ausgeführt wurde. Nur Windows-Anwendungen wurden kooperativ mit mehreren Aufgaben ausgeführt.
Jules
Oh, das stimmt - ich habe zu der Zeit Windows-Apps programmiert und nicht wirklich über DOS nachgedacht. DOS-Apps wurden anders behandelt - danke, dass Sie darauf hingewiesen haben.
Bill K
-8

Gute Frage. In MS-DOS war der Kernel monolithisch, was bedeutet, dass er nur eine Aufgabe gleichzeitig erledigte, im Vergleich zu dem neuen, modernen Kernel, der in Windows 9x und der aktuellen Version implementiert war. Sie können mehr Besuche hier .

javathunderman
quelle
11
-1 Sie schlagen vor, dass ein monothithisches Betriebssystem keine Multitasking-Funktionen ausführen kann - das ist absolut falsch. linux ist BEKANNT monothithischer kernel (es gab eine berühmte debatte zwischen linus torvalds und andrew tanenbaum) aber linux kann offensichtlich mehrere aufgaben ausführen. Hier ist ein Link, der zeigt, dass Linux monolithisch ist stackoverflow.com/questions/1806585/…
Barlop
4
Monolithisch bedeutet nicht, was Sie denken, dass es tut.
Thorbjørn Ravn Andersen