Startseite   |  Site map   |  A-Z artikel   |  Artikel einreichen   |   Kontakt   |  
  


informatik artikel (Interpretation und charakterisierung)

Globale und lokale deskriptortabelle


1. Java
2. Viren



Für die Verwaltung der lokalen und globalen Deskriptortabelle sowie der weiter unten beschriebenen Interrupt-Deskriptortabelle und der Tasks implementiert der i386 fünf Register. Das sind das Steuerregister CR0 und die vier Speicherverwaltungs- oder Taskregister (TR), sowie die Register für die lokale Deskriptortabelle (LDTR), die Interrupt-Deskriptortabelle (IDTR) und die globale Deskriptortabelle(GDTR).

Der Index, d. h. die höherwertigen 13 Bits des Segmentselektors geben nun die Nummer des Segmentdeskriptors in der Deskriptortabelle an, der das zugehörige Segment beschreibt. Mit 13 Bits sind maximal 8192 verschiedene Indices möglich, so daß die globale und lokale Deskriptortabelle jeweils maximal 8192 Einträge zu 8 Byte oder insgesamt 64kByte umfassen können. Die Tabellen beschreiben damit jeweils bis zu 8192 verschiedene Segmente. Aufbau und Größe der Segmentdeskriptoren für die lokale Deskriptortabelle (LDT) und die globale Deskriptortabelle (GDT) stimmen überein. Ob sich der Segmentselektor in einem Segmentregister auf die GDT oder die LDT bezieht, gibt ja der Tabellenindikator TI im Selektor an. Möchte der i386 auf einen Eintrag in der GDT oder LDT zugreifen, multipliziert er den Indexwert des Selektors mit 8 (Anzahl der Byte pro Deskriptor) und addiert das Ergebnis zur Basisadresse der entsprechenden Deskriptortabelle.
Das niederwertige Wort des Steuerregisters CR0 ist bereits beim 80286 als Maschinenstatuswort (MSW) vorhanden und kann beim i386 aus Kompatibilitätsgründen auch so adressiert werden.

Von besonderer Bedeutung für den Protected Mode ist das Bit PE (Protection Enable). Wenn es auf 1 gesetzt wird, schaltet der i386 sofort in den Protected Mode um. Gelöscht wird es entweder explizit durch den Befehl MOV CR0,xxx....xxx0b, einen Prozessor-Reset oder einen Triple-Fault des i386.

Die Basisadresse der globalen und lokalen Deskriptortabelle ist im GDT- bzw. LDT-Register abgelegt. Diese Register werden von der Laderoutine des Betriebssystems mit den entsprechenden Werten geladen. Im Gegensatz zur LDT darf beim Aufbau der GDT der nullte Eintrag nicht benutzt werden. Ein Bezug auf den nullten Eintrag führt sofort zu der Exception "allgemeiner Protection-Fehler". Dadurch wird verhindert, daß ein noch nicht initialisiertes GDTR benutzt wird.

Wesentlich an der GDT ist, daß die gesamte Segment- und damit Speicherverwaltung aus ihr aufgebaut wird. Im GDTR sind sowohl die Basisadresse als auch das Limit (die Größe der GDT in Byte) der globalen Deskriptortabelle gespeichert - das GDTR weist somit auf die GDT im Speicher. Im Gegensatz dazu verwaltet der i386 die lokale Deskriptortabelle dynamisch, wodurch mehrere LDTs möglich sind (dagegen ist nur eine einzige GDT vorhanden). Für jede lokale Deskriptortabelle existiert ein Eintrag in der GDT, die LDTs werden dadurch ähnlich wie Segmente verwaltet. Das GDTR enthält also einen Segmentdeskriptor, das LDTR aber einen Segmentselektor.

