Aber ein Ring-Wechsel ist immer automatisch AUCH ein Context Switch AFAIK ?
Also bin jetzt wirklich kein Experte aber meines Wissens nach ist jeder Systemaufruf wenn er von einem anderen Ring als Ring0 aus erfolgt IMMER ein Kontextswitch. Entweder steht also auf Wiki ein totaler Mist was das betrifft oder es ist ein zu spezielles Problem als dass ich hier noch weiter mitreden kann.
https://de.wikipedia.org/wiki/Ring_(CPU)
"
Jeder Wechsel von einem Ring zum anderen erfordert in der CPU einen
Kontextwechsel, der einige Rechenzeit in Anspruch nimmt."
https://de.wikipedia.org/wiki/Systemaufruf
EDIT: "Muss ein im Benutzer-Modus laufender Prozess eine Aufgabe erfüllen, die nur in einem höher privilegierten Ring möglich ist, wie z. B. der Zugriff auf die Festplatte oder andere Hardware, kann er dies dem Kernel durch einen Systemaufruf mitteilen und so einen
Kontextwechsel veranlassen." /EDIT
Kontext-Wechsel sind eben noch mehr Dinge und nicht nur Systemaufrufe (system calls)
(siehe das "oder bei systemaufrufen)
https://de.wikipedia.org/wiki/Kontextwechsel
"
Kontextwechsel oder
Taskswitching (
englisch context switch) nennt man den Vorgang in einem
Betriebssystem, bei dem die Bearbeitung des aktuellen
Prozesses (oder auch
Threads,
Tasks oder
Programms) unterbrochen wird (z. B. nach einer festgelegten
Zeitspanne durch einen Timer-
Interrupt oder bei Systemaufrufen) und zu einer anderen Routine gewechselt wird."
Genau darum gehts bei Meltdown:
https://de.wikipedia.org/wiki/Systemaufruf
"
Muss ein im Benutzer-Modus laufender Prozess eine Aufgabe erfüllen, die nur in einem höher privilegierten Ring möglich ist, wie z. B. der Zugriff auf die Festplatte oder andere Hardware, kann er dies dem Kernel durch einen Systemaufruf mitteilen und so einen
Kontextwechsel veranlassen."
Die Intel CPUs führen aber Spekulativ Prozesse aus die so einen Kontextwechsel brauchen - OBWOHL der Prozess selbst nur Ring3 z.b. Ist. Genau das ist das Problem das Meltdown verursacht. AMD CPUs führen aber nur Spekulativprozesse im selben Privileg aus (anders würde die Erklärung zu Meltdown hier keinen Sinn ergeben:
https://www.amd.com/en/corporate/speculative-execution
"...AMD processors are not susceptible
due to our use of privilege level protections within paging architecture..."
Auf anderen Seiten ist ja ähnliches nachzulesen und auch dass AMD CPUs viel "weniger" aggressiv Spekulativ Ausführen passt hier dazu. Wenn ich eben bestimmte Zweige im Spekulationsbaum nicht ausführe weil ein Kontextwechsel angefragt werden muss bin ich eben vor Meltdown sicher. (
We believe...) Dass formuliert man so, weil nicht ausgeschlossen werden kann dass es eventuell doch noch irgendeinen anderen Umweg gibt mit dem bei den Risikobehafteten Spekulationen nicht doch irgendwie etwas gemacht wird dass hier nicht gemacht hätte werden sollen.
kisser schrieb:
Nein. Erst seit Meltdown bei Intel.
"
Jeder Wechsel von einem Ring zum anderen erfordert in der CPU einen
Kontextwechsel, der einige Rechenzeit in Anspruch nimmt."
EDIT:
https://de.wikipedia.org/wiki/Ring_(CPU)
"In CPU und ggf.
MMU müssen Schaltungen bestehen, die bei jedem Befehl bzw. Speicherzugriff prüfen, ob dieser im aktuellen Ring erlaubt ist. Falls ein Prozess etwas nicht Erlaubtes durchführen möchte, wird er unterbrochen und eine Betriebssystem-Routine aufgerufen, deren Aufgabe es ist, entsprechend zu reagieren."
Genau DAS fehlt bei Intel CPUs. Bei Spekulativen Ausführungen /EDIT
Ja - zumindest nahm man das bisher an - aber Intel CPUs folgen nicht diesem Bauprinzip (bei Spekulativer Exekution).
Das ist eigentlich die Ursache warum Meltdown funktioniert und Intel betrifft aber AMD CPUs nicht und nur eine EINZIGE ARM CPU und das auch noch in abgeschwächter Form.
Der Patch gegen Meltdown patcht übrigens NICHT dieses Grundlegende Problem der Intel CPUs - er verhindert nur dass Intel CPUs dazu kommen Speculative Exekutionen über Ring-Grenzen hinweg auszuführen in dem vor jedem Befehl das komplette Kernel-Mapping entfernt wird, so dass die Spekulative Exekution über den User-Space hinaus nicht ausgeführt werden kann !
Das ist also theoretisch denkbar dass man den KPTI-Patch gegen Meltdown doch noch wieder umgehen kann, und man dann @Intel wieder in ein Problem läuft.
Das ist schon ein Unterschied in meinen Augen.
Aber ich denke wir sollten diese Diskussion hier endgültig aus dem Topic auslagern - hier geht es eigentlich um die neuen Coffee Lakes...