Up Right L4

Adressräume

Hardware

Adressraum ist die Abbildung der Virtuellen Seiten auf die Physikalische Seite oder Nichtzugreifbarkeit, dabei gibt es Zugriffsattribute (Read-Only,readwrite). Die Abbildung wird durch TLB und die Seitentabellen in der MMU realisiert.

L4 μ-Kern

verbirgt das HW-Konzept, sonst kann kein Schutz garantiert werden.
Dieses muß gezämt werden, aber muss die beliebige Implementierung von Schutz (und nicht-Schutz) durch Tasks auf dem Userlevel erlauben. [Liedtke1995]

Operationen vom Kern, die Speichermanagement und Paging (d.h. das Ein- und Auslagern von Seiten auf einen Hntergrundspeicher wie eine Festplatte) ausserhalb des μ-Kerns erlauben:[Liedtke1995]:
grant
der Besitzer des Adressraums kann eine beliebige Seite aus seinem Adressraums an den Empfäger übergeben (der dies erlauben muss), wobei sie aus dem Adressraum des Vorbesitzers entfernt wird und in den Adressraum des Empfägers eingebunden wird.
map
der Besitzer des Adressraums kann eine beliebige Seite aus seinem Adressraums in einen anderen Adressraum abbilden (der Empfäger muss dies erlauben). Damit ist die Seite in beiden Adressrämmen zugreifbar.
flush
hierbei werden alle mit grant oder map überlassenen Seiten von allen anderen Addressräumen (bis auf den eigenen) entfernt. (Die Empfäger haben durch die Erlaubnis bei grant oder map zugestimmt, dass sie Seiten potentiell entzogen werden.

Mapping and Granting sind Operationen auf der Seitentabelle, es werden keine Daten kopiert.

User level Pager nutzen diese Operationen. Seitenfehler werden vom Kern mit IPC zu dem jeweiligen Pager weitergereicht.
Threads können sich dyamisch mit individuellen Pagern verbinden.

Die Adressräume wurden rekursiv konstruiert durch Server auf Nutzerebene:

sigma0 :
initialer Adressraum, ist wesentlich der physikalische Hauptspeicher damit auch initialer Pager

(Deswegen wird ein modul sigma0 auch beim booten geladen (und dem resourcemanager bekannt gemacht).

Flexpages:
logische Seiten der Größe 2^n.

Weitere Adressräume können durch granting, mapping, und unmapping von sog. Flexpages konstruiert werden.

Damit kann man verschiedene Speicherverwaltungen am dem mu-Kern implementieren.

I/O-Ports werden auch Teile des Adressraums gesehen und können genauso gemappt und ungemappt werden.

[ElphinstoneHeiser2013]: in neueren Kernen seit API Version N1 ABI, wurde die Rekursvität abgeschafft, nachdem man festgestellt hat, dass 20-50% des Kernspeichers durch die Abbildungstabelle eingenommen wird.
In L4-embedded git es die Abbildungen immer von Frames (näher an der Hardware → Leider ging die Möglichkeit der Delegation verloren.
seL4 hat dann wieder ein Speichemodell, das das wieder zulässt.


Informatik- und Netzwerkverein Ravensburg e.V Rudolf Weber