NerdyKernel — Änderungen 6804 → 6805

Zeile 22: Zeile 22:
  
 
== Kernel-Design ==
 
== Kernel-Design ==
−
* normaler Kernel
+
=== 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
+
==== Kommunikation ====
−
*** x86
+
===== 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
+
===== 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
+
==== Speicherverwaltung ====
−
*** physische 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
+
===== virtuelle Speicherverwaltung =====
−
**** i386
+
====== 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.
−
**** ARM
+
====== 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
+
=== 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.