HydrixOS Newsletter ======================================================================== Hallo, dieser Newsletter ist mal wieder einer der Größeren und enthält verschiedene Themen rund um die Entwicklung von HydrixOS. Ich hoffe, dass die Länge nicht erschlagend ist - dennoch handelt es sich hier um viele wichtige Informationen rund um HydrixOS, die sich in letzter Zeit angesammelt haben. Themen: ======= 1. HydrixOS 0.0.3 - Ein Überblick 2. Maßnahmen zur Beschleunigung von HydrixOS 3. Die weitere Entwicklung 1. HydrixOS 0.0.3 - Ein Überblick --------------------------------- Heute konnte endlich wieder nach langer Zeit eine neue HydrixOS-Release, die HydrixOS WPD 0.0.3, freigegeben werden. Die aktuelle Version enthält im wesentlichen den Kernel 0.2.6, die HyApiLibC 0.0.2 und das HydrixOS Handbuch 1.2. Im Kernel kam es wieder zu wichtigen Veränderungen: Der Scheduler wurde verbessert - auch wenn er nach wie vor nicht optimal arbeitet. Desweiteren wurde der Kernel unterbrechbar gemacht - d.h. wenn es im Kernel zu einer Wartesituation kommt (z.B. weil eine Speicherseite nicht verfügbar ist), kann der Kernel unterbrochen werden und ein anderer Thread im Kernel- oder Usermodus weiterarbeiten, bis jener Thread wieder bereitsteht. Auch wurde in den Kernel die Schnittstelle zu einem externen Pageing-Dämon aufgebaut, so dass ein externer Prozess die komplexere Speicherverwaltung flexibel übernehmen kann. Dieser externe Pageing-Dämon übernimmt unter HydrixOS eine wichtige Rolle - er ermöglicht u.a. die Auslagerung von Speicherseiten aus dem RAM auf andere Medien (z.B. Festplatte), um einer Speicherknappheit entgegenzuwirken und bietet zudem Dienste zur gemeinsamen Nutzung von Speicherseiten zwischen zwei Prozessen an (unter HydrixOS oft "shared memory" genannt). In der HydrixOS-API-Bibliothek HyApiLibC wurden alle API-Aufrufe nun implementiert, die keines externen Prozesses (z.B. Pageing-Dämon, Vermittlungsserver) bedürfen. Im HydrixOS-Handbuch wurden die Spezifikationen für den Pageing-Dämon hinzugefügt. Diese Spezifikationen beschreiben einerseits, wie Kernel und Pageing-Dämon interagieren, andererseits aber auch, wie Benutzerprozesse und Pageing-Dämon zusammenarbeiten können. Es existieren nun auch aktualisierte und verbesserte Spezifikationen für den sog. Vermittlungsserver und die Daetisystemschnittstelle von HydrixOS. Der Vermittlungsserver ist ein Dienst, der soz. als Referenz für alle Dateisystemdienste (sog. Dateisystemserver) unter HydrixOS agiert. Dateisystemserver bieten für Programme Funktionen zum Zugriff auf Dateien in Verzeichnisstrukturen an. Diese Dateien können tatsächliche Dateien auf Festplatten sein - können aber auch Abstraktionen von Geräten und anderen Objekten sein. So könnte z.B. eine Datei "/devc/console/keyb" die Tastatur abstrahieren und somit einen Zugang zur Tastatur über Standard-Dateioperationen, wie öffnen, lesen oder schreiben anbieten, was die Steuerung von Geräten erheblich vereinfacht. Will man z.B. die Tastatureingaben lesen, liest man aus jener Datei 'keyb' wie aus einer normalen Datei. Will man bestimmte Befehle an den Tastaturtreiber senden, schreibt man in diese Datei. Dieses Verfahren erspart komplexe Nachrichtenprotokolle und ermöglicht prinzipiell gleichzeitig die Integration von Geräten über Netzwerke. Dieses Konzept entspricht in etwa dem UNIX-üblichen Konzept - mit dem Unterschied, dass es sich nicht um Module des Kernels handelt, sondern um sauber getrennte Prozesse, die diese Dateisystemdienste anbieten. Das Dateisystemmodell von HydrixOS ist vom Kernel komplett entkoppelt, da HydrixOS ein Mikrokernel-artiges System ist. 2. Maßnahmen zur Beschleunigung von HydrixOS -------------------------------------------- Der Gedanke daran, dass HydrixOS auf Grund seiner Emulationsarchitektur enorm langsam im Verhältnis zu anderen Systemen ist, mag - vollkommen berechtigt - für viele sehr sehr skeptisch betrachtet werden und HydrixOS eher in die Ecke der Betriebsystemversuchskaninchen stellen. Ein Betriebssystem, das 10 mal langsamer ist als alle anderen, ist völlig inakzeptabel. Daher habe ich ein Verfahren entwickelt, mit dem HydrixOS bis Kernel-Version 0.3.0 (die derzeitige Version ist 0.2.6) für plattform-kompatible Programme wesentlich schneller wird. Das bisherige Problem ist, dass z.B. ein i686-Programm auf einem i686 unter HydrixOS sinnloserweise emuliert wird. Dies ist auf Grund der portablen Struktur von HydrixOS erforderlich - da sowohl Prozessverwaltung, als auch Pageing völlig architekturunabhängig arbeiten und gemäß des HydrixOS-Konzept auch so arbeiten sollen. Um dieses Problem zu lösen, habe ich einige Maßnahmen entworfen, welche es ermöglichen sollen, dass die Programme nach außen von Pageing-Dämon und Kernel normal behandelt werden können - jedoch bei der Ausführung durch den VPC dann direkt auf der CPU arbeiten dürfen. Der wichtigste Teil ist hierbei, dass es zwei Pageing-Systeme geben wird - das normale, portable HydrixOS-Pageing für Kernel und Pageing-Dämon nach außen hin und das von der Hardware angebotene Pageing, das sozusagen das Verhalten des HydrixOS-Pageing imitiert. Wichtig ist hierbei, dass alle Veränderungen an den HydrixOS-Pagetables in die Hardware-Pagetables des Prozesses synchronisiert werden. Hierfür wurde eine Zwangsmaßnahme in den HydrixOS-Spezifikationen eingeführt, dass sowohl Pageing-Dämon, als auch Kernel bei Änderungen an Hardware-Pages diese Änderungen zu vermerken haben und dann direkt (Kernel) oder indirekt (Pageing-Dämon) eine Synchronisationsroutine im Kernel aufrufen müssen. Die direkte Ausführung der Programme wird in die nicht-portable Hardware-Schicht des Kernels eingebettet und muss für jede Kernel-Portierung angepasst werden, wenn die "nativen" Programme der jeweiligen Plattform direkt ausgeführt werden können müssen. Die jeweiligen VPCs und das VPCI werden ebenfalls so angepasst werden, dass der Kernel einerseits prüfen kann, welcher Task direkt und welcher nicht direkt ausgeführt werden kann und dass die Module für die direkte Ausführung von Programmen z.B. Ausnahmefehler an die VPCs weiterleiten. Diese Teil-Virtualisierung ist ein ganzes Stück Programmierarbeit und daher wird sie wohl erst Schritt für Schritt in den Kernel eingebaut werden können. Die Kernel-Version 0.3.0 ist daher nicht zu pesimistisch, zumal noch keine Details im HydrixOS-Handbuch derzeit niedergeschrieben sind. Dieser technische Schritt wird übrigens für die beschleunigte Emulation von nicht-binärkompatiblen Programmen durch Binärübersetung, die ersten Weichen stellen. Die Binärübersetzung soll Programme, die auf der jeweiligen Hardware nicht direkt arbeiten, anstatt diese zu Emulieren in den Maschinencode der jeweiligen Hardware übersetzen. Da dies jedoch eine sehr aufwendige Technologie ist, kann derzeit nichts näheres hierzu erwähnt werden, bis auf, dass eben jene direkte Ausführung die ersten Weichen hierfür stellen. 3. Die weitere Entwicklung -------------------------- Wie geht es nun weiter mit HydrixOS? In den nächsten Versionen werden einerseits die aus Teil 2 beschriebenen Schritte zur direkten Ausführung nach und nach vollzogen, andererseits beginnt nun der Aufbau des Systems jenseits des Kernels: Es wird nun der Pageing-Dämon und der Vermittlungsserver gemäß den Spezifikationen umgesetzt werden, so dass - wenn diese fertig sind - erste Treiber und Systemprogramme entwickelt werden können. Diese zentralen Programme sind enorm wichtig, allerdings nicht sonderlich komplex und bauen stark auf dem bereits vorhandenen auf. Es hängt sicher mit davon ab, wie fehlerfrei das bisher implementierte arbeitet, aber auch wie richtig die Hintergedanken hinter dem Pageing-Dämon und dem Vermittlungsserver sind. Ich hoffe mit HydrixOS 0.0.4 den ersten Pageing-Dämon und mit Version 0.0.5 den ersten Vermittlungsserver veröffentlichen zu können. Bis bald, Friedrich Gräter --- Anmerkung ------------------------------------------------------- Dieser Dienst wird Dank der freundlichen Unterstützung von www.TheMasterz.de und www.freelists.org ermöglicht. Der Newsletter wird automatisch in die Mailingliste gepostet und an Leute gesendet, die diesen auf der HydrixOS-Homepage oder anderweitig bestellt haben. Er kann durch eine Mail an "newsletter@xxxxxxxxxxx" abbestellt werden. -- HydrixOS Developers Mailing List Administration: webmaster@xxxxxxxxxxx Archive: //www.freelists.org/archives/hydrixos