Das GDTR kann durch den Befehl LGDT mem64 mit dem Segmentdeskriptor mem64 geladen werden. Dieser Schritt ist notwendig, bevor die Betriebssystemlader den i386 in den Protected Mode umschalten. Ansonsten hängt die Speicherverwaltung in der Luft. Demgegenüber wird das LDTR über den Befehl LLDT reg16 oder LLDT mem16 mit einem Segmentselektor geladen. Dieser Selektor gibt den Eintrag in der globalen Deskriptortabelle an, der den Deskriptor für die lokale Deskriptortabelle enthält. Die konsistente Verwaltung der Deskriptortabellen ist alleinige Aufgabe des Betriebssystems, der Anwendungsprogrammierer hat keinerlei Einflußmöglichkeit auf diesen Vorgang. Die Befehle zum Laden der Deskriptortabellenregister LDTR und GDTR müssen im Protected Mode von einem Task mit der Privilegierungsstufe 0 ausgeführt werden, üblicherweise vom Kernel.

Das Betriebssystem liefert für einen Task sowohl die globale als auch eine lokale Deskriptortabelle. Günstig ist es, von mehreren Tasks gemeinsam benutzte Segmente (wie beispielsweise Segmente mit Betriebssystemfunktionen) in der GDT und ausschließlich vom jeweiligen Task benutzte Segmente (Programmcode und -daten) in der LDT zu beschreiben. Mit diesem Verfahren können die verschiedenen Tasks voneinander isoliert werden, und es stehen für einen Task maximal zwei vollständige Deskriptortabellen á 8192 Einträge oder 16384 Segmente zur Verfügung, wobei der nullte Eintrag in der GDT nicht benutzt wird. Jedes Segment kann bei gelöschtem G-Bit bis zu 1mByte, bei gesetztem G-Bit bis zu 4gByte umfassen. Damit erhält man einen maximalen logischen oder virtuellen Adreßraum von 16gByte bzw. 64tByte pro Task. Dieser Wert ist natürlich wesentlich größer als der physikalische Adreßraum des i386 mit 4gByte.

Schon bei Page-Granularität mit einem virtuellen Adreßraum von vergleichsweise bescheidenen 16gByte können nicht mehr alle Segmente im Speicher vorhanden sein. Wird ein Segment beispielsweise vom Betriebssystem auf Festplatte ausgelagert, so setzt dieses das P-Bit im Segmentdeskriptor der entsprechenden Deskriptortabelle LDT oder GDT auf 0. Möchte der Prozessor auf dieses Segment zugreifen, so löst die Hardware die Exception "Segment nicht vorhanden", entsprechend Interrupt 0bh, aus. Der aufgerufene Interrupt-Handler kann dann das gewünschte Segment erneut in den Speicher laden, wobei er unter Umständen ein anderes Segment auslagert. Der i386 unterstützt dieses Swapping, indem es die Exception auslöst. Das eigentliche Laden oder Auslagern der Segmente muß aber das Betriebssystem erledigen.

 
 



Datenschutz
Top Themen / Analyse
indicator ZM4
indicator Telnet
indicator Virtuelle Funktionen
indicator ANSI C
indicator Das modulare Konzept von Pascal
indicator Client-Server Prinzip
indicator Einführung "Der Mikroprozessor"
indicator Parallele Datenübertragung
indicator Datum und Uhrzeit
indicator Schutz des I/O-Adreßbereichs über das IOPL-Flag




Datenschutz
Zum selben thema
icon Netzwerk
icon Software
icon Entwicklung
icon Windows
icon Programm
icon Unix
icon Games
icon Sicherheit
icon Disk
icon Technologie
icon Bildung
icon Mp3
icon Cd
icon Suche
icon Grafik
icon Zahlung
icon Html
icon Internet
icon Hardware
icon Cpu
icon Firewall
icon Speicher
icon Mail
icon Banking
icon Video
icon Hacker
icon Design
icon Sprache
icon Dvd
icon Drucker
icon Elektronisches
icon Geschichte
icon Fehler
icon Website
icon Linux
icon Computer
A-Z informatik artikel:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z #

Copyright © 2008 - : ARTIKEL32 | Alle rechte vorbehalten.
Vervielfältigung im Ganzen oder teilweise das Material auf dieser Website gegen das Urheberrecht und wird bestraft, nach dem Gesetz.
dsolution