
Es scheint, als ob in beiden Fällen ein Ein- und Auslagern von Prozessen erforderlich ist.
Beim Paging lagern Sie eine Seite eines bestehenden Prozesses aus und ersetzen sie durch eine andere Seite von der Festplatte (ich glaube, aus dem virtuellen Speicher). Beim Kontextwechsel lagern Sie jedoch auch einen Prozess aus, indem Sie ihn zuerst in einem PCB speichern und dann ein anderes PCB im Speicher wiederherstellen.
Was sind die Unterschiede zwischen den beiden? Hier ist meine aktuelle Vermutung/mein Verständnis:
Der Kontextwechsel bezieht sich auf den gesamten Vorgang, es können also alle Seiten auf einmal ausgetauscht werden.
Der Prozesssteuerungsblock oder die Leiterplatte enthält daher die Seiten (wenn nicht, wie hängen die beiden zusammen?).
Antwort1
Ich denke, es gibt mehr Unterschiede als Gemeinsamkeiten.
Kontextwechsel beziehen sich grundsätzlich auf den CPU-Kontext, den der Programmcode zum Ausführen benötigt. Dazu gehören Dinge wie Werte der CPU-Register, Flags, Befehlszeiger und Stapelzeiger, Prioritätsstufe, virtueller Speicheraufbau (Seitentabellen) usw.
Es muss nicht die tatsächlicheErinnerungdes Prozesses und tut dies normalerweise nicht, da das vollständige Auslagern des Speichers eines Prozesses langsam wäre. Vorausgesetzt, das System kann mehrere Programme gleichzeitig im Speicher speichern und die Programme wissen, welcher Teil des Speichers ihnen zusteht, ist es nicht erforderlich, den gesamten Speicher eines Prozesses auszulagern, wenn zu einem anderen gewechselt wird.
(Laut Wikipedia waren sie früherauswechselnganze Prozesse in den 1960er Jahren.)
Unter Paging versteht man das Verschieben von Speicherblöcken („Seiten“) zwischen dem Hauptspeicher und einem sekundären Speicher, normalerweise auf eine Weise, die für den laufenden Prozess unsichtbar ist.
Auf einem modernen System umfasst das Kontextwechseln zwischen Prozessen das Neuladen von Seitentabellen, muss aber keine Auslagerung beinhalten, da normalerweise alles in den Speicher passt. Andererseits kann die Auslagerung sogar innerhalb eines einzelnen Prozesses erfolgen, wenn dieser genügend Speicher verwendet, um Swap zu erfordern.
Kontextwechsel und Paging sind also eigentlich ziemlich orthogonal. Es handelt sich bei beiden lediglich um Konzepte eines Multitasking-Betriebssystems mit virtuellem Speicher.
Antwort2
Kontextwechsel hat nichts mit Paging zu tun, sondern ermöglicht es Ihnen, zwei verschiedene Programme gleichzeitig auszuführen. Der Kontext ist der Code, der im Benutzer- oder Kernelbereich ausgeführt wird, und der Wechsel erfolgt vom Benutzer- in den Kernelbereich oder umgekehrt.
Paging findet nur statt, wenn Sie Swap-Speicherplatz haben, um Speicherseiten, die Sie auslagern möchten, in diesen Speicherplatz zu legen, um die Speicherseite für etwas anderes zu verwenden. Wenn kein Swap-Speicherplatz vorhanden ist, findet kein Paging statt, es findet jedoch ein Kontextwechsel statt.
Wenn der Kontext aus dem Benutzerbereich in den Kernelbereich (und dann möglicherweise in einen anderen Benutzerbereich einer anderen App) umgeschaltet wird, wird nicht unbedingt eine Paginierung durchgeführt. D. h. der Speicher des ursprünglichen Prozesses wird nicht automatisch ausgelagert. Es wird also weiterhin Speicher verwendet, während der zweite Prozess ausgeführt wird.