Information Technology Reference
In-Depth Information
Aktion. So wird die Segmentnummer bei Zugriffen auf auszuführende Befehle aus dem
Code-Seg-
ment-Register
(CS) und bei Zugriffen auf den Stapel aus dem
Stack-Segment-Register
(SS) gelesen.
Von den 16 Bit breiten Segmentregistern stehen 13 Bit für die eigentliche Segmentnummer und ein
Bit für einen sog.
Tabellenindikator
(
table indicator
,
TI
) zur Verfügung (die verbleibenden zwei
Bits enthalten die Privilegebene, die zum Zeitpunkt der Definition des Segmentregisters gültig
gewesen ist). Insgesamt können somit zwei Segmenttabellen mit je 8192 Segmenten verwaltet wer-
den (die
Local-Descriptor-Table LDT
und die
Global-Descriptor-Table GDT
). Weil bei einem
Zugriff auf einen Hauptspeicherinhalt nicht jedes Mal auch auf die im Hauptspeicher befindliche
Segmenttabelle zugegriffen werden soll, wird beim Laden eines Segmentregisters automatisch der
zugehörige Deskriptor in ein nicht direkt zugängliches
Segmentdeskriptorregister
geladen. Zugriffe
auf Inhalte des Segments werden anschließend verzögerungsfrei mit Hilfe der darin gespeicherten
Informationen bearbeitet (siehe auch [3]).
Seitenverwaltung (paging)
Die Segmentierung hat den Nachteil, den Hauptspeicher wegen der unterschiedlich
großen Segmente über die Zeit stark zu
fragmentieren
. Dies kann dazu führen, dass
trotz genügend freien Speicherplatzes ein Segment nicht mehr geladen werden kann,
weil kein zusammenhängender Speicherbereich mit ausreichender Größe verfügbar
ist. Das Problem lässt sich jedoch lösen, indem man den Hauptspeicher statt in
unterschiedlich großen Segmenten in
Seiten
einheitlicher Größe (
pages
) verwaltet.
Die Umsetzung virtueller Adressen geschieht hierbei ähnlich, wie in Bild 2.66 dar-
gestellt, wobei auf die Speicherung eines Limits wegen der einheitlichen Seiten-
größe verzichtet werden kann. Die Adressumsetzung lässt sich außerdem vereinfa-
chen, wenn die Seitengröße eine Zweierpotenz ist und die einzelnen Seiten im
Hauptspeicher entsprechend der Seitengröße ausgerichtet (
aligned
) und disjunkt
zueinander gehalten werden.
Die Funktionsweise einer entsprechend modifizierten einstufigen
Speicherverwal-
tungseinheit
veranschaulicht Bild 2.67. Mit Hilfe der in der virtuellen Adresse
codierten
Seitennummer
wird auf eine
Seitentabelle
zugegriffen (a) und aus dem
gelesenen Deskriptor neben den
Zugriffsattributen
die sog.
Rahmennummer
(
frame
number) extrahiert. Sie entspricht der Basisadresse einer Seite im Hauptspeicher,
wobei man als Einheit für die Adressierung statt eines Bytes die
Seitengröße
(bzw.
Rahmengröße
) verwendet. Die Adresse der Speicherzelle ergibt sich schließlich,
indem die
Bytenummer
an die Rahmennummer angehängt wird, was einer Addition
der Basisadresse, der vom Deskriptor ausgewählten Seite und der Bytenummer ent-
spricht (b).
Der Nachteil der in Bild 2.67 dargestellten einstufigen Seitenverwaltung ist, dass die
Seitentabelle immer vollständig im Hauptspeicher gehalten werden muss. Dies kann
abhängig von der Breite der virtuellen Adresse einen erheblichen Speicherplatz
erfordern (mit 64 Bit Adressen und einer Seitengröße von 4 KByte werden z.B. 2
52
Deskriptoren benötigt). Deshalb benutzt man statt einer einzelnen Tabelle meist
mehrere hierarchisch angeordnete Tabellen. Das Prinzip einer zweistufigen Spei-
cherverwaltung verdeutlicht Bild 2.68. Mit Hilfe der in der virtuellen Adresse
codierten Verzeichnisnummer wird auf das im Hauptspeicher befindliche
Seitenver-
zeichnis
relativ zur Adresse „Basis“ zugegriffen (a). Der gelesene
Seitentabellendes-
Search WWH ::
Custom Search