Erstellung von Bootservern

Bootserver werden im GRUB-Boutloader mit geladen und vom Resourcemanager aktiviert.

Warum dürfen die Adressen der Codesegmente nicht überlappen ?

Nach E-Mail: Im normalen Betrieb hat jede Task (?) seinen virtuellen Speicher und da beeinträchtigen sich verschiedene Tasks überhaupt nicht.

Das Problem taucht aber am Anfang auf, wo diese Abstraktionen noch nicht aufgebaut sind. Der Anfang heist hier die Nutzung des Resourcemanager rmgr oder sigma0 als Pager.
Ein Pagefault löst einen IPC an rmgr aus. Zwei gleiche Adressen werden hier als gleiche physikalische Adressen betrachtet. Dies kann nicht erlaubt werden.

Die Lösung ist die Verwendung eine anderen Pagers, der andere physikalische Seiten der auslösenden Task zuweist.

Wie kontrolliert man die Adressen der Segmente ?

Setzen der Startadresse

Script reloc

Nachkontrolle

objdump -h modul zeigt Adressen an: Beispielsweise Adresse 0x3ff000 wird in Linkerscript linux22/arch/l4/l4arch/vmlinux.lds eingetragen, und siehe an:
 0 .text         0009e1d6  003ff000  003ff000  00000080  2**4
                  CONTENTS, ALLOC, LOAD, CODE