No eXecute: CPU-Erweiterungen schützen vor Angriffen

Teilbitvektoren

Teilbitvektoren führen zum nächsten wichtigen Verfahren, der Look-up- oder Indextabelle. Ein prinzipielles Beispiel mit einem 10-Bit-Teilvektor ist im nächsten Bild dargestellt. Ein Teilbitvektor kann innerhalb einer vorgegebenen Tabelle einzelne Einträge adressieren. Die maximale Größe der Tabelle ergibt sich aus der Länge des Teilbitvektors und der größten damit darstellbaren Adresse. Im Bild findet der Prozessor anhand des 10-Bit-Teilbitvektors mit dem Adresswert 600 in der Tabelle den Eintrag in Zeile 600 und liest deren 32-Bit-Wert 120000 aus.

Dieses Verfahren kommt in einem Prozessor an den unterschiedlichsten Stellen zum Einsatz, sei es beim Cache-Zugriff, beim Paging oder dem Auslesen von Deskriptoren für Speicherblöcke.

Für den Speicherschutz in x86-Prozessoren stellen Look-up-Tabellen das wichtigste Grundprinzip dar. Das Betriebssystem erzeugt für jeden Speicherblock einen Eintrag in einer Tabelle und legt darin die speziellen Eigenschaften eines Blocks fest. Die Kontrolle erfolgt also nicht für jedes Byte, sondern immer nur für zusammengehörige Bereiche. Bei jedem Zugriff auf eine Speicherstelle ermittelt der Prozessor aus den höherwertigen Bits der Adresse den zugehörigen Eintrag in der Schutztabelle. Diesen wertet er aus und prüft die Zugriffsberechtigungen anhand der darin eingetragenen Schutzbits.