Nun, ich möchte jetzt hier mit der Segmentierung und den verschiedenen Varianten, die es zur
der Segmentierung bei der Adressumsetzung gibt, noch mal einen Aspekt aufgreifen,
der zwar für die heutige Hardware, die Standard Hardware zumindest, nicht mehr so eine große
Bedeutung besitzt wie früher, aber dennoch ein wesentliches Konzept der Adressumsetzung,
unterstützt von Betriebssystemen in Zusammenhang mit entsprechenden Memory Management Units
bedeutet. Das ist die Segmentierung und die verschiedenen Varianten davon. Nun Segmentierung
hier mal dargestellt auf Basis einer typischerweise einstufigen Segmenttabelle, wobei die
Segmenttabelle als ein dynamisches Feld ausgelegt ist. Das ist schon mal ein großer Unterschied zur
Seitenadressierung, wo die Seitenadressierung Seitentabellen verwenden, die eigentlich immer
statische Felder denn repräsentieren. Nun diese Segmenttabelle hat an sich von Idee her folgt
die dem gleichen Ansatz wie bei der Seitenadressierung. Hier sind Diskriptoren drin gespeichert,
die letztendlich dazu beitragen eine Umwandlung von einer logischen virtuellen Adresse zu einer
entsprechenden realen Adresse zu machen. Nun man nennt diese Einträge hier die Segmentdiskriptoren,
weil der Diskriptor ein Segment beschreibt, keine Seite mehr und die Informationen, die Attribute,
die in diesen Segmentdiskriptoren enthalten sind, sind durchaus ähnlich zu den der
Segmentdiskriptoren. Man kann grob sagen, dass hier eine Komponente hinzukommt, nämlich die
Länge eines Segments. Der große Unterschied zwischen Segmentierung und Seitenadressierung
ist ja die, dass bei der Seitenadressierung die Objekte Seiten und Seitenrahmen immer
alle gleich groß sind, eine feste von der Hardware vorgegebenen Größe, wohingegen bei
der Segmentierung die Segmente sehr wohl unterschiedlich groß sein kann. Und wenn man mal
von dem Standardfall davon ausgeht, dass Segmente beidfolgen letztendlich repräsentieren,
dann würde die Längeninformation, die jetzt hier in diesem Teil dargestellt für in einem
Segmentdiskriptor gespeichert ist, einfach angeben, wie in welchen Bereichen sich praktisch
die Adresse innerhalb eines solchen Segments denn bewegen darf. Die Segmentname, wie hier
dargestellt, als eine wesentliche Komponente der logischen virtuellen Adresse ist ein Indexwert,
wird als Indexnummer halt verstanden, indiziert in die Segmenttabelle und wird dann also einen
Segmentdiskriptor auswählen, der genau zu diesem Segment S denn passt. Dieser Indexwert wird in
einem bestimmten Bereich liegen, der durch einen bestimmten Limitwert begrenzt ist. Die Segmenttabelle
hat für gewöhnlich eine dynamische Adresse im Hauptspeicher und die Hardware überprüft dann
letztendlich auch, ob denn dieser Indexwert, dieser Wert S, den man hier hat, gültig ist,
also ob der praktisch in dem Bereich 0 bis Limit denn sozusagen liegen würde, also ob dieser Wert S
hier einen gültigen, überhaupt einen gültigen Eintrag, einen Segmentdiskriptor in dieser
Segmenttabelle halt adressiert. Wenn ein Indexfehler auftritt, das wird, das ist eine
Grenzwertüberprüfung, wie eine Indexüberprüfung bei normalen Array Bounce Checks, dann wird eine
Ausnahmesituation ausgelöst. Im Gegensatz zur Seitentabelle, wo man so eine Art von,
sagen wir mal ungültigen Einträgen dadurch identifiziert, indem man hier ungültige Einträge
wirklich vornimmt in der Tabelle, weil die Tabelle ja immer statisch gleich groß ist,
hat man das hier nicht. Man wird die Segmenttabelle immer genau so auslegen, dass man hier genau die
Anzahl von Segmentdiskriptoren drin hat, die man für den logischen virtuellen Adressraum eines
Prozesses dann letztendlich benötigt. Dieser Wert von S, den man hat, das heißt die Anzahl
der Segmente, die man jetzt hier pro Adressraum definieren kann, ist hardwareabhängig, aber eben
auch vom Betriebssystem abhängig. Es kann ziemlich großer Wert sein, also 16 Bit, 20 Bit Werte,
Hardware, die diese Größenordnung haben, waren keine Seltenheit. Das heißt also, man kann hier
auf einer sehr durchaus feingranularen Ebene seinen Prozessadressraum oder letztendlich auch
das Maschinenprogramm in Segmente der unterschiedlichsten Art aufteilen, in
Kurzsegmenten, Datensegmenten, Stapelsegmenten letztendlich und die dann letztendlich über
diesen Wertebereich von S, den man da halt hatte, noch entsprechend eindeutig identifizieren. Nun
vielleicht der der Abbildungsvorgang, wie er denn jetzt wirklich geschieht. Also ich sagte ja schon,
der S-Bereich ist ein Index in diese Segmenttabelle, um dann halt ein Segmentdiskriptor zu wählen.
Hier wird jetzt zunächst der Indexbau, der einen Bounce-Check durchgeführt, ob die Adresse,
Presenters
Zugänglich über
Offener Zugang
Dauer
00:31:35 Min
Aufnahmedatum
2020-06-24
Hochgeladen am
2020-06-24 18:46:36
Sprache
de-DE