-
Ein Software-Interrupt wird gezielt durch einen INT-Befehl ausgelöst, z.B. ruft der Befehl INT 10h den Interrupt mit der Nummer 10h auf.
Im Real-Mode-Adreßraum des i386 sind die ersten 1024(1k) Byte für die Interrupt-Vector-Table reserviert. Diese Tabelle weist für jeden der 256 möglichen Interrupts einen sogenannten Interrupt-Vektor auf. Beim 8086 war die Lage dieser Tabelle fest von der Hardware vorgegeben. Der i386 verwaltet sie selbst i ...
mehr
-
Wie schon der Name sagt, werden diese Unterbrechungen durch einen Hardware-Baustein (beim Timer-Interrupt z.B. durch den Timer-Baustein) oder ein Peripheriegerät wie beispielsweise die Festplatte ausgelöst. Man unterscheidet zwei grundsätzlich verschiedene Arten von Hardware-Interrupts: den nicht-maskierbaren Interrupt NMI sowie die (maskierbaren) Interruptanforderungen IRQ (Interrupt Request). Für die Bedienung eines solchen IRQ spielt der Int ...
mehr
-
Neben den beiden obigen bildet der Prozessor selbst eine Quelle für Interrupts. Solche vom Prozessor erzeugten Ausnahmen nennt man Exceptions. Die Auswirkungen einer Exception entsprechen dabei einem Software-Interrupt, d.h. es wird ein Interrupt aufgerufen, dessen Nummer in diesem Fall vom Prozessor selbst angegeben wird. Ursache für eine Exception ist im allgemeinen eine prozessorinterne Fehlerbedingung, die den Eingriff von System-Software e ...
mehr
-
Der Protected Virtual Address Mode oder kurz Protected Mode wurde, beginnend mit dem 80286, implementiert, um (wie der Name schon sagt) die verschiedenen Tasks unter einem Multitasking-Betriebssystem zu schützen. Zu diesem Zweck prüft die i386-Hardware den Zugriff auf insgesamt vier Schutzebenen. Damit sind Daten und Code geschützt und ein kompletter Systemabsturz ist normalerweise - außer bei unsauberer Programmierung - nicht möglich.
Die Z ...
mehr
-
Wie schon beschrieben, multipliziert die Adressierungseinheit des i386 im Real Mode den Wert des Segmentregisters einfach mit 16, um die lineare Basisadresse des betreffenden Segments zu ermitteln. Die Adresse innerhalb eines solchen 64kByte großen Segments wird dann durch den Offset in einem Vielzweckregister angegeben. Im Protected Mode werden die Werte der Segmentregister völlig anders interpretiert, sie stellen keine Basisadressen, sonder ...
mehr
-
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öherwertige ...
mehr
-
Soll der i386 in den Protected Mode umgeschaltet werden, muß das Betriebssystem oder das ROM-BIOS die erforderlichen Tabellen im Speicher aufbauen und wenigstens die beiden Register GDTR und IDTR mit geeigneten Werten initialisieren. Ist das geschehen, so setzt das System oder ROM-BIOS über den Befehl MOV cr0, das Bit PE im Steuerregister CR0 auf 1. Der i386 arbeitet nun im Protected Mode. Beim PC kann der i386 auch über die Funktion 89h des I ...
mehr
-
Im Real Mode war die Ermittlung einer linearen Speicheradresse ganz einfach: Der Wert des entsprechenden Segments wurde mit 16 multipliziert zum Offset addiert. Im Protected Mode ist das ganze erheblich umfangreicher. Es laufen folgende Schritte ab:
. Anhand des Segmentselektors im entsprechenden Segmentregister wird ermittelt, ob die globale oder die lokale Deskriptortabelle benutzt werden soll;
. Mit Hilfe des Speicherverwaltungsregisters ...
mehr
-
Das Bit S sowie die vier Typbits des Segmentdeskriptor geben Art und Möglichkeit für einen Zugriff auf das beschriebene Segment an. Ist S (Descriptor-Type) gleich 1, so handelt es sich um ein Applikationssegment, d.h. das Segment enthält Programmcode oder Programmdaten. Zu diesen Programmen gehören auch Systemroutinen, die zur Verwaltung des Computers bis auf Kernel-Ebene des Betriebssystems gehören. Demgegenüber beschreiben Systemsegmente und ...
mehr
-
Ist S=1, handelt es sich also um ein Applikationssegment, so hat das Feld Typ im Segmentdeskriptor folgenden Aufbau:
In der umseitigen Tabelle finden sich alle möglichen Kombinationen der Bits EXE, E/C, W/R und A sowie deren Bedeutung.
Legt man den Begriff Daten möglichst weit aus, so besagt er soviel wie Information. In diesem Sinne sind auch Programme Daten, da sie (logischerweise) eine Menge von Information (eine Folge von Bits) darste ...
mehr
-
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 Des ...
mehr
-
Bei einem Near-Call wird die Steuerung an eine Prozedur oder einen Sprungpunkt übergeben, der bzw. die sich im gleichen Segment wie der entsprechende CALL- oder JMP-Befehl befindet. Ein solcher Transfer verändert also nur den Wert des Befehlszählers EIP, und der i386 prüft lediglich, ob EIP das Limit des Segments übersteigt. Ist der Offset gültig, so wird der Aufruf bzw. Sprung ausgeführt, ansonsten löst der i386 die Exception "allgemeiner Prot ...
mehr
-
Neben den Registern für die globale und lokale Deskriptortabelle sowie das Task-Register besitzt der 80286 noch ein neues Register für die Interrupt-Deskriptortabelle (IDT). Im Real Mode waren die 1024 (1k) niederwertigen Byte des Adreßraums für die 256 Einträge (entsprechend den 256 Interrupts des i386) der Interrupt-Vektortabelle reserviert. Jeder Eintrag enthält im Format Segment:Offset die Einsprungadresse des zugehörigen Interrupt-Handlers ...
mehr
-
Die gesamten Protection-Funktionen des i386 dienen in erster Linie einem Ziel: Multitasking. Bei einem leistungsfähigen PC-System sollen mehrere Tasks mehr oder weniger parallel ablaufen. Tatsächlich erreicht man mit einem Prozessor nur eine scheinbare Parallelität, weil die einzelnen Tasks nur für kurze Zeit hintereinander ausgeführt werden, um dann unterbrochen und nach kurzer Zeit an der gleichen Stelle wieder gestartet zu werden. Um das zu ...
mehr
-
Über die I/O-Ports werden im allgemeinen Register von Hardware-Komponenten des PC wie beispielsweise der Festplattencontroller oder die Steuerregister des DMA-Chips angesprochen. Da die Steuerung und Überwachung eine originäre Aufgabe des Betriebssystems ist und hierzu meist Treiber mit PL=1 benutzt werden, fällt auch der I/O-Adreßbereich unter den Zugriffsschutz. Ports werden aber nicht mit Hilfe eines Segmentregisters angesprochen, also steh ...
mehr
-
Der Wert dieses Flags gibt die Privilegierungsstufe an, die ein Code-Segment mindestens aufweisen muß, um auf den I/O-Adreßraum zugreifen zu können, d.h. es muß gelten CPL IOPL. Ist der CPL des aktuellen Task größer (niedrigere Privilegierungsstufe), so führen die I/O-Befehle IN, OUT, INS und OUTS zu der bereits hinlänglich bekannten Exception "allgemeiner Protection-Fehler". Vernünftige Anwendungsprogramme unter einem vernünftigen Bet ...
mehr
-
Neben dem globalen Schutz durch das IOPL-Flag kennt der i386 einen weiteren Schutzmechanismus für Zugriffe auf den I/O-Adreßbereich, nämlich die sogenannte I/O-Permission-Bit-Map. Sie ist im TSS des jeweiligen Task abgelegt, verschiedene Tasks können also unterschiedliche I/O-Permission-Bit-Maps besitzen. Der Eintrag I/O-Map-Basis im TSS-Deskriptor gibt den Offset innerhalb des TSS an, bei dem die I/O-Permission-Bit-Map beginnt. Sie erstreckt ...
mehr
-
Im Protected Mode sind gegenüber dem Real Mode weitere Exceptions möglich, die in erster Linie Fehlerbedingungen anzeigen, deren Ursache in einer Verletzung der Schutzbedingungen des Protected Mode liegt.
Im folgenden eine Auflistung der neuen Exceptions:
. Zweifacher Fehler (Exception 8) Treten zwei Exceptions hintereinander auf und ist es dem i386 nicht möglich, beide Exceptions hintereinander auszuführen, dann löst er den Interrupt 8 aus. ...
mehr
-
Von den Schutzmechanismen im Protected Mode sind in erster Linie Befehle betroffen, die den Zustand der CPU steuern und lesen und auf Code- und Datensegmente zugreifen. Es soll verhindert werden, daß eine fehlerhafte oder inadäquate Anweisung die CPU aufhängt oder blockiert (wie z.B. der HLT-Befehl) bzw. Daten- und Codesegmente in unsauberer Weise benutzt werden und dadurch die Systemintegrität zerstört wird. Zu diesem Zweck sind drei Gruppen v ...
mehr
-
In der Mathematik gibt es zwei grundlegend verschiedene Methoden, das Bildungsgesetz einer bestimmten Folge darzustellen. Bei der expliziten Beschreibung ist es möglich, ein Folgenglied direkt über die Nummer desselben auszurechnen, so zum Beispiel
an=2n+1 => a4: n = 4 => a4 = 2 * 4 + 1 => a4 = 9
=> a198: n = 198 => a198 = 2 * 198 + 1 => a198 = 397
Bei der rekursiven Darstellung wird das Glied nicht absolut definiert, sondern es wi ...
mehr