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