1.3 UNIX
Linux hat das UNIX-Betriebssystem zum Vorbild. Während Microsoft Windows ein relativ junges System ist – das erste Windows erschien 1985 – reicht die Geschichte von UNIX bis ins Jahr 1965 zurück. Es hat somit inzwischen eine über 40-jährige Entwicklungsgeschichte hinter sich.
Sie sehen also, UNIX ist ein sehr altes Betriebssystem. Aber trotzdem hatte UNIX von Beginn an wichtige Merkmale, die z. B. von Microsoft erst sehr viel später implementiert wurden, teilweise sogar bis heute nicht.[Dass Microsoft manche »alten« Funktionen nicht in seine Produkte einbaut, hat den Grund, dass Microsoft schon immer den Fokus auf leichte Bedienbarkeit legte und dafür Schwächen in der Sicherheit wissentlich in Kauf genommen hat.] Ich werde diese Aspekte noch im Einzelnen beleuchten, wenn ich auf die wichtigsten Eigenschaften von UNIX etwas genauer eingehe.
1.3.1 Historie
Die Wurzeln von UNIX reichen bis ins Jahr 1965 zurück, auch wenn es zu dieser Zeit noch nicht UNIX hieß. Mehrere Firmen (u. a. Bell, General Electric und das MIT) arbeiteten damals an einem Betriebssystem für Großrechner. Dieses Betriebssystem wurde MULTICS genannt (multiplexed information and computing service), leider wurde es nie fertiggestellt.
Ken Thompson entwickelte im Jahre 1969 bei den Bell Laboratories in den USA das erste auf Teilen von MULTICS basierende UNIX. Zu dieser Zeit waren Computer noch sehr groß und dementsprechend teuer, aber UNIX war schon damals sehr stabil. Noch heute läuft zum Beispiel das gesamte Telefonnetz in den USA auf UNIX-Servern.
UNIX wurde zu Beginn vollständig in einer maschinennahen Assemblersprache geschrieben, bevor es ab 1971 in die Hochsprache C umgeschrieben wurde. Im Übrigen war das Hauptanliegen von Ken Thompson ein raumfahrtbezogenes Programm zu entwickeln, das z. B. Orbitberechnungen für Satelliten beherrschte. Zu dieser Zeit stand nämlich das Apollo-Raumfahrtprogramm[Im Rahmen des Apollo-Programmes gelang der Nasa am 20. Juli 1969 erstmals eine Landung von Menschen auf dem Mond.] der USA im Mittelpunkt öffentlichen Interesses.
Der UNIX-Kernel wurde 1973 komplett neu in C geschrieben. C hat den Vorteil, dass man nur einen Übersetzer für eine neue Hardwareplattform braucht, um das System mit relativ wenigen Änderungen an eine neue Umgebung anpassen zu können. Dadurch wurde UNIX sehr gut portierbar und auf verschiedenen Hardwareplattformen performant.
Die Verbreitung des Systems erfolgte zu Beginn seiner Entwicklung ausschließlich im universitären Bereich, indem es kostenlos an wissenschaftliche Einrichtungen verteilt wurde. Dadurch entstanden viele verschiedene Derivate, da es von nun an von vielen Usern parallel weiterentwickelt wurde. Erst 1982 begannen Firmen wie Hewlett Packard, IBM oder Sun mit dem Vertrieb kommerzieller UNIX-Systeme.
Die parallele Entwicklung verschiedener UNIX-Systeme führte zwangsläufig zu Inkompatibilitäten und man entschloss sich zu Beginn der 90er Jahre einheitliche Standards zu schaffen, um die Weiterentwicklung von UNIX zu einem konvergenten Betriebssystem zu fördern. Hierbei arbeitete man eng mit Institutionen wie dem Institute of Electrical and Electronic Engineering (IEEE) und dem American National Standards Institute (ANSI) zusammen.
POSIX, ein Gremium des IEEE, hatte hierbei die Aufgabe, Schnittstellenstandards für alle Aspekte der Betriebssystemumgebung[Zu diesen Organisationen gehört auch X/Open.} festzulegen.
Die Weiterentwicklung von UNIX lief daraufhin sicher und kontinuierlich weiter. Inzwischen hat UNIX die aktuelle Versionsbezeichnung »System V Release 4« (SVR4) erreicht. |
Zusätzlich zur Entwicklung von SVR4-UNIX gab es noch das parallel entwickelte BSD-UNIX, auf das ich hier aber aus Platzgründen nicht näher eingehen möchte.
1.3.2 Aufbau
Jedes UNIX-System besitzt eine feste Struktur, die in Abbildung 1.2 dargestellt ist. Sie besteht aus vier Schichten, die wir im Folgenden genauer betrachten.
Abbildung 1.2 Die grundlegende Struktur eines UNIX-Betriebssystems.
Hardware
Die erste und damit grundlegende »Schicht« ist selbstverständlich die Hardware Ihres Computers, wie beispielsweise der Prozessor. Streng genommen handelt es sich natürlich nicht um eine bestimmte Schicht von UNIX-Systemen, schließlich braucht jedes Betriebssystem eine Hardwarebasis. Trotz allem ist diese Basis hier aufgeführt, da UNIX eine besondere Art der Kommunikation mit der Hardware pflegt.
Kernel
Als Schnittstelle zwischen Hard- und Software fungiert der Kernel, der Betriebssystemkern. Wie bereits erwähnt, darf streng genommen nur der Kernel als Linux bezeichnet werden. Die Hauptaufgaben des Kernels sind:
- Schnittstelle
-
- zur Hardware, z. B. Geräte, Speicher und Prozessor(en)
- Prozessverwaltung
-
- Sie gewährleistet das problemlose (unter anderem auch parallele) Laufen verschiedenerApplikationen. Im Rahmen der Prozessverwaltung eines Betriebssystems dient der »Dispatcher« dazu, bei einem Prozesswechsel dem derzeit aktiven Prozess die CPU zu entziehen und anschließend dem Prozessor den nächsten Prozess zuzuteilen. Die Entscheidung, welcher Prozess der nächste ist, wird vom »Scheduler« im Rahmen der Warteschlangenorganisation getroffen.
- Hauptspeicherverwaltung
-
- Die Speicherverwaltung ist derjenige Teil des Kernels, der einen effizienten und komfortablen Zugriff auf den physikalischen Arbeitsspeicher eines Computers ermöglicht. Je nach Einsatzbereich des Computers werden unterschiedliche Speicherverwaltungsmechanismen verwendet. Bei UNIX-artigen Systemen wird der Speicher in zwei getrennten Bereichen verwaltet. Anwendungen benutzen den Userspace, während der Kernel selber und einige Treiber den Kernelspace nutzen. Diese Trennung hat sicherheitsrelevante Gründe, so dass eventuelle Fehler in Anwendungen oder auch Viren keinen Zugriff auf den Kernelspace haben und damit die Stabilität des Grundsystems nicht gefährden können.
-
- Der Kernel steuert hierbei nicht nur den Zugriff auf den physikalischen Teil des Speichers, denn dies hätte den Nachteil, dass die aktiven Prozesse selbst niemals mehr Speicherplatz belegen dürften als physikalisch zur Verfügung steht. Um dieses durch immer komplexere Programme entstandene Problem zu lösen, wurde das Prinzip der »virtuellen Speicherverwaltung« entwickelt. Dabei verwenden Prozesse nur noch virtuelle und keine physikalischen Adressen mehr. Die Umsetzung der virtuellen Adresse in eine physikalische Adresse übernimmt die »Memory Management Unit«. Die virtuelle Speicherverwaltung ist heute in beinahe jedem modernen Betriebssystem (u. a. in UNIX) verwirklicht.
- Dateiverwaltung
-
- Im Dateisystem sind die externen Daten eines Computers in Form von Dateien gespeichert. Das Dateisystem selbst ist ein Ordnungs- und Zugriffssystem für diese Daten. Zugriffsroutinen für Dateisysteme sind ebenfalls Bestandteil des Kernels. Dies soll mit dem Begriff Dateiverwaltung beschrieben werden.
Die Leistungsfähigkeit von UNIX hängt im Wesentlichen von der Implementierung dieser grundlegenden Funktionen ab. An diesem Beispiel kann man erkennen, wie wichtig es manchmal sein kann, sich seinen eigenen Kernel zu kompilieren.
Auf jeden Fall außerhalb des Kernels laufen die Anwenderprozesse, die sich der vom Kernel angebotenen Funktionen bedienen, um mit der Maschine zu kommunizieren.
Wenn man sich detaillierter mit Kerneln beschäftigt, dann stolpert man zuerst über die Bezeichnung mit Versionsnummern. Wie allgemein in der Programmiererwelt üblich, bezeichnen ungerade Versionsnummern (2.1.x, 2.3.x, ...) die teilweise noch instabilen Entwicklerversionen. Mit geraden Versionsnummern hingegen werden die stabilen Anwenderkernel bezeichnet (2.2.x, 2.4.x, ...).Normalerweise haben Sie als Einsteiger auf diesem Gebiet nichts mit den ungeraden Kerneln zu tun. In der aktuellen Ubuntu-Ausgabe befindet sich z. B. der Kernel 2.6.x[»Dapper Drake« besitzt den Kernel 2.6.15, »Edgy Eft« 2.6.17 und »Feisty Fawn« 2.6.19. Sie können die aktuelle Versionsnummer Ihres Kernels erfahren, wenn Sie in der Konsole uname -r eintippen.], also Gott sei Dank eine gerade und damit sehr stabile Kernelversion. Lassen Sie sich zu Beginn bitte nicht von dem Zahlenspiel blenden oder verwirren; unter Linux hat fast jedes Programm eine Versionsnummer. Es ist hierbei meistens nicht nötig, den aktuellsten Updates hinterherzulaufen, wenn diese nicht gerade Sicherheitsupdates implementieren.
Shell und Utilities
Die aufbauende Schicht über dem Kernel besteht aus der Shell und den Utilities. Die Shell ist hierbei das Fenster, durch das Sie das System beobachten und beeinflussen können. Die Shell ist die Schnittstelle zwischen Ihnen als Benutzer und dem System.
In der Shell geben Sie Kommandos ein. So schlicht dies klingt, so erschreckend ist es für einige Einsteiger. Viele von ihnen sind schlichtweg verunsichert, wenn sie eine schwarze Box und einen weißen blinkenden Cursor darin vor sich haben. Diese Angst ist zwar verständlich, da man dies aus der Welt von Windows in dieser Form nicht kennt, aber unbegründet.
Sofern Sie Einsteiger im Bereich Linux sind, werden Sie im Laufe dieses Buches Ihre Angst oder Scheu vor der Shell und vor dem Eingeben von Kommandos verlieren, wenn Sie diese Angst überhaupt verspüren. Wichtig ist zuerst einmal nur zu wissen, dass Sie beim ersten Kontakt mit Linux und Ubuntu die Shell nicht benötigen. Ubuntu ist sehr einsteigerfreundlich und bietet Ihnen für fast alle Aufgaben graphische Oberflächen, mit denen Sie Ihr System genauso administrieren bzw. bedienen können wie unter Windows. Die Fenster und Programme sehen natürlich etwas anders aus, aber im Prinzip kommen Sie zu Beginn mit der Maus überall hin.
Lassen Sie sich auf gar keinen Fall von »Linux-Profis« erzählen, dass Linux nur ein System für Experten sei und dass man ohne mehrjährige Erfahrung nicht mit Linux umgehen könne. Dies ist wirklich absoluter Unsinn.
Trotz allem ist es für den ambitionierten Linux-Nutzer durchaus möglich, das komplette Betriebssystem über die Shell und relativ simple Kommandos zu bedienen. Viele dieser Kommandos werden Sie ebenfalls kennenlernen und Sie werden in kürzester Zeit wie selbstverständlich Terminals öffnen und abstrakte Kommandos eintippen. Haben Sie nur ein wenig Geduld. Diese direkte Art der Kommunikation mit Ihrem Betriebssystem ist sehr mächtig und einflussreich. Dies bedeutet, dass Sie umsichtig und verantwortungsvoll mit dieser Macht umgehen sollten. Sie gewinnen dadurch die absolute Kontrolle über Ihr System – eine Möglichkeit, die Sie unter Windows niemals haben werden.
Um dem System bequem Informationen zu entlocken oder ihm Kommandos zu geben benutzt man die sogenannten Utilities. Dies sind kleine nützliche Programme, die Ihnen bei dieser Kommunikation helfen. Befehle wie cp oder ls sind solche Utilities.
In Abschnitt 16.2 können Sie sich über weitere Vorteile dieser Kontrolle informieren und in Kapitel 24 finden Sie eine Befehlsreferenz.
Sie haben bei Linux generell die Qual der Wahl. Für jeden Zweck und für fast jedes Programm gibt es zahlreiche Alternativen. Wenn Ihnen z. B. die Standard-Shell nicht gefällt, dann nehmen Sie doch eine andere! Es gibt Dutzende, aber genau diese verwirrende Anzahl von Programmen und Bezeichnungen machen es einem Linux-Neuling fast unmöglich sich zurechtzufinden. Daran kränkelt besonders die Linux-Distribution von SUSE. Der Anfänger wird hier schon in der Standardinstallation mit Programmen überhäuft, deren Zweck sich ihm teilweise nie offenbaren wird. Bei Ubuntu hingegen wird Wert auf eine überschaubare Anzahl von Programmen gelegt.
In Kapitel 22 finden Sie eine ausführliche Übersicht der in Ubuntu und Kubuntu enthaltenen oder installierbaren Programme. In Kapitel 13 stelle ich Ihnen ausgewählte Programme detailliert vor.
Anwendungen
Die oberste Schicht, auf der sich der Benutzer meist aufhält, ist die Ebene der Anwendungen (Applications). Zu den Anwendungen gehören klassische Programme wie das OpenOffice-Paket oder Gimp, aber auch Compiler wie der cc.
1.3.3 Wichtigste Eigenschaften
Stichwortartig sollen hier die wichtigsten Aspekte eines Unix-Systems betrachtet werden. Diese Aufzählung erhebt keinen Anspruch auf Vollständigkeit, sollte aber dennoch zur ersten Orientierung hilfreich sein.
- Dialogsystem
-
- Dass UNIX ein Dialogsystem ist, mag in der heutigen Zeit als nicht sehr spektakulär gelten, war in der Zeit der Entstehung von UNIX aber durchaus etwas Neues. Der Dialog bedeutet hierbei im wahrsten Sinne des Wortes eine Kommunikation, bei welcher der PC nicht nur auf Eingaben reagiert, sondern auch durch Hinweise und Rückmeldungen Informationen an den Benutzer zurückgibt.
- Multi-User-/Multi-Tasking-Betriebssystem
-
- Multi-User bedeutet, dass an einem Unix-System gleichzeitig mehrere Benutzer arbeiten können. Multi-Tasking dagegen bedeutet, dass jeder dieser Benutzer auch mehrere Programme parallel ablaufen lassen kann. Eine Verknüpfung dieser beiden Fähigkeiten ist natürlich ebenfalls möglich – so können mehrere Benutzer parallel jeweils verschiedene Anwendungen laufen lassen. Diese Eigenschaft ist eine direkte Eigenschaft des Kernels.
-
- Das klingt für Sie selbstverständlich? Nun, das System aus dem Hause Microsoft beherrscht diese uralte Technik immer noch nicht reibungslos.
- Virtuelles Speicherkonzept
-
- Jede noch so umfangreiche Anwendung kann bei einem Unix-System auf relativ klein dimensionierter Hardware laufen. Erreicht wird dies durch die sogenannte »virtuelle Speicheradressierung«. Hierbei werden erst zur Laufzeit dieser Anwendung die virtuellen Adressen in physikalische Adressen umgesetzt.
- Pipe-Konzept
ls | more
-
- die Ausgabe des Befehls ls (listing) an das Programm more weitergeben. Die Folge ist, dass Sie die Ausgabe von ls seitenweise angezeigt bekommen.
- Hierarchische Dateiverwaltung
- Shells
-
- Die kommandoorientierte Interaktion mit dem System wird über Shells abgewickelt. Diese Shells bieten vielfältige Möglichkeiten für die Programmierung und Automatisierung von Vorgängen.
- C
-
- Die Sprache C kombiniert die Effizienz einer Assemblersprache mit den Steuerstrukturen moderner Sprachkonzepte. Heute sind mehr als 95 % aller Anwendungen in C geschrieben.
- Integration
-
- UNIX ist einfach in Datennetze zu integrieren. Alle Funktionen für die Integration in Datennetze sind bereits in UNIX implementiert. Die Netzwerkfähigkeit ist eine der großen Stärken eines UNIX-Systems.
- Skalierbarkeit
Gerade die letztgenannten Eigenschaften sind der Grund für die überragende Stellung von UNIX im Serverbereich. Aber auch im Bereich der rechenintensiven Anwendungen hat sich UNIX etabliert. So wurden Kinofilme wie »Toy Story« und »Das große Krabbeln« unter Verwendung von UNIX erschaffen, aber auch viele Spezialeffekte für Filme wie »Titanic«. Des Weiteren laufen viele CAD-Systeme unter UNIX.
Im Bereich der Supercomputer hat UNIX eine Art Monopolstellung. Eine aktuelle Liste der 500 stärksten Supercomputer finden sie auf der Website http://www.top500.org.
Im Desktopbereich befindet sich UNIX seit Anfang der 90er Jahre langsam, aber kontinuierlich auf dem Vormarsch, nicht zuletzt aufgrund der steigenden Verbreitung von Linux. Von einem der jüngsten Anläufe zur Eroberung des Desktops handelt dieses Buch.