Der i386 kennt insgesamt drei grundlegende Systemsegmenttypen, nämlich Task-State-Segment (TSS), lokale Deskriptortabelle (LDT) und Gate. Sie dienen zur Speicherverwaltung (LDT) sowie zum Aufruf von Tasks und Prozeduren. Ein Segmentdeskriptor beschreibt ein Systemsegment, wenn das S-Bit gelöscht ist (S=0). Der i386 interpretiert dann den Wert in dem Feld Typ des Deskriptors entsprechend der folgenden Tabelle. Beispielsweise wird eine lokale Deskriptortabelle durch einen Systemsegment-Deskriptor beschrieben, der im Typfeld den Eintrag 2 (0010b) aufweist. Neben den Systemsegmenten existieren auch Gates.
Die Tabelle zeigt deutlich, daß sich die meisten Gates und die Task-State-Segmente für den 80286 und den i386 unterscheiden. Ursache ist die 32-Bit-Architektur des i386, die im Gegensatz zum 80286 z.B. 32-Bit-Offsets und 32-Bit-Stackwerte erlaubt. Aus Kompatibilitätsgründen kann der i386 die 80286-Systemsegmente problemlos verarbeiten. Umgekehrt gilt das natürlich nicht. Ein TSS definiert den Zustand eines aktiven (busy) oder unterbrochenen (verfügbaren) Tasks, es ist wesentlich für die Hardwareunterstützung von Multitasking-Betriebssystemen durch den i386. Zu beachten ist, daß TSS- und LDT-Deskriptoren nur in der GDT als Einträge zulässig sind, in der LDT können sie nicht auftreten. [Im Rahmen dieser Arbeit werde ich nur die i386-Versionen der verschiedenen Systemsegmenttypen erläutern, da nur diese aufgrund des Veraltens des 80286 noch von Bedeutung sind.]
Im Protected Mode verwendet der i386 sogenannte Gates für einen kontrollierten Zugriff von Tasks auf Daten und Code in Segmenten höherer Privilegierungsstufe. Die Gates implementieren einen erheblichen Schutz gegen unberechtigte oder fehlerhafte Zugriffe auf fremde Daten und Programme. Nimmt ein Anwendungsprogramm Betriebssystemfunktionen in Anspruch, um z.B. Dateien zu öffnen oder zu schließen, dann garantieren die Gates, daß der Zugriff fehlerfrei erfolgt, oder eine Exception ausgelöst wird. Das Anwendungsprogramm kann sich nicht an den Schutzmechanismen vorbeimogeln, ohne daß das Betriebssystem sofort davon informiert wird. Im Real Mode ist DOS dagegen völlig blind. Ein fehlerhafter Zugriff muß nicht sofort zu einer offensichtlichen Störung des Computers führen, häufig fällt er erst auf, wenn das System bereits abgestürzt ist. Das macht das Debuggen von Real-Mode-Programmen manchmal recht kompliziert. Versucht ein Anwendungsprogramm, die Funktion mit einer falschen Einsprungadresse aufzurufen, verhält sich der Computer unvorhersehbar. Die Gates definieren im Protected Mode daher quasi "Tore", durch die das Anwendungsprogramm Zugriff auf fremde Routinen hat.
|