Dockers DEV Site


Updates · Faq · Home 

2.2 Adressierung des Arbeitsspeichers

Einleitung

Der Schlüssel zum Verständnis der neuen, durch den Protected-Mode zur Verfügung gestellten Möglichkeiten ist die Speicheradressierung. Auf ihr bauen fast alle erweiterten Möglichkeiten des Prozessors auf. Zu diesen Möglichkeiten gehören Multitasking, die Privilegierung von Betriebssystemroutinen sowie bis zu 4 GB große Segmente.

Anmerkung: Aufgrund seiner Einschränkungen auf nur 24 Adressleitungen und 16 Bit Register stehen 4 GB Segmente beim 80286 nicht zur Verfügung. Erst ab dem 80386 (Intels erstem, wirklichen 32 Bit Prozessor) konnten 32 Bit breite Register und max. 4 GB große Segmente benutzt werden. Aus diesen Gründen soll hier auch nur der 80386 Prozessor besprochen werden.

Virtuelle Adressierung

Wie im Realmode, existieren auch im Protected-Mode Segmente, die den Speicher in Code- und Datensegmente unterteilen. Im Gegensatz zur Realmode-Adressierung betrachtet der Prozessor den Speicher dabei als virtuell, das heißt, der tatsächlich angesprochene physische Speicherbereich ist dem Programm unbekannt. Dadurch wird verhindert, daß physische Speicheradressen direkt angesprochen werden können.

Dieses Vorgehen bildet die Grundlage für den Einsatz einer virtuellen Speicherverwaltung, bei der bei Bedarf ganze Programm- oder Datenbereiche auf die Festplatte ausgelagert werden können. Obwohl es letztendlich "in der Hand" des Betriebssystems liegt, eine konkrete Speicherverwaltung zu implementieren, ist die Hardware in Form der CPU durch die virtuelle Adressierung bereits darauf vorbereitet.

Unter einer virtuellen Adresse ist dabei ein 16 Bit Wert (der sogenannte Selektor) und eine 32 Bit-Offsetadresse zu verstehen. Wie im Realmode muß der 16 Bit Wert (Selektor) zunächst in eines der Segmentregister (CS, DS, ES, FS oder GS) geladen werden, damit mit der Offsetadresse linear vom Segmentbeginn aus auf den Arbeitsspeicher zugegriffen werden kann. Der Selektor enthält dabei jedoch nicht die Adresse des Segmentes im Arbeitsspeicher (wie es im Realmode der Fall ist), sondern die Nummer eines Segmentbeschreibers (Deskriptor). Ein Deskriptor hält dabei den physischen Segmentstart sowie die Länge des Segmentes fest.

Der Prozessor verwendet den Selektor als Index auf eine Tabelle mit Segmentbeschreibern (Deskriptortabelle), um die Startadresse und die Größe des Segmentes zu ermitteln, auf das über die Offsetadresse zugegriffen werden soll (Vgl. Abb. 2.2).

virtuelle Adressierung
Abb. 2.2: Vereinfachtes Prinzip der virtuellen Adressierung

Index
weiter >>
<< zurück ||

Last change 27/11/2022 by Docker Rocker.
This page uses no cookies, no tracking - just HTML.
Author: "Docker Rocker" ~ 2022 · [Public Git]