Virtual OS/2 International Consumer Education
VOICE Homepage: http://de.os2voice.org
Oktober 2001

[Inhaltsverzeichnis]
[Vorherige Seite] [Nächste Seite]
[Artikelverzeichnis]

editor@os2voice.org


Eine OS/2 Geschichtsstunde: Die Anfänge von OS/2

Von Michal Necasek © Oktober 2001, Übersetzung: Carsten Kettner

Die Entwicklung von OS/2 begann - nun ja, vor laaanger Zeit. Der wahrscheinlich wichtigste Punkt in der OS/2-Vorgeschichte war 1981 die Einführung des IBM Personal Computers (eine für IBM typische völlige Einfallslosigkeit als es zur Namensgebung des Produktes kam). Die Entwickler des IBM PC machten leider einen großen Fehler - sie unterschätzten grob die Beliebtheit und Bedeutung des PC. Natürlich wäre es dusselig gewesen, sich selbst die Schuld für den Mangel an Weitsicht zu geben. Wenn sie in die Zukunft hätten schauen können, hätten sie mit der Vorhersage für zukünftige Geschäfte jede Menge Kohle machen können und müßten sich nicht mit der Computerentwicklung beschäftigen. Auf jeden Fall war es der ursprüngliche Plan, 250.000 PCs in den nächsten fünf Jahren zu verkaufen. Tatsächlich verkaufte IBM viel mehr, sogar noch bevor der PC offiziell herausgebracht war! Nicht zu vergessen die nächsten fünf Jahre....Und sogar heute noch leidet die PC Architektur unter vielen Entwicklungsentscheidungen, die vor zwanzig Jahren getroffen wurde. Es muß noch einmal gesagt werden, daß die Entscheidungen zu der Zeit, zu der sie getroffen wurden, schlecht waren, aber gerade das zuviel des Guten (Rückwärts-Kompatibilität) kann schlecht sein.

Der IBM PC hatte eine Eigenschaft, die ihn zu einer beispielslosen Popularität trieb: er war ein offenes System. IBM veröffentlichte alle Hardware-Spezifikationen und jedermann konnte Add-on-Karten für den PC und sogar vollständige "Klone" bauen. Dies erzeugte bald einen riesigen Markt für alle neuen Hardware-Hersteller. Die Qualität war häufig lausig, aber das Zeug war billig und verkaufte sich wie warme Semmeln. Dies setzt sich bis zum heutigen Tag fort. Allgemein sagt man ja, daß, je mehr sich Dinge ändern, desto eher alles beim alten bleibt.

Auf der Softwareseite entschied IBM, einen Dritthersteller mit dem Schreiben eines Betriebssystems für den PC zu beauftragen. Die hübschen Geschichten darüber, wie PC-DOS  zum BS der Wahl für den PC wurde, sind schon woanders erzählt worden. PC-DOS selbst war alles andere als hübsch. Tatsächlich strapaziert die Bezeichnung "Betriebssystem" für DOS in jeglicher Version diese Definition mehr als ein klein wenig, und dies gilt insbesondere für PC-DOS 1.0. Aber zurück zur Geschichte. Genauso wie die PC-Hardware waren die Software-Komponenten sehr offen. Die Schnittstellen zu DOS und zum BIOS waren gut beschrieben und es war für Dritthersteller einfach, diese zu nutzen und zu erweitern. Diese enorme Flexibilität ist der Grund dafür, daß DOS selbst heute immer noch für einige Aufgaben genutzt wird.

Die DOS- und BIOS-Schnittstellen hatten leider auch einen Hauptmangel. Sie waren keine Wahnsinns-Leistungsträger und, was noch viel schlimmer ist, sie deckten nicht die vollständige Funktionalität der PC-Hardware ab (vor allem DOS versagte in dieser Hinsicht ernstlich). Dies bedeutete, daß viele Anwendungsprogramme  direkt auf die Hardware zugreifen mußten und DOS und das BIOS umgingen, um alle Vorteile der Hardware-Möglichkeiten auszunutzen. Dies ist das Bad Thing (TM), das daraus entstand und sowohl PC-Software als auch -Hardwareverkäufer (und -Anwender) für viele Jahre heimsuchte. Dazu aber später.

