Wann treten Call-Gates sonst noch auf?Call-Gates sind nur eine Möglichkeit zum Kontextwechsel. Üblicherweise verwendet man sie nicht mehr und nutzt stattdessen Interrupts (ähnlich dem DOS Funktionsverteiler "int 21h") oder - prozessor- und modusspezifisch - die Befehle SYSENTER bzw. SYSCALL.
springe ich vom Hypervisor in die Prozedur und am Ende dieser an eine feste Adresse zurück in den Hypervisor. Die Frage ist: kann ich während diesen JMPs den Ring ändern? So wie ich das verstanden habe, wird der Ring im Segment festgelegt.Mit einem JMP kannst du den Ring nicht ändern. Wenn du das möchtest, eignet sich ein Sprung durch ein Call-Gate. Prinzipiell kannst du auch die Prozeduren im Ring 0 ausführen lassen und in der eigentlichen Ziel-Architektur eine spezielle Instruktion (JMPUSER) vorsehen. Die Sicherheitsprobleme mit diesem Ansatz sollten bekannt sein, wenn x86 aber ohnehin nur eine Zwischenlösung ist, ist das vielleicht akzeptabel.
Andersrum gefragt: kann ich nur mit der Seitennummer aus dem Page Directory und dem Offset direkt auf physikalischen Speicher zugreifen? (Page Tables nutze ich erstmal nicht). Da meine Speicherverwaltung nur Virtuelle Adressen zurückgibt, brauche ich wohl kein LEA?Wenn du physische Adressen bevorzugst, solltest du einen paginglosen Ansatz überdenken bzw. einfach den physischen Speicher 1:1 in deinen Adressraum mappen, dann sind virtuelle und physische Adressen immer gleich.
Wofür kann ich Tasks noch brauchen, eigentlich habe ich ja den Hypervisor?Du brauchst in jedem Fall einen Task, um den Ring 3-Code auszuführen.
Was haben Tasks mit Multi-Core zu tun?Nichts, außer, dass aus der Pseudoparallelität eine echte Parallelität wird.
Was bedeutet mehrere Threads per Core?Das gleiche wie Multitasking auf einem Core, nur innerhalb eines Tasks.
Gruß,
Svenska

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert

