Jens Holzkämper: Speichermanagement, Ringe

Beitrag lesen

Tach,

ok, bin zwar kein Profi, aber du mußt halt mit mir Vorlieb nehmen, bis sich ein solcher meldet.

Was ich wohl verstanden habe ist das zuweisen von virtuellen Adressen, dahinter stehen echte Physikalische Adressen, ich hoffe das habe ich begriffen.
Doch ab wann werden die festgelegt, vom OS oder von der Hardware selbst?

Das ist eine Kombinationsarbeit, Zugriff auf den physischen Speicher hat die Hardware und potentiell in ring 0 laufender Code, also der Kernel des Betriebssystems

Kennst selbst das OS die echten Adressen nicht und arbeitet nur auf virtuellen?

Das OS kennt die Adressen, es verwaltet die Page-Table, in der die Zuordnung steht durch den sogenannten paging supervisor. Dieser ist auch dafür verantwortlich Daten aus externem Speicher in das RAM zu laden.

Und was wiederum hat das alles mit den Ringen zutun? Ring 0 kernel, Ring 1-3 Userspace.

Es ist ein Rechtesystem, je niedriger die Nummer desto priviligierter der Prozeß, zwischen den Ringen besteht ein gewisser Schutz, so darf ein auf Ring 3 laufender Prozeß nicht in den Speicherbereich eines höher priviligierten Prozesses zugreifen. Unsere modernen Betriebssysteme nutzen allerdings üblicherweise nur zwei der Ringe.

Kapiere das nicht.. und warum muss ein OS im obersten Speicherbereich liegen?

Wiederum Schutz, bei der klassischen Trennung bei x86 liegt der Kernel im letzten Gibibyte des vier Gibibyte großen virtuellen Adressraums, im Kernelmode sind die kompletten vier Gibibyte adressierbar, im Usermode nur die unteren drei, Programme im Userland können also den Adressraum des Kernels weder sehen noch überschreiben.

Ich habe 2GB, also bedeutet das, das mein OS (Ubuntu) nun nicht zwischen 0-1024MB sondern in 1024-2048MB liegt?

Die Trennung in High und Low Memory findet im virtuellen Adressraum, wohin dieser gemappt ist, ist dann ja wieder etwas anderes.

Und warum funktionieren nur dann Interrupts wenn ein Prozess einen fehler hat?

Das ist nicht so, ein Interrupt ist im wesentlichen eine außerordentliche Nachricht an die CPU, die aktuelle Arbeit zu unterbrechen, um auf eine nicht aufschiebbare Information zu reagieren.

mfg
Woodfighter