[hydrixOS] : Über Kernel 0.2.4

  • From: Friedrich Gräter <webmaster@xxxxxxxxxxx>
  • To: Mailingliste <hydrixos@xxxxxxxxxxxxx>
  • Date: Sat, 01 Jun 2002 20:14:41 +0200

Hallo,
in den letzten zwei Tagen habe ich den Kernel zu 60% neu programmiert. 
Der Grund war folgender: Das Segment-Modell von HydrixOS hat sich als 
eher unpraktisches und bremsendes Ding erwiesen. Unpraktisch, da gcc und 
viele andere C-Compiler gar kein segmentiertes Speichermodell 
unterstützen. Bremsend deswegen, da die Segmentierung eine 
Zwischenschicht ist, die viel zu viel Rechenzeit erfordert. Nun ist 
diese Zwischenschicht entfernt und HydrixOS läuft nun _wesentlich_ 
schneller und ist von 135 KB auf 92 KB geschrumpft.

Das hatte allerdings zur Folge, dass ein Teil der Systemaufrufe entfernt 
werden musste und der Rest der Systemaufrufe von Grund auf neu 
programmiert werden musste, was aber mittlerweile geschehen ist. Bei 
dieser Gelegenheit habe ich auch das Messageing-System mit verändert:

- HydrixOS hat nun etwas, das mit den Signalen von UNIX vergleichbar
   ist.

- Die Übersetzung von Botschaften übernimmt nun der Emulator/Kernel und
   nicht mehr eine Bibliothek im Usermode. Dies spart Zeit und verbessert
   die Kompatibilität zwischen den Hardware-Plattformen, da nun die
   Programme absolut nicht mehr wissen müssen, ob sie unter HydrixOS in
   einer Emulation laufen oder nicht. Möglich wurde dies, durch die
   Vereinheitlichung von Botschaften. Eine Botschaft besteht nun aus 5
   unsigned und 5 signed Integer-Werten. Sollte jemand mehr Daten
   zwischen Prozessen austauschen ist ein gemeinsam genutzter Speicher
   viel effizienter und sicherer.

- Die Speicherverwaltung wird nun den Emulatoren / den Programmen
   überlassen: Funktionen wie 'malloc' etc. können in den Bibliotheken
   der einzelnen Programme implementiert werden. Der Kernel erzeugt nur
   noch einen virtuellen Adressraum und bietet Dienste zur gemeinsamen
   Nutzung von Speicherbereichen über die grenzen virtueller Adressräume
   hin an. Was aber ein Programm in diesem virtuellen Adressraum macht
   und wie es sich diesen einteilt, kann nicht Aufgabe des Kernels sein,
   da dieser ja nicht weiß zu welchem Betriebssystem und zu welcher
   Hardware das Programm gehört.

Der Kernel läuft bereits, weist aber noch einen Bug auf, der die 
Veröffentlichung zurückhält: Bei bestimmten Speichergrößen kann der 
Kernel nicht starten. Vermutlich wird irgendwo die Größe einer 
Systemtabelle falsch ausgerechnet.

Ansonsten läuft alles, soweit getestet, einwandfrei. Auch die Umstellung 
des v386-VPC auf das neue Speichermodell ging ohne Schwierigkeiten. Die 
Neu-Implementierung der Systemaufrufe ging wesentlich schneller voran, 
als beim ersten Mal - zumal ich viele Aufgaben an die Prozesse und an 
die Emulatoren übergeben habe.

Und das, was wirklich lange gedauert hat, das Entwerfen von HydrixOS, 
musste ich nicht noch einmal machen :-). Auch am restlichen 
Speichermodell (virtuelle Adressräume) und an den Funktionen zur 
Speichererkennung und Lowlevel-IRQ-Behandlung habe ich nichts geändert.

Ich hoffe es nimmt mir niemand übel, dass ich die nächste HydrixOS 
Release 0.2.4 nenne, denn bei so vielen Änderungen kann ich das einfach 
nicht mehr Bug-Fix-Release nennen :-). Wann der Kernel 0.2.4 rauskommt 
und was in den Kernel noch alles reinkommt, kann ich jetzt noch nicht 
sagen - das hängt davon ab, wie buggy der überarbeitete Kern ist.

Falls gewünscht kann ich aber auch eine quasi-'Unstable' Release machen 
("unstable" ist bei einer Alpha-Version eines Betriebssystems eher 
relativ :-))

cu

FG


-- 
HydrixOS Developers Mailing List

Administration: webmaster@xxxxxxxxxxx
Archive: http://www.freelists.org/archives/hydrixos

Hompage: http://www.hydrixos.de/

Other related posts:

  • » [hydrixOS] : Über Kernel 0.2.4