NerdyKernel — Änderungen 9555 → 9557

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]]