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: //www.freelists.org/archives/hydrixos Hompage: http://www.hydrixos.de/