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