[hydrixOS] : HydrixOS Newsletter - HydrixOS 0.0.3 fertig

  • From: Friedrich Graeter <webmaster@xxxxxxxxxxx>
  • To: undisclosed-recipients:;
  • Date: Sun, 20 Apr 2003 14:04:23 +0200

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

Other related posts: