x86-Programmierung und -Betriebsarten (Teil 4)

Segmentselektoren, Segmentdeskriptoren und Privilegierungsstufen

Unter einem Multitasking-Betriebssystem laufen mehrere Programme (Tasks) scheinbar parallel ab. Genauer gesagt werden die einzelnen Tasks vom Betriebssystem in kurzen Zeitabständen aktiviert, laufen eine kurze Zeit ab und werden dann vom Betriebssystem wieder unterbrochen, sodass dieses einen anderen Task aktivieren kann. Im Gegensatz zu den TSR-Programmen unter MS-DOS (beispielsweise PRINT) werden die Programme also gezielt vom Betriebssystem aufgerufen, TSR-Programme dagegen aktivieren sich selbst, indem sie beispielsweise den periodischen Timer-Interrupt abfangen. In einem Multitasking-Betriebssystem wird also häufig in kurzer Zeit zwischen den einzelnen Tasks umgeschaltet, das heißt es wird ein Task Switch ausgeführt, sodass der Benutzer den Eindruck hat, die Programme würden parallel arbeiten. Durch die Hardware-Unterstützung der CPUs im Protected Mode können diese Task-Switches schnell und effektiv ausgeführt werden.

Ein weiterer wesentlicher Unterschied des Protected Modes gegenüber dem Real Mode ist die andersartige Berechnung der linearen Adresse eines Speicherobjekts. In den folgenden Kapiteln wollen wir uns den Besonderheiten des Protected Modes im Detail zuwenden.

Wie beschrieben, multipliziert die Adressierungseinheit der CPU im Real Mode den Wert des Segmentregisters einfach mit dem Wert 16, um die lineare Basisadresse des betreffenden Segments zu ermitteln. Die Adresse innerhalb eines solchen 64 KByte-großen Segments wird dann durch den Offset in einem Vielzweckregister angegeben. Im Protected Mode werden die Werte in den Segmentregistern völlig anders interpretiert, sie stellen keine Basisadressen, sondern so genannte Selektoren dar.