| Zeile 22: | Zeile 22: | ||
== Kernel-Design == | == Kernel-Design == | ||
| − | + | === normaler Kernel === | |
Der Kernel soll verschiedene Möglichkeiten der Kommunikation, der Speicherverwaltung und des Schedulings bieten. | Der Kernel soll verschiedene Möglichkeiten der Kommunikation, der Speicherverwaltung und des Schedulings bieten. | ||
| − | + | ==== Kommunikation ==== | |
| − | + | ===== x86 ===== | |
Die einzelnen Elemente (Syscalls, IPC, Module-Communication) bekommen ihre eigenen Trap-Gates. | Die einzelnen Elemente (Syscalls, IPC, Module-Communication) bekommen ihre eigenen Trap-Gates. | ||
Dadurch wird dem Kernel das Verwalten der einzelenen Elemente abgenommen. | Dadurch wird dem Kernel das Verwalten der einzelenen Elemente abgenommen. | ||
| Zeile 35: | Zeile 35: | ||
Außerdem kommunizieren die Tasks über ein extra Interface mit den Modules. | Außerdem kommunizieren die Tasks über ein extra Interface mit den Modules. | ||
Dadurch wird der Overhead der normalen IPC minimiert. | Dadurch wird der Overhead der normalen IPC minimiert. | ||
| − | + | ===== ARM ===== | |
Bei dieser Architektur läuft alles über Syscalls ab und dadurch wird der Aufwand des Kernels größer, was sich allerdings nicht vermeiden lässt. | Bei dieser Architektur läuft alles über Syscalls ab und dadurch wird der Aufwand des Kernels größer, was sich allerdings nicht vermeiden lässt. | ||
Damit der Aufwand geringer ausfällt, werden die einzelnen Syscall-Handler in Hash-Tables gespeichert. | Damit der Aufwand geringer ausfällt, werden die einzelnen Syscall-Handler in Hash-Tables gespeichert. | ||
Dadurch kann der zutreffende Handler schneller aufgerufen werden. | Dadurch kann der zutreffende Handler schneller aufgerufen werden. | ||
| − | + | ==== Speicherverwaltung ==== | |
| − | + | ===== physische Speicherverwaltung ===== | |
Hierbei gibt es mehrere Wahlmöglichkeiten zur Verwaltung. | Hierbei gibt es mehrere Wahlmöglichkeiten zur Verwaltung. | ||
Zum einen kann zwischen 4KiB- und 4MiB-Blöcken gewählt werden, dann kann man auch noch zwischen Bitmaps, Stacks und einer Mischung aus beiden wählen. | Zum einen kann zwischen 4KiB- und 4MiB-Blöcken gewählt werden, dann kann man auch noch zwischen Bitmaps, Stacks und einer Mischung aus beiden wählen. | ||
Bei der Mischung soll Performanz mit Minimierung des Speicheraufwands kombiniert werden. | Bei der Mischung soll Performanz mit Minimierung des Speicheraufwands kombiniert werden. | ||
| − | + | ===== virtuelle Speicherverwaltung ===== | |
| − | + | ====== i386 ====== | |
Hierbei kann zwischen dem normalen Paging, PSE und PAE gewählt werden. | Hierbei kann zwischen dem normalen Paging, PSE und PAE gewählt werden. | ||
Welche Version benutzt werden soll, wird beim Compile-Vorgang definiert. | Welche Version benutzt werden soll, wird beim Compile-Vorgang definiert. | ||
| − | + | ====== amd64 ====== | |
| + | Bei dieser Version wird natürlich automatisch PAE benutzt. | ||
| + | ====== ARM ====== | ||
Die Speicherverwaltung wird je nach MMU definiert. | Die Speicherverwaltung wird je nach MMU definiert. | ||
| − | + | === Hypervisor === | |
Der Hypervisor soll nur die CPUs bzw. Prozessoren verwalten und am Ende nur dafür zuständig sein soll, welche VM welchen Interrupt behandelt. | Der Hypervisor soll nur die CPUs bzw. Prozessoren verwalten und am Ende nur dafür zuständig sein soll, welche VM welchen Interrupt behandelt. | ||
Dadurch liegt die Hauptaufgabe bei den VMs und der Hypervisor hat nur einen geringen Verwaltungsaufwand. | Dadurch liegt die Hauptaufgabe bei den VMs und der Hypervisor hat nur einen geringen Verwaltungsaufwand. | ||