Anhang C
Seitenadressierung und
Speicherverwaltungseinheiten
In diesem Anhang präsentieren wir eine Basistechnik zur Speicherverwaltung, die
eine Grundlage des Verständnisses moderner Ausführungsplattformen ist. In sehr
einfachen Rechensystemen werden die physikalischen Speicher tatsächlich mit den
Adressen adressiert, die vom (Assembler-) Programmierer gesehen werden. Aus
reiner Hardwaresicht ist dieser Ansatz einfach zu realisieren. Die Nutzung leidet
allerdings unter einer Reihe von Nachteilen: so ist beispielsweise die Zuordnung von
Objekten zum Speicher sehr statisch und während der Ausführung kaum zu ändern.
Daher muss die Größe der Objekte vor der Zuordnung von Speicher bekannt sein
oder zumindest relativ gut abgeschätzt werden können.
Mehr Flexibilität wird erreicht, wenn wir unterscheiden zwischen den Adressen,
welche der (Assembler-) Programmierer sieht, und den Adressen, mit denen wirklich
der Speicher adressiert wird. Die Adressen, welche der Programmierer sieht, heißen
virtuelle Adressen. Die Adressen, mit denen der Speicher adressiert wird, heißen
reale Adressen.
Bei der Seitenadressierung (engl. paging) partitionieren wir den Raum der
virtuellen Adressen in Blöcke gleicher Größe, genannt Seiten. Die Größe dieser
Seiten ist eine Zweierpotenz, z.B. 2 kBytes oder 4 kBytes. Daher bestehen virtuelle
Adressen aus den Bits, die eine bestimmte Seite adressieren, sowie aus den Bits,
die ein bestimmtes Wort oder Byte innerhalb der Seite adressieren. Die erste Menge
der Bits heißt Seitennummer, die zweite Offset. Der physikalische Speicher wird in
Blöcke gleicher Größe partitioniert, die Seitenrahmen (engl. page frames) genannt
werden.
Mit Hilfe einer sogenannten Seitentabelle (engl. page table) kann man nun den
Seitennummern Anfangsadressen des korrespondierenden Blocks im physikalischen
Speicher zuordnen. Der Offset ist für virtuelle und reale Adressen identisch (siehe
Abb. C.1 (links)). Dies erlaubt eine dynamische Zuordnung von Objekten zum
Speicher. Zusammenhängende Bereiche im virtuellen Adressraum müssen nicht
mehr zusammenhängenden Bereichen im realen Adressraum zugeordnet werden
(siehe Abb. C.1 (rechts)).
Es kann mehr als einen virtuellen Adressraum geben, beispielsweise je einen
Adressraum für jeden Prozess, der dem Betriebssystem bekannt ist. In diesem Fall
433
P. Marwedel, Eingebettete Systeme, https://doi.org/10.1007/978-3-658-33437-6
© Der/die Autor(en) 2021
Seitenadressierung und
Speicherverwaltungseinheiten
In diesem Anhang präsentieren wir eine Basistechnik zur Speicherverwaltung, die
eine Grundlage des Verständnisses moderner Ausführungsplattformen ist. In sehr
einfachen Rechensystemen werden die physikalischen Speicher tatsächlich mit den
Adressen adressiert, die vom (Assembler-) Programmierer gesehen werden. Aus
reiner Hardwaresicht ist dieser Ansatz einfach zu realisieren. Die Nutzung leidet
allerdings unter einer Reihe von Nachteilen: so ist beispielsweise die Zuordnung von
Objekten zum Speicher sehr statisch und während der Ausführung kaum zu ändern.
Daher muss die Größe der Objekte vor der Zuordnung von Speicher bekannt sein
oder zumindest relativ gut abgeschätzt werden können.
Mehr Flexibilität wird erreicht, wenn wir unterscheiden zwischen den Adressen,
welche der (Assembler-) Programmierer sieht, und den Adressen, mit denen wirklich
der Speicher adressiert wird. Die Adressen, welche der Programmierer sieht, heißen
virtuelle Adressen. Die Adressen, mit denen der Speicher adressiert wird, heißen
reale Adressen.
Bei der Seitenadressierung (engl. paging) partitionieren wir den Raum der
virtuellen Adressen in Blöcke gleicher Größe, genannt Seiten. Die Größe dieser
Seiten ist eine Zweierpotenz, z.B. 2 kBytes oder 4 kBytes. Daher bestehen virtuelle
Adressen aus den Bits, die eine bestimmte Seite adressieren, sowie aus den Bits,
die ein bestimmtes Wort oder Byte innerhalb der Seite adressieren. Die erste Menge
der Bits heißt Seitennummer, die zweite Offset. Der physikalische Speicher wird in
Blöcke gleicher Größe partitioniert, die Seitenrahmen (engl. page frames) genannt
werden.
Mit Hilfe einer sogenannten Seitentabelle (engl. page table) kann man nun den
Seitennummern Anfangsadressen des korrespondierenden Blocks im physikalischen
Speicher zuordnen. Der Offset ist für virtuelle und reale Adressen identisch (siehe
Abb. C.1 (links)). Dies erlaubt eine dynamische Zuordnung von Objekten zum
Speicher. Zusammenhängende Bereiche im virtuellen Adressraum müssen nicht
mehr zusammenhängenden Bereichen im realen Adressraum zugeordnet werden
(siehe Abb. C.1 (rechts)).
Es kann mehr als einen virtuellen Adressraum geben, beispielsweise je einen
Adressraum für jeden Prozess, der dem Betriebssystem bekannt ist. In diesem Fall
433
P. Marwedel, Eingebettete Systeme, https://doi.org/10.1007/978-3-658-33437-6
© Der/die Autor(en) 2021
