Von Linux verwendetes Speicherverwaltungsprinzip

9

Wird die Speicherverwaltung im Linux-Kernel mithilfe von Paging oder Segmentierung oder beidem durchgeführt?

Gilles 'SO - hör auf böse zu sein'
quelle

Antworten:

7

Linux verwendet beides. Es verwendet die Segmentierung, um den gesamten verfügbaren Adressraum zuzuordnen und gleichzeitig verschiedene Zugriffsrechte zu gewähren: im Grunde eine Kernel- und eine Benutzerraumansicht. Sie können den Linux-Quellcode für KERNEL_DS (Kernel-Datensegment) für einige Beispiele durchsuchen.

Paging wird dann zum Implementieren des virtuellen Speichers verwendet (Grep für "struct gdt_page" im Kernel als Ausgangspunkt)

Frederik Deweerdt
quelle
6

Die Speicherverwaltung unter Linux erfolgt ausschließlich durch Paging.

Linux unterstützt sowohl "kleine" (normalerweise 4 KB) als auch "große" (2 MB) Seiten. Ersteres "funktioniert einfach", ohne dass Sie etwas Besonderes wissen oder tun, und Letzteres muss speziell behandelt werden (muss beim Booten reserviert und über ein spezielles Gerät zugeordnet werden).

Der einzige Kontext, in dem "Segment" unter Linux angezeigt wird, ist der brk () - Systemaufruf, mit dem das Datensegment eines Prozesses vergrößert wird (dies wird normalerweise nicht benötigt, malloc erledigt dies, ohne dass Sie sich darum kümmern müssen). In beiden Fällen wird der Speicher in Seiten bereitgestellt und in Seiten verwaltet. Dies hat nichts mit der x86-Segmentierung zu tun.

Damon
quelle
Die X86-Segmentierung war veraltet, als der i386 herauskam. Linux hat noch nie eine Segmentierung für die Speicherverwaltung verwendet. Einige Derivate wie ELKS und (möglicherweise) uClinux könnten.
LawrenceC