Skip to content
Snippets Groups Projects
Commit 3023e868 authored by Paul Weiß (Poohl)'s avatar Paul Weiß (Poohl)
Browse files

U6 Ready for submission

parent a7ef6491
No related branches found
No related tags found
No related merge requests found
......@@ -6,7 +6,8 @@
static first_level_pagetable l1table;
void init_first_level_pagetable() {
// 1:1 mapping for all memories with priv-only access and domain 0
// all initiallization applies to domain 0
// 1:1 mapping for all memories with priv-only access
for (uint i = 0; i < 4096; ++i) {
l1table.desc[i] = (i << 20) | (AP_RW_NONE << 10) | 0b10;
}
......@@ -15,18 +16,19 @@ void init_first_level_pagetable() {
l1table.desc[i] = (AP_NONE_NONE << 10) | 0b10;
for (uint i = (UNDEF_MEMORY2 >> 20); i < 249; ++i)
l1table.desc[i] = (AP_NONE_NONE << 10) | 0b10;
// make userland acessible by users
uint userland_desc = EXTERNAL_SRAM >> 20;
l1table.desc[userland_desc] = (userland_desc << 20) | (AP_RW_R << 10) | 0b10;
for (uint i = 0; i < 63; ++i) {
l1table.desc[userland_desc + 1 + i] |= (AP_RW_RW << 10);
}
// modify the mapping to switch 1MB of sram with 1MB of undef memory
l1table.desc[(EXTERNAL_SRAM + 17*MEGABYTE) >> 20] = (UNDEF_MEMORY1) | (AP_RW_RW << 10) | 0b10;
l1table.desc[(UNDEF_MEMORY1) >> 20] = (EXTERNAL_SRAM + 17*MEGABYTE) | (AP_RW_RW << 10) | 0b10;
}
void init_mmu() {
asm volatile( // set domain 0 as manager
asm volatile( // program to be domain 0 client
"mov r0, #0x1\n"
"mcr p15, 0, r0, c3, c0, 0"
: : : "memory");
......
# Auswahlstrategien
Alle Ansätze haben im worst case bei Verwendung einer linked list von freien Speichersegmenten eine Laufzeit von O(n), da alle freien Stücke auf "fit" überprüft werden müssen. Im average case hat Best-fit (fast) immer eine Laufzeit von O(n) da man sich erst nach Überprüfung aller Optionen sicher sein kann die beste gefunden zu haben. Sowohl Next- als auch First-fit finden im bei Erfolg vor Überprüfung aller Optionen ein passendes Speichersegment, jedoch muss First-fit Erfahrungsgemäß mehr kleine Stücke zu Beginn überprüfen, da es dazu tendiert alle Anfragten an den Anfang des Speicherbereichtrs zu allokieren und dabei viele kleine unbrauchbare Fragmente zu erzeugen.
Die Laufzeit von Best-Fit lässt sich auf O(log n) durch die Verwendung eines nach Speichergröße sortierten Binärbaumes reduzieren.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment