Ich kann nicht verstehen, wie die Hardware weiß, dass derzeit ein Kernel-Code läuft. Müssen wir einen Speicheradressbereich in einigen Registern einrichten, der die CPU anzeigt, dass zwischen diesen Speicheradressen der Kernel läuft.Wie Hardware-Privilegien in x86-Prozessor manipuliert werden
Antwort
Auf x86-Architekturen wird dies mit Deskriptortabellen erreicht. Der Startup-Code installiert Tabellen, die der CPU mitteilen, welche Speicherbereiche welche Privilegien haben. Wenn auf den Speicher zugegriffen wird, prüft die Hardware, ob der Befehl und/oder die Zugriffsmethoden für den gegebenen Deskriptor der Adresse gültig sind.
Nun, das ist eine sehr einfache Beschreibung, da dies eine ziemlich breite Frage ist.
Einige Posting und Link zum Einstieg:
What are Ring 0 and Ring 3 in OS
http://duartes.org/gustavo/blog/post/cpu-rings-privilege-and-protection/
Ich würde auch (kostenlos), um den Intel Handbücher zum Download empfehlen, da dies auch dort im Detail beschrieben wird.
http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
Mochte die kurze Antwort. –
Die CPU kann entweder durch eine Ausnahme in einem höheren Modus oder einen Interrupt. Die CPU geht mit einer Rückkehr von der Interrupt-Anweisung in einen niedrigeren Modus zurück.
Die CPU weiß aus dem Prozessstatusregister, in welchem Modus sie ausgeführt wird. Das Betriebssystem weiß, dass es sich im Kernelmodus befindet, wenn es einen Handler für eine Ausnahme oder einen Interrupt ausführt.
Das Betriebssystem richtet die Seitentabellen ein, um einen Adressbereich für den Kernel zu definieren. Die Tabellen sind so eingerichtet, dass sie vor Zugriffen geschützt sind, wenn sich die CPU nicht im Kernel-Modus befindet.
- 1. Wie man Datensätze manipuliert?
- 2. Wie man Formularfeldwerte in Javascript manipuliert
- 3. Wie manipuliert man CSV-Daten?
- 4. Wie manipuliert man C# AST?
- 5. Wie manipuliert man Pixel in einer Bitmap?
- 6. Wie man JSON AST in Scala manipuliert
- 7. Wie man einen Wert manipuliert?
- 8. Warum Deklinationsausdrücke in Rückgabetypen müssen im Symbolnamen manipuliert werden?
- 9. Kann der Rückgabewert im Chrome-Debugger manipuliert werden?
- 10. Audiodaten (unsigned char), die manipuliert wurden, können nicht abgespielt werden
- 11. Javascript-Bibliothek, die Daten wie Carbon manipuliert?
- 12. Angular2: Wie manipuliert man Url Query String?
- 13. Wie man angehängten Inhalt manipuliert? Jquery
- 14. Symfony 3: Wie man Entitäten dynamisch manipuliert?
- 15. Wie erstellt oder manipuliert man GPU-Assembler?
- 16. Wie manipuliert man andere Website-Daten?
- 17. Wie manipuliert man HTML in einer jQuery-Variablen?
- 18. In Swift, wie manipuliert man ein Objekt in einer Typologie?
- 19. Wie kann die Auswahl eines Textbereiches in Safari aus JavaScript bestimmt/manipuliert werden?
- 20. Wie manipuliert zurückgegeben Mongo Sammlungen/Cursor in Javascript (meteor.js)?
- 21. Wie man Objekte in OpenGL unabhängig manipuliert/transformiert?
- 22. Wie manipuliert man die Ausnahme in __exit__ eines Kontextmanagers?
- 23. Meteor: Wie man Mongodb Daten während der Anzeige manipuliert
- 24. Wie man DOM mit Ruby on Rails manipuliert
- 25. RHS Zuordnung manipuliert über Manipulation LHS
- 26. Excel reagiert nicht, wenn große Datenmengen vom Add-In manipuliert werden
- 27. Wie wird der Wert basierend auf dem Textfeldwert manipuliert?
- 28. Wie manipuliert man eine Webseite mit einer Konsolenanwendung?
- 29. Wie manipuliert importierte HTML-Datei mit externen jQuery-Datei?
- 30. Inno-Setup: Wie manipuliert Fortschrittsbalken im Abschnitt "Ausführen"?
Welche CPU/Architektur? Das ist eine sehr hardwarebezogene Frage. – Devolus
Googeln Sie Ihren genauen Titel gibt: 'Über 206.000 Ergebnisse'. –
Googling jede Frage von Stackoverflow gibt in der Regel diese viele Ergebnisse @MartinJames –