OK, wir sind nun in den frühen 80ern. Der PC ist ein beliebtes Bürowerkzeug, die Software- und Hardware-Märkte waren explodiert und praktisch jeder verkaufte Zeugs und schlaue Utilities für den PC. Aber die PC-Anwender waren nicht richtig glücklich (OK, die Menschen sind niemals richtig glücklich, aber das hat damit nichts zu tun; das ist eingebaut). Tatsächlich hatten sie gute Gründe für diese Unzufriedenheit:

Einige dieser Probleme könnten vielleicht rein mit Software auf einem besser entwickelten Betriebssystem gelöst werden. Aber andere brauchten übermäßige Hardware-Unterstützung, damit die Lösungen effektiv sind. Diese erweiterte Hardware schlug auf dem Markt 1984 ein und wurde IBM AT (Advanced Technology) genannt. Sie war wirklich deutlich fortschrittlicher als die Maschinen der PC- und der XT-Klasse. Die gesamte Hardware-Architektur erhielt eine komplette Überholung. Der ISA-Bus wurde auf 16-Bit (von 8-Bit) erweitert, es gab eine eingebaute Echtzeit-Uhr, High-Density Diskettenlaufwerke, bessere Hardware-Unterstützung, mehr Interrupt-Kanäle (IRQs), mehr DMA-Kanäle und so weiter. Viele Aspekte der PC-Architektur haben sich seit dem AT nicht mehr geändert. Einige, weil die Hardware einfach reifte (es gibt, zum Beispiel, soviel, was man mit einer Echtzeit-Uhr anstellen kann), andere (wie der Interrupt-Controller) blieben existent aufgrund der Erfordernis zur Rückwärtskompatibilität, was zum größten Segen und Fluch für die PC-Industrie wurde.

Aber der vielleicht größte Fortschritt wurde durch die CPU markiert. Der IBM AT protzte mit der Intel 80286 CPU (mit 6 MHz Frequenz, verglichen mit den 4,77 MHz 8088 CPUs im PC). Der 286er war immer noch eine 16-bit CPU, genauso wie ihre Vorgänger, aber er besaß eine neue größere Besonderheit: die geschützte Form der Arbeitsweise (Protected Mode). Der 8086 hatte nur eine Funktionsart, die später "Real Mode" genannt wurde (wahrscheinlich, weil, anders als im Protected Mode, alle Speicheradressen den "realen" physikalischen Speicherorten entsprach). Nach dem Booten lief der 286er im Real Mode und war (fast) vollständig kompatibel mit dem 8086er, nur schneller und mit einem etwas größeren und erweiterten Befehlssatz. Er konnte, ebenso wie der 8086er, 1 MB Speicher adressieren - übrigens konnte der 286er 1 MB + 64 KB adressieren, aber das ist hier nicht wichtig. Im Protected Mode konnte er jedoch mordsmäßige 16 MB Speicher adressieren - das war eine Menge, wenn man berücksichtigt, daß PCs mit 16 MB RAM zehn Jahre später häufiger anzutreffen waren. Aber besser als die enorme Speicher-Adressierung war die Fähigkeit, daß der Protected Mode, nun ja, wirklich geschützt war. Das bedeutet, daß der Speicherzugriff nicht "für alle frei" war - stattdessen gab es vier Ebenen (oder Ringe) des Schutzes, und weniger bevorzugter Code konnten den privilegierteren Komponenten keinen Speicher abknöpfen. Dies bedeutete, daß der Anwendercode den Betriebssystem-Code nicht versehentlich oder absichtlich überschreiben konnte und daß ebenso die Anwendungen voreinander geschützt waren. Genauso waren nun einige CPU-Befehle begrenzt zugänglich und konnten nur von Code mit ausreichendem Vorrecht ausgeführt werden, wie zum Beispiel der BS-Kernel oder Gerätetreiber. Ein Versuch, diesen Schutz zu durchbrechen löste einen Ausnahmefehler aus, der vom BS abgefangen wurde und gewöhnlich die amoklaufende Anwendung beendete. All Schutzkontrollen wurden mit einem minimalen Laufzeit-Overhead in der Hardware ausgeführt.

Sowohl IBM als auch Microsoft erkannten völlig die Probleme, die mit der Real-Mode DOS-Architektur einhergingen und arbeiteten in den frühen und mittleren 80igern an Lösungen. Es gab zwei bedeutende Produkte, die es bis in die Verkaufsregale schafften:

Beide Produkte erweiterten DOS auf signifikante Weise, litten aber gleichzeitig aufgrund der wackeligen Fundamente von DOS unter den vielen Mängeln.

Zur selben Zeit arbeitete Microsoft (über IBM weiß ich's nicht) an einem gänzlich neuen Betriebssystem, um DOS zu ersetzen. Anfang Januar 1983 begann Microsoft mit der Arbeit an einer Multitasking-Version von MS-DOS, die die Real-Mode Single-Tasking-Versionen ablösen sollte. Dieses Projekt erhielt Namen wie verrückt. Zunächst wurde es DOS 3.0 genannt (DOS 2.x war gerade aktuell). Aber dann lieferte Microsoft DOS 3.0 aus wie wir es kennen und das Projekt wurde zu DOS 4.0 umbenannt. Tatsächlich liefert Microsoft auch eine Version des Multitasking Real-Mode DOS 4.0 aus. Wenn Sie meinen, das sei falsch... naja, dann haben Sie unrecht. Es gab noch ein anderes DOS 4.0, das später ausgeliefert wurde und das die Linie der Real-Mode Single-Tasking DOS fortführte. Diese 'Spezialversion' von DOS 4.0 wurde angeblich nur an einige europäische OEMs verkauft und war niemals für den Endverbraucher gedacht. Ich habe diese Version DOS 4.0 ebenfalls gesehen, die als eDOS bezeichnet wurde. Irgendwann, als die Arbeit am "echten" DOS 4.0 begonnen wurde, wurde die weiterentwickelte Version erneut umbenannt in - wieder völlig kurzsichtig - (Sie erraten es) DOS 5.0. Und wiederrum war dies nicht der endgültige Name. Stattdessen stieg IBM irgendwann 1985 in das Projekt ein und unterzeichnete eine Entwicklungskooperation mit Microsoft, die beiden Unternehmen Besitzrechte am entstehenden Produkt gab. Nach einiger Zeit wurde das Projekt in CP/DOS umbenannt - dies stand für Control Program/DOS und war offensichtlich ein Wortspiel von PC-DOS. Als hätte es nicht bereits schon genug Namensänderungen gegeben, war CP/DOS auch nicht der endgültige Name. Kurz vor der Auslieferung wurde das Produkt in OS/2 umbenannt - wahrscheinlich damit's in die neue IBM-Produktlinie, PS/2 paßt (nein, das heißt nicht Playstation, sondern Personal System/2). Meiner Meinung nach verursachte dieser Name mehr Schaden als Gutes, weil die Leute den total falschen Eindruck bekamen, daß OS/2 irgendwie IBM-Hardware zum Laufen brauchte. Als ob es nicht genug Namen gegeben hätte, hieß OS/2 während der Entwicklungsphase 286DOS (was auf irgendeine Weise auch Sinn machte).

Der PS/2 an sich war ein interessantes Biest. In vielerlei Hinsicht war er ein radikaler Abschied vom AT. Der PS/2 besaß eine als Microchannel (oder MCA) bezeichnete völlig neue Busarchitektur. Die war wirklich sehr gut. Die Performance (von MCA) übertraf ISA bei weitem. Während ISA 5 MB/sek, oder wenn man Glück hatte, mehr übertrug, konnte MCA leicht Transferraten von 20, 40 oder gar 80 MB/sek erreichen. MCA hatte auch fortschrittliche Eigenschaften wie Busmastering und eine Art Plug and Play-Unterstützung über Referenzdisketten. Der PS/2 hatte auch eine neue BIOS-Unterstützung, die Advanced BIOS oder ABIOS genannt  und für Protected Mode-Operationen entwickelt wurde. Darüber hinaus führte der PS/2 den VGA-Grafikstandard und später XGA ein.

Leider machte IBM einen schwerwiegenden Fehler: Sie bauten den MCA proprietär und zogen von den Hardware-Händlern Lizenzgebühren ein. Dies hatte den vernichtenden Effekt, daß die PC-Welt sehr bald MCA links liegen ließ und ungefähr fünf Jahre später zum Schluß kam, daß ISA tatsächlich so schlecht war und PCI viele MCA-Eigenschaften aufnehmen sollte. NCR war einer der sehr wenigen Lizenznehmer.

Aber ich schweife schon wieder ab, zurück zu CP/DOS, oder besser, OS/2. Die erste Version von OS/2 wurde Ende 1987 herausgegeben. In einigen Aspekten ähnelte OS/2 DOS sehr stark und in einigen anderen sah es überhaupt nicht wie DOS aus. Die Kommandozeile von OS/2 1.0 sah fast genauso aus wie die von DOS. Es gab hier alle bekannten Befehle wie DIR, COPY, DEL und so weiter. Aber die internen Befehle waren von DOS weit entfernt. Tatsächlich brach OS/2 zu neuen Ufern auf und führte in den PC viele neue fortschrittliche Techniken ein, die vorher nur in größeren Systemen zu finden waren. Ich weiß nicht, wer das Design des OS/2-Kernels mehr beeinflußt hat, IBM oder Microsoft. Ich kenne aber die Namen der führenden Architekten von OS/2: bei Microsoft waren dies Gordon Letwin und bei IBM Ed Iacobucci (später der Mitbegründer und CEO von Citrix).

Es ist interessant, daß OS/2 1.0 aufgrund von eingeschränkten Zeitvorgaben nicht alle vorgesehenen Eigenschaften aufwies (wieder einmal Dinge, die sich niemals ändern...). Das offensichtlich am meisten vermißte Feature war der Presentation Manager (Codename Winthorn während der Entwicklung), aber es gab eine Anzahl anderer weniger sichtbarer Eigenschaften, die fehlten und später in OS/2 1.1 und 1.2 eingebaut wurden, wie bspw. die installierbaren Dateisysteme (IFS, installable file systems).

OS/2 1.0 war in der Tat ein radikaler Abschied von DOS und wies eine Anzahl wichtiger Besonderheiten auf, die DOS niemals hatte - die andere BSe erst viele Jahre später zu unterstützen begannen.

Das vielleicht größte Hindernis, das den Entwicklern im Weg stand, war die DOS-Unterstützung. Dies lag an der Kombination mehrerer Faktoren: Keines dieser Probleme war unüberwindlich, aber ihre Kombination war tödlich. Man könnte sagen, daß IBM und Microsoft für ihre Jugendsünden  - die ersten Entwicklungsentscheidungen von 1981 - bezahlen mußten. Und natürlich traf sie die enorme Beliebtheit von DOS wie ein Bumerang - sie mußten DOS-Unterstützung in OS/2 leisten, um überhaupt eine Chance am Markt zu haben.

Die OS/2-Entwickler berücksichtigten übrigens eine Möglichkeit, um DOS-Anwendungen im Protected Mode laufen zu lassen, aber es gab zuviele Probleme mit diesem Ansatz. Die endgültig Entwicklung, für die sie sich entschieden, war eine einzelne Vollbild-DOS-Sitzung, die nicht im Hintergrund ausgeführt wurde - andererseits liefen die OS/2-Programme weiter, sogar während die DOS-Sitzung aktiv war. Dieses erforderte ein häufiges Umschalten zwischen Protected- und Real Mode (falls die DOS-Sitzung im Vordergrund lief), das demzufolge einiges an Zusatzarbeit erforderte, um die Performance akzeptabel zu halten. Ein Beispiel waren die Gerätetreiber, die diese zusätzlichen Arbeit benötigten: Sie mußten beide Modi unterstützen und sowohl im Protected- als auch im Real Mode laufen, um die Anzahl Umschaltvorgänge zu minimieren.

Der DOS-Code in OS/2 basierte unzweifelhaft auf dem aktuellen Source Code in MS-DOS/PC-DOS, aber mit einer Menge Änderungen. Der Dateisystem-Code beispielsweise lief nur im Protected Mode, so daß das BS bei Dateizugriffen in den Protected Mode umschalten mußte. Dies wurde später jedoch zu einem großen Plus, als die installierbaren Dateisysteme eingeführt wurden: Die OS/2-DOS-Box hatte zum Beispiel, keine Probleme auf Dateien auf HPFS-Datenträgern zuzugreifen.

Der gesamte Protected Mode-Code war andererseits ein funkelnagelneues Markenzeichen mit all diesen oben beschriebenen netten Eigenschaften. Der Kernel und die System-DLLs waren aus zwei Gründen zum größten Teil in Assembler geschrieben:

Jetzt wollen wir mal einen Blick auf das aktuelle OS/2 1.0-Paket werfen. Ich bin stolzer Besitzer von vier originalen IBM 5.25" HD-Disketten (Danke, John!). Sie sind übrigens als Pre-Release gekennzeichnet, aber meines Wissens nach enthalten sie den aktuellen 1.0-Auslieferungscode. Der Inhalt gleicht in vielerlei Hinsicht DOS. Der OS/2-Loader und -Kernel sind in zwei versteckten Dateien namens IBMBIO.COM bzw. IBMDOS.COM - nur IBMDOS.COM ist mit 250 KB deutlich größer als die DOS-Version. Es gibt all die bekannten externen Befehle wie FIND, SORT, SUBST, BACKUP, XCOPY und so weiter. Aber es gibt ebenso einige starke Utilities wie TRACE oder CREATEDD - ja, OS/2 1.0 konnte schon Systemabläufe aufzeichnen und Speicherentleerung durchführen. Darüber hinaus gibt es ein ganzes Bündel dieser unheimlichen .DLL-Dateien wie DOSCALL1.DLL, VIOCALLS.DLL und so weiter. In DOS gab es so etwas nicht im entferntesten. Die Überprüfung dieser Module legten eine interessante Tatsache offen - die Beschreibung in vielen dieser DLLs sah so aus:
IBM Personal Computer DOS  Version 0.00  SesMgr
- das ist aus SESMGR.DLL. Ich erwähnte ja schon, daß die endgültigen Namensänderungen in Entwicklungsphase spät erfolgten.

In OS/2 1.0 gab es nicht viel anzusehen. Die Schnittstelle war reiner Text - der versprochene Presentation Manager war noch nicht fertig und die Kunden wollten etwas haben, um damit zu spielen. Wie gesagt, es ähnelte sehr stark DOS. Aber nach Eingabe von Ctrl-Esc erschien die Programm-Auswahl. Sie erlaubte es den Anwendern, sowohl zwischen den Sitzungen hin- und herzuschalten als auch neue Sitzungen zu starten. Die Programm-Auswahl sah so aus (dies ist ein Screenshot aus dem OS/2 1.0 Tutorial-Programm):

Das theoretische Maximum waren 16 Sitzungen, weil aber das BS bereits einige davon belegte, war das tatsächliche Limit 12 Anwendersitzungen. Aber dies waren immer noch 11 Sitzungen mehr als in puren DOS - und wahrscheinlich trotzdem nicht der stärkste limitierende Faktor, weil es nur soviele Aufgaben gibt wie der Mensch zur gleichen Zeit erledigen kann. Der ursprüngliche Plan war, den Presentation Manager in einer einzelnen Sitzung (oder Bildschirmgruppe) unter der Programm-Auswahl laufen zu lassen, aber in der aktuellen Ausführung wurden die Funktionalität des PM und der Aufgaben-Umschaltung zur PMSHELL verschmolzen. Wenn Sie mich fragen, war dies nicht die beste Entscheidung..., aber IBM und Microsoft fragten mich natürlich nicht. Damals in den späten 1980ern konnte ich für viel verwertbaren Input noch nicht sorgen, weil ich selbst zu dieser Zeit nicht wußte, was ein PC war und ich hatte sicherlich auch niemals etwas von OS/2 gehört. Trotzdem fand ich Computer sehr interessant - so lange jedenfalls wie ich coole Spiele darauf spielen konnte (zu meiner Verteidigung sollte ich sagen, daß ich mich damals nebenbei mit BASIC auf 8-Bit Mikrocomputern beschäftigte)

Die Programm-Auswahl war anpaßbar und hatte sogar eine Online-Hilfe (wieder ein Screenshot vom Tutorial):

Die Leichtgewichts-Textshell TSHELL für OS/2 2.x ist offensichtlich nach der frühzeitlichen Programm-Auswahl gebaut worden.

Das einzige mit OS/2 1.0 ausgelieferte Programm, das einigermaßen sexy aussah (OK, nicht ganz unattraktiv), war das Tutorial. Es war übrigens ziemlich gelungen. Der erste Bildschirm sah so aus:

Wie alt ist eigenlich dieser blaue Logo-Bildschirm? Das Tutorial hatte zwei Hauptteile - der eine stellt Multitasking und die Programm-Auswahl vor und der andere erklärte einige grundlegende Befehle sowie das Konzept der Verzeichnisse und Dateien.

Die Aufnahme dieser Screenshots war für sich genommen schon ein Abenteuer. Leider konnte ich OS/2 1.0 nicht installieren (wahrscheinlich weil ich keine genügend kleine Festplatte gefunden habe; die kleinste, die ich bekommen konnte, hatte 500 MB). Das Tutorial-Programm lief jedoch unter OS/2 1.3 und unter OS/2 4.5 (jawoll, das ist doch Abwärtskompatibilität!). Es besteht leider darauf, in einer Vollbild-Sitzung zu laufen. Da ich nicht der Typ bin, der sich leicht entmutigen läßt, schrieb ich zwei kleine Programme, die den Bildschirm einfingen und darstellten. Dank der Leistungsfähigkeit des OS/2 API war dies übrigens nicht sonderlich schwierig. Ich kann mich nur schütteln, wenn ich daran denke, wie man das unter DOS machen würde.

Aus der Sicht des Anwenders hatte OS/2 1.0 mehrere Mängel. Einige davon wurden in den späteren 1.x-Ausgaben gefixt, bei anderen dauerte die Beseitigung länger:

Auf dem Markt fand sich OS/2 in einer Bergauf-Schlacht wieder (einige Dinge ändern sich nie). Die Akzeptanz wurde durch eine Reihe von Faktoren behindert:

OS/2 FUD ist nichts wirklich neues. Hier ist ein Zitat aus der Kolumne Environments von Charles Petzold, die irgendwann Ende 1987 oder Anfang 1988 im PC Magazine veröffentlicht wurden:

Jetzt als Standpauke. Es gibt eine Menge Desinformation über OS/2, die in den vergangenen Monaten zirkulierte. Das meiste von dem Zeugs stammt von CEOs der Unternehmen, die mit Microsoft im Anwendungs- und Programmiersprachenmarkt konkurrieren. Faule Presse-Leute, die niemals OS/2 benutzt haben und es nicht besser wissen, verbreiten diese Unwahrheiten in der Öffentlichkeit.
Hat sich seitdem irgendwas geändert?

Im Großen und Ganzen war OS/2 1.0 weder der einschlagende Erfolg (sonst würden wir heute alle OS/2 benutzen) noch der totale Flop (sonst würde ich dieses hier nicht unter OS/2 4.5 schreiben). Es führte in der Tat eine ganze Anzahl neuer (und zumeist guter) Konzepte in die Welt der PCs ein. Folglich erfordert das Programmieren von OS/2-Anwendungen großes Feingefühl, vor allem von DOS-Programmierern, die es gewohnt waren, daß "es die Hardware schon richten würde". Plötzlich hielt OS/2 die Anwendungen davon ab, direkt auf die Hardware zu zugreifen und zwang sie, sich gefügig zu verhalten. Dies wurde jedoch sehr dadurch erleichtert, daß ein sauberes und leistungsstarkes API zur Verfügung stand. Daß dieses API wohlentwickelt war, wird durch die Tatsache bewiesen, daß die meisten OS/2 1.x-Anwendungen immer noch Jahre später unter den neuesten OS/2-Versionen und (in geringerem Ausmaß) unter Windows NT/2000 laufen, und daß ohne die Probleme, die mit der Virtualisierung von DOS- oder Windows 3.x-Anwendungen verbunden sind.

Das wichtigste ist vielleicht, daß OS/2 1.x eine solide Grundlage für OS/2 2.0 bildete, was für sich schon ein Quantensprung in der PC-Geschichte war. Die meisten in OS/2 1.0 eingeführten Konzepte erwiesen sich als so gut, daß sie in späteren Ausgaben nicht mehr signifikant geändert wurden. Hut ab vor den ursprünglichen Entwicklern und Ingenieuren von IBM und Microsoft.


[Artikelverzeichnis]
editor@os2voice.org
[Vorherige Seite] [Inhaltsverzeichnis] [Nächste Seite]
VOICE Homepage: http://de.os2voice.org