| Zeile 1: |
Zeile 1: |
| | {{Infobox OS | | {{Infobox OS |
| | | Name = rizor-kernel | | | Name = rizor-kernel |
| − | | Version = 0.0.0.0 | + | | Version = 0.2.0.0 |
| | | Entwickler = [[Benutzer:rizor | rizor]] | | | Entwickler = [[Benutzer:rizor | rizor]] |
| − | | Lizenz = Closed-Source | + | | Lizenz = GPLv3 |
| | | Kernel = Microkernel | | | Kernel = Microkernel |
| | | API = Noch nicht näher geplant | | | API = Noch nicht näher geplant |
| − | | Binaerformat = [[ELF]] | + | | Binaerformat = eigenes Format |
| | | Sprache = [[C]] & [[Assembler]] | | | Sprache = [[C]] & [[Assembler]] |
| − | | IPC= Message-Passing, Message-Queues, RPC, Shared-Memory | + | | IPC= Message-Passing und Message-Queues |
| − | | Plattform = [[x86|i386]],[[x86-64|amd64]],[[ARM]] | + | | Plattform = [[x86|i386]] |
| − | | Homepage = In Planung | + | | Homepage = http://sourceforge.net/projects/rizor-kernel/ |
| | }} | | }} |
| | | | |
| − | rizor-OS ist ein Projekt, dass eine möglichst generische API bieten soll.
| + | Weitere Informationen folgen demnaechst, sobald ich einen neuen Patch in das Repository gelegt habe. |
| − | 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.
| |
| − | ====== amd64 ======
| |
| − | Bei dieser Version wird natürlich automatisch PAE benutzt.
| |
| − | ====== 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.
| |
| − | Der Hypervisor läuft standard-mäßig im amd64-Mode.
| |
| − | ==== Speicherverwaltung ====
| |
| − | Abgesehen davon, dass Paging im PAE-Modus betrieben wird, bietet der Hypervisor Shadow- und Nested-Paging
| |
| − | == Code-Statistik ==
| |
| − | Momentan gibt es noch keine Statistiken zu dem Kernel
| |
| − | | |
| − | == Kernel-Features ==
| |
| − | Da der Kernel noch in der Version 0.0.0.0 liegt, gibt es auch keine Features
| |
| − | | |
| − | == Roadmap ==
| |
| − | Wird gerade genauer definiert
| |
| | | | |
| | [[Kategorie:Betriebssystem]] | | [[Kategorie:Betriebssystem]] |