Nun die Abstraktion von der realen Adressraumbelegung kann auch anders
geschehen, nämlich auf Basis eines sogenannten zweidimensionalen Adressraums. Ein logischer
Adressraum, der in zwei Dimensionen aufgespannt wird. Das ist die Segmentierung, das ist der
segmentierte Adressraum, den man durch die Harpwärter entsprechend auch unterstützt können muss. Und
hier meint eben die Segmentierung, die Unterteilung des Adressraums in Einheiten von möglicherweise
verschiedener Größe. Und diese Einheiten sind dann eben die Segmente, die jeweils eine gewisse
Länge haben, wo denn diese Segmente dann praktisch auch in Form von Tawellen und anderen Strukturen
den Linear aufgezählt sind und selbst gleich große Einheiten linear aufzählen. Jedes Segment,
es bildet denn eine lineare Folge von festen Speichereinheiten. Diese Speichereinheit kann
das einfache Byte sein. Dann würden wir sagen, dass dieses Segment immer zwingend zusammenhängend
im realen Adressraum platziert werden muss. Wenn wir also denn ein Segment S bestimmter Größe
halt haben, was bedeutet, eine bestimmte Anzahl von Bytes haben, dann müssen wir genau diese Anzahl
von Bytes im realen Adressraum irgendwo im Hauptspeicher finden, um dahin ein entsprechendes
Segment abbilden zu können. Die andere Einheit, die man da typischerweise sieht, ist die Seite.
Seiten, die wir gerade kennengelernt haben. Jede Seite ist ja gleich groß, aber ist natürlich
halt ein Vielfaches von diesen Bytes, typischerweise den 4K. Das bedeutet denn,
dass man hier eigentlich eine Kombination von der Segmentierung und der Seitennummerierung hat.
Man spricht eben auch von der Seitennummerierten Segmentierung, Page Segmentation. Was denn
bedeutet, dass ein Segment sozusagen dem vorher kennengelernten eindimensionalen Adressraum
entspricht und auf unterschiedliche Seitenrahmen abgelegt werden kann. Also demzufolge im realen
Adressraum nicht zwingend zusammenhängend liegen muss. Sehr wohl müssen natürlich denn die Seiten,
die eins zu eins auf den Seitenrahmen abgebildet werden, im realen Adressraum zwingend liegen,
zusammenhängend liegen, aber nicht das gesamte Segment. Das Segment ist dann praktisch,
wenn man so will, ein seitennummerierter Adressraum. Und die zweite Dimension hier,
jetzt wenn man von Segmentierung spricht, kommt durch die Benennung, durch die Adressierung eines
solchen Segments letztendlich zustande. Das heißt also so eine generierte Adresse,
so eine segmentierte Adresse von einem Prozess wird eben als ein Paar aufgefasst. Da haben wir
dann einmal S als Segmentnamen oder auch eben die Segmentnummer. Das ist die erste Dimension,
die man hat. Hat bestimmt einen Wertebereich, wie das für jede Form der Adressen gilt. Und
dann ist die zweite Komponente in diesem Paar D als Display, ist eine Verschiebung innerhalb
des Segments verstanden, die die zweite Dimension denn repräsentiert ist. Dann praktisch die Beidadresse
wenn man so will, innerhalb des Segments mit einem entsprechenden Wertebereich,
der eben auch von der Hardware vorgegeben ist. Dieser Segmentname übernimmt die Funktion des
Segmentindex, so wie wir das bei der Seitennummerierung vorher gesehen haben. Die
Abbildung ist tabellengesteuert. Wir haben also eine Segmenttabelle, die indiziert wird mit
diesem Segmentnamen. Und in dieser Segmenttabelle sind Segmentdeskriptoren drin, die einfach genau
ähnlich wie für eine Seite das Segment im realen Adressraum beschreiben, also die Anfangsadresse
festlegen, die Länge festlegen und dann dem Segment auch noch weitere andere Attribute
denn zuschreiben können. Auch hier ist der Deskriptor, der Segmentdeskriptor, so ein zentrales
Verbundobjekt, um dann einfach diese Abbildung durchzuführen, um den solchen Segmenten dann
eben auch noch gewisse statische und dynastische Eigenschaften dann zuzuschreiben. Nun, im Wesentlichen
sehen die durchaus ähnlich aus wie die Seitendeskriptoren. Der wesentliche Unterschied
könnte man sagen, besteht darin, dass wir hier eine Längeninformation haben. Also Segmente im
Gegensatz zu Seiten können ja immer unterschiedlich groß sein und deshalb steht in jedem Segmentdeskriptor
eben auch drin praktisch die Information, wie lang denn dieses Segment dann jeweils ist. Das sind
dann die Anzahl der Granulate, wie ich sie bezeichnet habe. Je nachdem, ob sozusagen die
Granulatgröße ein Byte ist, dann hätten wir halt hier eine Byte-Anzahl drin oder das Granulat ist
eine Seite, dann hätten wir halt hier eine Segmentlänge hinsichtlich der Anzahl der Seiten,
die zum Beispiel jetzt in diesem Segment denn drin liegen. Die Basisadresse ist die Anfangsadresse
im realen Adressraum, im Hauptspeicher, wenn man so will. Auch hier wird man entsprechend die
Presenters
Zugänglich über
Offener Zugang
Dauer
00:18:43 Min
Aufnahmedatum
2020-12-21
Hochgeladen am
2020-12-22 01:08:57
Sprache
de-DE