
In Büchern über Betriebssysteme wird normalerweise erwähnt, dass die Seitengröße von der Prozessorarchitektur bestimmt wird. Intel x86 unterstützt beispielsweise eine Seitengröße von 4 KB. Ich habe den Eindruck, dass das Betriebssystem beim Installieren eines Betriebssystems auf unserer Hardware die Seitengröße von 4 KB von der Hardware gelesen und den virtuellen Adressraum logisch in Seiten mit 4 KB und den Speicher in Frames aufgeteilt hat.
Wenn ich das richtig verstehe, von wo oder von welcher Stelle in der Hardware liest das Betriebssystem diesen Wert von 4 KB vom Prozessor? Welchen Mechanismus verwendet das Betriebssystem, um die von der Hardware bereitgestellte Seitengröße zu bestimmen? Kann mich jemand darüber aufklären? Wie (auf welcher Grundlage) entscheidet Intel, die Seitengröße von 4 KB beizubehalten?
Antwort1
Betriebssysteme kodieren die Seitengröße je nach Architektur (und in manchen Fällen je nach Kernelkonfiguration zur Build-Zeit). Beispielsweise beträgt die grundlegende Seitengröße auf x86 immer 4KiB — dies ist eine Eigenschaft der CPU-Architektur; unter Linux sehen Sie dies definiertIninclude/asm/page_types
. Auf 64-Bit-ARM kann die Seitengröße zur Build-Zeit als 4KiB, 16KiB oder 64KiB konfiguriert werden. Einige Architekturen haben mehrere Seitengrößen zur Laufzeit (z.Briesige Seiten auf x86), aber alle Größen sind im Voraus bekannt und die Basisgröße ist festgelegt.
Unter Linux ist die kanonische Definition der Seitengröße PAGE_SIZE
, und Sie erhalten sie durch Einbeziehung von asm/page.h
, das architekturspezifisch ist (was möglicherweise andere Header einbezieht, wie es bei x86 der Fall ist). Elixir bietet eine praktische Liste vonalle PAGE_SIZE
Definitionen.
Die meisten vom Linux-Kernel unterstützten Architekturen unterstützen 4-KiB-Seiten. Ausnahmen sind Alpha, ARC, einige Motorola 68k-Systeme, OpenRISC und 64-Bit-SPARC, die alle 8-KiB-Seiten verwenden. Viele Architekturen können so konfiguriert werden, dass sie andere Seitengrößen verwenden.