Muss es einen Moduswechsel geben, z. B. vom Benutzer- zum Kernelmodus, damit die Aktion als Kontextwechsel bezeichnet werden kann?
Antworten
Zu viele Anzeigen?Nein. Nicht alle Prozessoren haben überhaupt Berechtigungsstufen .
Ein Kontextwechsel bedeutet normalerweise die Wiederherstellung eines Ausführungszustands aus einem Prozesssteuerungsblock . Allerdings ist der Begriff der Kontext ist implementierungsabhängig. Von Wikipedia :
Was den Kontext ausmacht, wird durch den Prozessor und das Betriebssystem bestimmt.
...
Wenn in einem Betriebssystem ein Übergang zwischen Benutzermodus und Kernelmodus erforderlich ist, wird ein Kontextwechsel nicht erforderlich; ein Moduswechsel ist an sich kein Kontextwechsel. Allerdings, je nach Betriebssystem kann zu diesem Zeitpunkt auch ein Kontextwechsel stattfinden .
Der Kontextwechsel erfolgt nur im Kernel-Modus. Wenn der Kontextwechsel zwischen zwei Prozessen im Benutzermodus stattfindet, muss die erste CPU in den Kernelmodus wechseln, den Kontextwechsel durchführen, wieder in den Benutzermodus zurückkehren und so weiter. Es muss also ein Moduswechsel mit einem Kontextwechsel verbunden sein.
Moduswechsel - Wenn ein einzelner Prozessmodus von der Benutzerebene auf die Kernel-Ebene oder umgekehrt umgeschaltet wird. Dies geschieht durch die Systemaufrufe. Wenn ein Prozess den Systemaufruf aufruft, wechselt der Prozessmodus in den Kernelmodus und der Kernel beginnt, im Namen des Benutzerprozesses zu handeln. Und sobald der Systemaufruf zurückkommt, wechselt der Prozessmodus vom Kernelmodus in den Benutzermodus. "Modus" ist eine Eigenschaft, die mit dem Prozess verbunden ist. Ein Moduswechsel ist also ein Wechsel des Modus eines einzelnen Prozesses.
Kontextwechsel - Dies ist der Fall, wenn der aktuelle Zustand des laufenden Prozesses an einem anderen Ort gespeichert wird und ein neuer Prozess zur Ausführung ausgewählt wird, dessen bereits gespeicherter Zustand in die CPU-Register geladen wird. Und nun beginnt der neue Prozess zu laufen. Diese ganze "Kontextwechsel"-Prozedur wird vom "Process Scheduler" durchgeführt.