{{Infobox OS | Name = rizor-OS | Version = 0.0.0.0 | Entwickler = [[Benutzer:rizor | rizor]] | Lizenz = Closed-Source | Kernel = Microkernel | API = Noch nicht näher geplant | Binaerformat = [[ELF]] | Sprache = [[C]] & [[Assembler]] | IPC= Message-Passing, Message-Queues, RPC, Shared-Memory | Plattform = [[x86|i386]],[[x86-64|amd64]],[[ARM]] | Homepage = In Planung }} rizor-OS ist ein Projekt, dass eine möglichst generische API bieten soll. Dadurch soll erreicht werden, dass man den Kernel möglichst schnell auf beliebige Plattformen portieren kann. Außerdem soll der Kernel die Möglichkeit bieten ein reiner Hypervisor zu sein. Das soll eine Virtualisierung mit möglichst wenig Aufwand ermöglichen, wodurch die VMs schneller werden. == Entwickler == * [[Benutzer:rizor | rizor]] == Kernel-Design == * normaler Kernel 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. Dadurch wird dem Kernel das Verwalten der einzelenen Elemente abgenommen. Bei der Initialisierung wird den Syscalls standardmäßig die 0x80 als Interrupt-Nummer zugewiesen. Die einzelnen IPC-Komponenten beantragen beim IDT-Manager eigene Interrupt-Gates an und registrieren eigene Handler. Das gleiche mach auch die Module-Communication. Wenn nun ein Task eine Nachricht abschicken möchte, fragt er über Syscalls die Interrupt-Nummer ab und löst dann den Interrupt aus. Somit muss der Kernel nur einmal bemüht werden und der IPC-Request kann schneller abgearbeitet werden. Außerdem kommunizieren die Tasks über ein extra Interface mit den Modules. 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. Damit der Aufwand geringer ausfällt, werden die einzelnen Syscall-Handler in Hash-Tables gespeichert. Dadurch kann der zutreffende Handler schneller aufgerufen werden. ** Speicherverwaltung *** physische Speicherverwaltung 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. 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. Welche Version benutzt werden soll, wird beim Compile-Vorgang definiert. **** ARM 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. Dadurch liegt die Hauptaufgabe bei den VMs und der Hypervisor hat nur einen geringen Verwaltungsaufwand. Außerdem soll er die Möglichkeit bieten, dass man der VM bestimmte Hardware ein- bzw. ausblenden kann. Dadurch soll erreicht werden, dass die VMs nur die Hardware sehen, die sie auch benutzen dürfen. [[Kategorie:Betriebssystem]]