diff --git a/boards/portux/drivers/mmu.c b/boards/portux/drivers/mmu.c
index 245bb6ca25b4c4d4160228127a991b158e308db9..00b19be93c419390010e7f9c687afeda40f4b9b8 100644
--- a/boards/portux/drivers/mmu.c
+++ b/boards/portux/drivers/mmu.c
@@ -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");
diff --git a/theory/Aufgabe_6-1.md b/theory/Aufgabe_6-1.md
new file mode 100644
index 0000000000000000000000000000000000000000..dad395e3a58132bf8b5ad7137528c6f45c5bab3a
--- /dev/null
+++ b/theory/Aufgabe_6-1.md
@@ -0,0 +1,5 @@
+# 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.