Mach: OS2 und Unix friedlich vereint

23.02.1990

Mach ist ein offenes Betriebssystem: Es stellt nur Grundfunktionen zur Verfügung. Dadurch wird es möglich, Unix zu integrieren. Ist aber auch eine Einbeziehung von OS/2 denkbar? Wo könnten dabei Probleme auftreten? Gerhard Heinzel* skizziert OS/2-spezifische Funktionen auf der Basis einer "Compatibility-Task" (CT) unter Mach.

OS/2 ist eine komfortables Ein-Platz-System, während Mach von vornherein für eine große Zahl unterschiedlicher Rechner-Konfigurationen konzipiert wurde. Ein wesentlicher Unterschied besteht beim Aufruf externer Prozeduren: Bei OS/2 führt der aufrufende Aktivitätsträger den Code der Prozedur direkt aus, unter Mach wird eine Nachricht mit dem Auftrag an die Task geschickt, die die entsprechende Prozedur enthält.

Pro Mach-System wird nur ein OS/2-System zur Verfügung gestellt. Dies bedeutet keine gravierende Einschränkung, da OS/2-Anwendungen wegen der erforderlichen Grafikfähigkeit typischerweise ohnehin nur auf Workstations und den wenigen Grafik-Stationen eines Mehr-Terminal-Computers laufen.

Ein OS/2 Thread entspricht im wesentlichen einem Mach-Thread. OS/2-Prozesse lassen sich daher durch Tasks mit zusätzlichen Threads zur Signalbehandlung simulieren. Die Verwaltung von zu Sessions zusammengefaßten Tasks kann innerhalb der Compatibility Task implementiert werden. Diese ist auch in der Lage, die Thread-Prioritäten zu verwalten und Threads bis auf den mit der jeweils höchsten Priorität zu blockieren.

Die OS/2-Speicherverwaltungs-Dienste werden am einfachsten durch einen speziellen Pager realisiert. Dieser kann auch Optionen wie "demand leading" und "discardable segments" anbieten sowie die Bereitstellung von "shared memory" realisieren "Die Named shared memory"-Segmente werden zusätzlich in einer Liste geführt.

Auch die anderen Konzepte der Prozeß-Koordinierung lassen sich in einfacher Weise implementieren: Pipes und Queues stellen lediglich eine komfortable Schnittstelle zur Nutzung gemeinsamer (Mach-)Speicherbereiche dar.

Diese Möglichkeit läßt sich durch Bibliotheksfunktionen erzielen. Semaphore können durch spezielle Threads innerhalb der Kompatibilitäts-Task implementiert werden, die über Nachrichten angesprochen werden. Signals werden von einem Thread innerhalb eines OS/2-Task empfangen, der das Umschalten auf eine Behandlungs-Routine bewirkt.

OS/2 kennt das Konzept des "installable file system". Daher ist es sinnvoll, die Mach-Möglichkeiten zur Integration spezieller OS/2-Dateisysteme zu nutzen, die dann auch Funktionen, wie "sharing" und "locking" implementieren. Der Übergang zu anderen Dateisystemen kann durch spezielle Tasks hergestellt werden.

Spezielle OS/2-Gerätetreiber und auch der Presentation Manager können auf die im Mach-Kernel vorhandenen Treiber aufgesetzt werden. Device-Monitore sind durch "Umleiten" der Nachrichten von "/" zum Treiber möglich. Die Frage, ob eine Unterstützung des I/O-Privilegs ohne Einschränkung der Sicherheitseigenschaften geschehen kann, müßte noch genauer untersucht werden.

Diese noch unvollständige Liste weist darauf hin, daß eine - zumindest teilweise - Integration von OS/2 in Mach durchaus möglich ist. Die häufigen Umschaltungen von OS/2-Tasks lassen dabei jedoch Ineffizienzen befürchten Weiterhin ist zu untersuchen, inwieweit die Integration von OS/2 (insbesondere des "real modes" von DOS) die Sicherheit von Mach beeinträchtigt.