Ich finde es schwierig, klar zwischen Multiprogramming und Multitasking zu unterscheiden.
Meine Hauptquelle war Wikipedia , aber der WP-Artikel scheint ein wenig im Widerspruch zu einigen weniger seriösen Quellen zu stehen (wie meinem College-Professor).
Während ich WP lese, ist Multiprogramming eine rudimentäre Methode zur Erhöhung des CPU-Durchsatzes durch Kontextwechsel, wenn ein Prozess auf E / A wartet.
Multiprogramming gibt keine Garantie dafür, dass ein Programm rechtzeitig ausgeführt wird. In der Tat kann das allererste Programm sehr gut stundenlang laufen, ohne dass ein Zugriff auf ein Peripheriegerät erforderlich ist.
Cooperative Time-Sharing , synonym mit Cooperative Multitasking , ist eine Verbesserung des Multiprogramming (mit dem es nicht gleichbedeutend ist). Der CPU-Kontext wechselt regelmäßig, um den Eindruck einer gleichzeitigen Ausführung zu erwecken, aber es sind immer noch Prozesse erforderlich, um nachzugeben - und schlecht gestaltete Programme können den Rest des Systems aushungern lassen.
Preemptive Multitasking übernimmt eine aggressivere Kontrolle der Zeitplanung, wobei einigen Prozessen Vorrang vor anderen usw. eingeräumt wird.
- Ist diese Übersicht korrekt? Wenn nicht, liegt das daran, dass WP falsch ist oder weil ich WP falsch gelesen habe?
- Warum scheinen einige Quellen Multiprogramming und Multitasking miteinander zu verbinden?
Antworten:
Sie sind mehr oder weniger synonym. Multiprogramming wird häufiger verwendet, wenn eine CPU beteiligt ist, dh von einem Prozess auf den anderen umgeschaltet wird, Prozesse, die gleichzeitig im Speicher neu gespeichert werden. Es kamen Threads und es wurde nicht mehr zwischen Programmen gewechselt ...
Prozessoren, insbesondere die Intel-Leitung, verfügten seit mindestens dem 80286 über die Mechanismen für echtes Multitasking (Timer-Interrupt, privilegierte Anweisungen). Der im allerersten Mac verwendete M68000 war ein Prozessor mit vollwertigen Multitaking-Kapazitäten. Dies ist keine neuere Entwicklung in Architekturen. Beachten Sie, dass beim allerersten Mal gemeinsam genutzte Systeme die Programme des Benutzers ein- und auslagerten und daher nicht wirklich mehrprogrammiert wurden, da mehrere Programme gleichzeitig im Speicher waren.
Die Idee ist, mehrere Programme gleichzeitig im Speicher zu haben, so dass, wenn eines die CPU liefert (durch Beenden oder Warten), andere bereit sind, die CPU zu verwenden, wodurch die CPU-Auslastung erhöht wird (und wie Sie jeden CPU-Burst betrachten können) Vorbereitung auf die Verwendung von E / A, Erhöhung der Gesamtnutzung). Dies ergibt einen besseren Durchsatz (wichtig in Batch-Systemen).
Mit der Zeitteilung kamen mehrere interaktive Benutzer, die mit dem Computer verbunden waren. Dieselbe Idee: Behalten Sie ihre Programme bei, wechseln Sie jedoch schnell genug zwischen ihnen, damit sie die Illusion haben, "einen Computer für sich zu haben". Benötigt einen Timer, der die CPU unterbricht, um eine Monopolisierung zu vermeiden.
Auf Personalcomputern gab es zumindest anfangs keinen großen Anreiz, mehrere Programme gleichzeitig auszuführen (ein Benutzer vor einem stark eingeschränkten Gerät erwartete nicht viel). Als die Maschinen wuchsen, konnte man dies umgehen und mehrere Programme gleichzeitig zulassen, ohne das Betriebssystem wesentlich zu verändernwar "kooperatives Multitasking", da jedes Programm dem Betriebssystem regelmäßig nachgeben soll, um ein anderes auszuführen. Da das Programm, das dies tut, die volle Kontrolle hat, kann es dies auswählen, wenn nichts von anderen durcheinander gebracht werden kann. Unnötig zu erwähnen, dass ein Programm, das "vergisst", seine Ertragspflicht zu erfüllen, eine interessante Leistungssteigerung erzielt ... frühe Mac-Systeme funktionierten auf diese Weise, und aus den oben genannten Gründen hielt dies nicht allzu lange an. Auf eingebetteten Systemen ohne oder nur mit einem rudimentären Betriebssystem und einer streng kontrollierten Reihe von Programmen ist dies sicherlich eine attraktive Option.
quelle
Unterschied zwischen Multitasking und Multiprogramming? Multitasking ist eine logische Erweiterung der Multiprogrammierung. Klassischerweise teilen in einer Umgebung mit mehreren Programmierungen mehr als ein Benutzer die CPU, und die CPU wechselt schnell von einem Benutzer zum anderen, wodurch eine vollständige Transparenz voneinander gewährleistet wird. Beim Multitasking wird der Benutzer durch Programme ersetzt, dh mehr als ein Programm teilt sich die CPU und die CPU wechselt schnell von einem Programm zu einem anderen. Tatsächlich ist eine Software auf der Festplatte ein Programm. Wenn es zur Ausführung in den RAM gebracht wird, wird es als Prozess oder Task bezeichnet, und wenn es sich in der CPU befindet und ausgeführt wird, wird es als Thread bezeichnet. Multiprograaming ist also im Grunde genommen für Mehrbenutzer gedacht, und Multitasking ist für Einzelbenutzer mit mehreren Programmen. Da die meisten modernen Betriebssysteme beide unterstützen, sind sie häufig austauschbar.
quelle
Es gibt viele Unterschiede zwischen Multitasking und Multiprogramming.
Multitasking führt mehr als eine Aufgabe gleichzeitig aus. Sie hören beispielsweise ein Lied, drucken ein Papier und tippen gleichzeitig auf MS-Word.
Während der Multiprogrammierung verbessern wir bei dieser Art von Betriebssystem die CPU-Auslastung durch Puffern und Spoolen. Bei der sequentiellen Ausführung befindet sich die CPU nach dem Ausführen eines Programms im Leerlauf und lädt das nächste Programm aus dem Hauptspeicher. Während der E / A-Operationen befindet sich die CPU ebenfalls im Leerlauf, die CPU befindet sich ebenfalls im Leerlauf. In einer Multiprogrammierumgebung wechselt die CPU jedoch zum nächsten Programm und verarbeitet es. Dies ist eine Technik, die mit Hilfe des Pufferns und Spoolens verwendet wird.
quelle