Das Betriebssystem  UNIX - Michael Ziegenbalg - E-Book

Das Betriebssystem UNIX E-Book

Michael Ziegenbalg

0,0
0,99 €

oder
-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

UNIX ist ein Multitasking- und Multiuser-Betriebssystem, was bedeutet, dass mehrere Benutzer das System gleichzeitig nutzen kann. Es wurde in den frühen 1970er Jahren entwickelt. UNIX ist ein beliebtes Betriebssystem für Workstations, denn es ist leistungsstark und flexibel. Es ist weniger beliebt auf Personal Computern, aber mit neuen Versionen von Unix, wie Linux, ist es immer häufiger.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Michael Ziegenbalg

Das Betriebssystem UNIX

Dieses Buch widme ich meinem großen Fröderer und Chef Herrn Prof. Dr. Günter LamprechtBookRix GmbH & Co. KG80331 München

Einleitung

 

 

1. Einleitung

 

Innerhalb der letzten Jahre der Entwicklung der elektronischen Datenverarbeitung haben sich eine Vielzahl rechnerabhängige Betriebssysteme herausgebildet, wie z.B. die Betriebssysteme zu IBM-Großrechnern, CDC, SPARC Univac, in der mittleren Datentechnik Wang, Kienzle, Nixdorf u.a.. Das hat auch als Ursache, daß jeder Hersteller eines Rechners für seinen Rechner das "ideale" Betriebssystem erstellen wollte und somit ein erheblichen Teil des gesamten Entwicklungsaufwandes in die Erstellung des Betriebssystems investierte.Wirtschaftlich aber stellt die Neuentwicklung eines Betriebssystems eine hohe Verschwendung von Ressourcen dar, die insbesondere angesichts des Hardware Preisverfalls nicht mehr zu vertreten ist. Weiterhin muß Standardsoftware an dieses neue Betriebssystem angepaßt werden und last not least die Akzeptanzschwelle der Benutzer zu diesem neuen System überwunden werden.

Aus diesem Grund stellt UNIX eine gute Alternative zu einem neuen Betriebssystem-Standard dar. Dieser Vorteil beruht vornehmlich darauf, daß UNIX zu ca. 97% im C-Quellcode vorhanden ist, und deshalb eine Portierung auf andere Prozessoren und Rechnersysteme sehr leicht gemacht wird (z.B. Motorola, Intel, DEC, IBM-370 u.a.).

UNIX ist ein Multitasking und Multiuser-Betriebssystem; d.h. es können mehrere Benutzer mit einem Prozessor arbeiten und zudem kann jeder Benutzer mehrere Prozesse gleichzeitig starten. Aus diesen Grund laufen auf einem UNIX-Computer ständig mehrere Prozesse gleichzeitig, die um die Systemressourcen konkurrieren. Damit es dabei nicht zu Kollisionen kommt, müssen diese Prozesse aufeinander abgestimmt, synchronisiert werden. Um dieses zu ermöglichen, wurden von den Entwicklern des UNIX-Systems mehrere Möglichkeiten geschaffen, um die Prozesse untereinander kommunizieren zu lassen.

Durch die leichte Portierbarkeit ist UNIX mittlerweile als Betriebssystem für Mainframes, Workstations und Mikrocomputer (wie die IBM-AT-Kompatiblen Geräte) verfügbar. Aus diesem Grund wiederum erwuchs das Bedürfnis, die vorhandenen UNIX-Systeme über ein Netzwerk möglichst transparent zu verbinden. Um diesem Anspruch zu genügen, wurden mehrere Applikationen entwickelt, die in dieser Arbeit detailliert behandelt werden sollen.

Da UNIX ein Betriebssystem ist, das von Programmierern für Programmierer geschaffen wurde, ist es nicht verwunderlich, daß spezielle Hilfen und Programmierschnittstellen für die Rechnerkopplung zur Verfügung gestellt wurden. Diese Hilfen kann man auf jeden Fall als Computerunterstützung im Bereich Softwareentwicklung verstehen.

Weiterhin impliziert die hohe Ähnlichkeit der UNIX-Systeme untereinander eine ebenso hohe Verträglichkeit der Schnittstellenbeschreibungen und -nutzungen. Dieses wiederum erleichtert die Datenübertragung und somit eine Kommunikation zwischen UNIX-Rechnern, auch wenn sie unterschiedliche Hardware besitzen.

 

 

Zur Entwicklung von Unix

 

2 Zur Entwicklung von Unix

 

 

Das UNIX-System gehört zu den ältesten Betriebssystemen überhaupt (s. /Leff90/): Die ersten Anfänge wurden vor ca. 20 Jahren gemacht, wobei allerdings die meisten praktischen Einrichtungen auf relativ neuen Entwicklungen beruhen. Die erste Version des UNIX-Betriebssystems wurde 1969 in den Bell Laboratories von Ken Thompson aus einer Forschungsarbeit heraus entwickelt: Eine sonst nicht genutzte PDP-7 von der Firma DEC (Digital Equipment Corp.) sollte in Betrieb genommen werden. Diese erste Version - auch Urversion oder auch UNIX /1 - wurde noch vollständig in Assembler geschrieben. Auf dieser Version wurde dann auch von Thompson die Sprache B entwickelt, eine Interpreter-Sprache, die sich stark an BCPL anlehnte. Kurz darauf erfand Dennis Ritchie die Sprache C, eine Compilersprache, die auf B aufbaute. Die darauf folgende UNIX-Version wurde dann - diesmal auf einer PDP-11 - in dieser Hochsprache neu implementiert. Dabei wurden diese und die folgenden Versionen nicht kommerziell verkauft, sondern lediglich anderen Universitäten zu Forschungszwecken zur Verfügung gestellt. Fünf Jahre nach dieser ersten Version wurde erstmalig eine UNIX-Version kommerziell freigegeben. Es handelte sich hierbei um "UNIX Version 6", die teilweise heute noch benutzt wird. Der große Durchbruch wurde dann mit der "UNIX Version 7" erreicht, von der aus sich dann zwei Hauptströmungen entwickelt haben:

 

1) Die UNIX-Version, wie sie von den Bell-Laboratories weiterentwickelt wurde. Das UNIX V, das z.Z. das jüngste Produkt darstellt, ist das am weitesten verbreitete UNIX-Derivat, an welches viele Eigenentwicklungen verschiedener Firmen anlehnen.

 

2) Das BSD-Unix, das von der Berkeley University entwickelt wurde und worauf sich auch das IBM-eigene Betriebssystem AIX basiert.

 

Viele andere Firmen haben dabei ihre "eigenen" UNIX-Derivate entwickelt, die - irreführenderweise - als "erweiterte" oder "verbesserte" UNIX-Versionen angepriesen werden. Böse Zungen behaupten allerdings, daß der Ausdruck "inkompatible Veränderungen" treffender sei (wie z.B. TARGON (Nixdorf), AIX (IBM), SINIX (Siemens) etc.).

Um die Diversität dieser vielen Produkte einzudämmen, schlossen sich einige Firmen zu Entwickler-Gruppen zusammen, was nicht zuletzt auch einen entscheidenden Marktvorteil bedeuten kann. Der erste Zusammenschluß war die Kooperation von AT&T und SUN, wodurch die Herstellerunabhängigkeit, die eigentlich ein Prinzip von UNIX darstellt, verletzt wurde (vergl. /CHIP88/). Daher war es nicht verwunderlich, daß sich - quasi als Antwort - andere UNIX-Hersteller auch zusammenschlossen, um sich überhaupt noch Marktchancen zu bewahren. Die bekannteste Gruppierung ist die Open Software Foundation (OSF), in der sich die Firmen IBM, Apollo (jetzt Hewlett Packard), Bull, DEC, Philips und Siemens Nixdorf (SNI) zusammengefunden haben. Das Ziel ist und war es, für alle Systeme - unabhängig von der Hardware - ein durchgängiges UNIX-System zu schaffen, um die lästigen Portierungs-Arbeiten zu minimieren. Die erste Version eines solchen Betriebssystems, dem OSF/1, wurde im Oktober 1990 angekündigt, die Realisierung ist aber bis heute noch nicht vervollständigt.

 

UNIX wurde im Jahre 1973 von den beiden Amerikanern D. M. Ritchie und K. Thompson in den Bell Laboratories, dem Forschungszentzrum der amerikanischen Telefongesellschaft AT&T entwickelt, nachdem sie die Projektgruppe zur Entwicklung des Betriebssystems verlassen hatten. Viele der Ideen aus diesem Projekt übernahmen sie mit nach UNIX, wie z.B. die Dateihierarchie (siehe später) u.a. Hingegen ließen sie die ausgefeilten Überlegungen bezüglich der Zugangsberechtigung und des Dateischutzes weitgehend unberücksichtigt.

 

Dies hinderte nicht daran oder vielleicht gerade auch deswegen, daß UNIX sich sehr rasch verbreitete. Zunächst nur in Forschungseinrichtungen an Universitäten und Instituten, später auch im komerziellen Bereich, insbesondere bei der Einrichtung überregionaler Netzte (WANs).

Grund hierfür war die sehr leichte Portabilität, die es ermöglichte, UNIX leicht auf neue Rechnerplattformen zu portieren. Später auch wegen der, in erster Linie unter UNIX implementieren Netzsoftware TCP/IP, welche bald ein Standard für Vernetzungen zwischen UNIX-Systemen und später auch anderen (z.B. IBM VM usw.) wurde.

 

UNIX ist ein Betriebssystem für mehrere Benutzer ( Multiuser-Betriebssystem) und für mehrere Programme/Anwendungen (Multitasking-Betriebssystem) und zwar nicht nur für das Betriebssystem als ganzes, sondern auch für jeden einzelnen Nutzer, d.h. auch der einzelne Benutzer kann mehrere Programme (Tasks/ Jobs) im Hintergrind starten (ein Betriebssystem, welches dies in dieser Form nicht kann ist IBM VM/CMS).

 

UNIX ermöglich somit einen Dialogbetrieb und eine Hintergrundverarbeitung (Batchbetrieb). Der grundsätzliche Aufbau von UNIX ist folgendermaßen:

 

 

 

 

 

 

 

 

Die Shell ist ein interaktiver Kommandointerpreter, ist Teil des originären Operating Systems und ermöglicht das

 

- Ausführen von Dienstprogrammen und Kommandos

wie sort

make usw.

- Ausführen von Anwenderprogrammen wie

Dateigenerationenverwalter SCSS

Textmanipulationssystem AWK

Textverarbeitung TEX

Datenbankanwendungen INGRES u.a.

- Abarbeiten von Pipes

- Geräteabhängiger I/O

 

Der Kern oder Kernel eines Unixsystems kontrolliert die darunterliegende Hardware und macht die Hardware und die angeschlossenen Geräte (devices) für den Nutzer verfügbar.

 

Der Kern ist der Hauptbestandteil des Betriebssystems. In den meisten Unix-Implementierungen ist er ein monolitischer Block, der nur schwer veränderbar ist. Wenn ein neues Gerät angeschlossen wird, dann müssen die Gerätetreiber i. a. in den Kern eingebunden werden und dieser dann neu übersetzt werden. Der Kern kann auch i. a. nicht gepaged werden.

Die wesentlichen Eigenschaften moderner Unix-Betriebssysteme werden hier nochmals zusammenfassend betrachtet:

 

 

Multitasting:

Ein echtes Multitasking (vergl. Ausführungen zu Windows 3.11 bezüglich der Kernel im Prinzip eines jeden Betriebssystems. Hier liegt in der Regel in sog. kooperatives Multitasking vor) erlaubt mehrere Prozesse zu verwalten. Alle Prozesse laufen völlig unabhängig voneinander. Damit braucht kein Prozeß sich dafür zu sorgen, daß andere Prozeße ebenfalls Rechenzeit abbekommen.

 

Multiuser:

Es können mehrere Benutzer über Datenendstationen (Terminals, Terminals mit Modemanschluß) oder mit einem PC und einem Netz (LAN, WAN/ Internet) und einer Terminalemulation kommunizieren. Multiuserfähigkeit zieht eine Benutzerverwaltung und Zugriffsrechte auf Dateien nach sich.

 

Demand Load Executables:

Es werden nur Teile eines Programms in den Speicher geladen, die auch wirklich zur Ausführung benötigt werden. Bei der Erzeugung eines neuen Prozesses mittels fork() wird nicht sofort Speicher für Daten angefordert, sondern der Datenspeicher des Elternprozesses von beiden Prozessen gemeinsam genutzt.

 

Paging:

Erweiterung des realen Speichers durch einen virtuellen Speicher realisiert durch den Austausch von Seiten oder Pages (2/4 KBytes groß).

 

Dynamischer Cache für Festplatten:

Ms-DOS-User kennen möglicherweise das Problem, daß man für einen Festplattencache, realisiert über z.B. smartdrive, Speicher mit einer festen Größe reservieren muß. UNIX paßt in vielen Fällen die Größe des verwendeten Cache dynamisch der aktuellen Speicherauslastungssituation an. Ist momentan kein Speicher mehr frei, wird die Größe des Cache reduziert und damit freier Speicher zur Verfügung. Wird wieder Speicher freigegeben, wird der Cachebereich vergrößert.

 

Shared Libraries:

Bibliotheken sind eine Sammlung von Routinen, die ein Programm zur Abarbeitung benötigt. Es gibt eine Reihe von Standardbibliotheken, die mehrere Prozesse gleichzeitig benutzen. Es ist also naheliegend, den Programmcode für diese Bibliotheken nur einmal in den physikalischen Speicher zu laden. Da diese Bibliotheken erst zur Laufzeit des Programms zu dessen Code hinzugeladen werden, spricht man auch von dynamisch gebundenen Bibliotheken.

 

Verschiedene Formate von ausführbaren Dateien:

Emulatoren für MS-Dos, Windows, andere Unix-Systeme z.B. iBCS2-Standard oder SCO-Unix.

 

 

Protected Mode:

Prozessorunterstützung und Ausnutzung für Speicherschutzmechanismen (bekanntester ist der 386 Protected Mode).

 

Emulatoren für numerische Koprozessoren im Kern, falls der Prozessor noch keinen hat.

 

Unterstützung von nationalen Tastaturen und Fonts.

 

Verschiedene Dateisysteme: Unix-dateisystem

Linux-Dateisystem (Ext und Ext2)

Fat-Dateisystem

UMSDOS mit Zugriffsrechten

HPFS

NTFS

NFS (Network File System) von Sun

 

TCP/IP, SLIP und PPP-Unterstützung:

TCP/IP für LAN und WAN insbesondere Internet-Zugang

SLIP und PPP Unterstützung für die Nutzung des TCP/IP über

serielle Schnittstelle

 

BSD-Sockets:

Schnittstelle für die Interproßeskommunikation zwischen verschiedenen Rechnern

 

System V IPC:

Messages, Queues, Semaphoren und Shared Memory für die Interprozeßkommunikation.

 

 

Die Aufgaben des Kernels

 

2.1 Die Aufgaben des Kerns

 

Seit den Anfängen von Unix hat sich die interne Struktur von Betriebssystemen stark geändert, z.B. daß Betriebssysteme in höheren Programmiersprachen wie C geschieben (OS/2 Windows NT) werden. Der Trend geht im Moment zu einer sog. Microkernel-Struktur (Mach-Kern, Linux, Aix). Der Kern stellt dabei nur das notwendige Minimum an Funktionalität (Interprozeßkommunikation, Speicherverwaltung) zur Verfügung und kann deshalb kompakt und klein implementiert werden. Auf diesen Microkernel aufbauend wird die restliche Funktionalität des Betriebssystems in eigenständige Prozesse ausgelagert, die mit dem Kernel über eine wohldefinierte Schnittstelle kommunizieren. Der große Vorteil dieser Architektur ist die größere Wartungsfreundlichkeit des Systems. Komponenten arbeiten unabhängig voneinander, können sich nicht ungewollt beeinflussen und sind leichter austauschbar.

Es wird versucht, den Dateisystemcode, den Netzwerkcode und diverse Gerätetreiber aus dem Kernel auszulagern. Dann kann man das System umkonfigurieren, ohne den Kernel neu zu generieren und dies sozusagen im laufenden Betrieb.

 

- Scheduling (Abwickeln) der Processe (Jobs), so daß

jeder Prozess den Prozessor auch wirklich einmal

bekommt

- Kontrollieren des Datentransfers (input und output)

zwischen dem Prozessor und den Geräten (devices)

- Tastatur

- Bildschrim, Terminals

- Drucker

- Hauptspeicher

 

 

 

Neben der Speicherverwaltung hat der Scheduler eine wesentliche Aufgabe des Betriebssystemkerns zu erfüllen. Er weist den Prozessen die jeweilige Rechenzeit zu. Nach welchen Kriterien dies geschieht, ist natürlich von Betriebssystem zu Betriebssystem verschieden und wird auch in den unterschiedlichen UNIX-Derivaten unterschiedlich implementiert.

In der Regel bevorzugen Unix-Systeme traditionell interaktive Prozesse, um kurze Antwortzeiten zu ermöglichen, um dem User das System subjektiv schneller erscheinen zu lassen.

 

Das gesamte Unix-System ist im wesentlichen in der Programmiersprache C geschrieben, wodurch zur Portierung von UNIX ein Übersetzer von C auf der jeweiligen Plattform vorhanden sein muß. Die Hardware-Schnittstellen sind teilweise im Assembler programmiert und daher nicht portabel. Sie sollen eine von der jeweils konkreten Hardware unabhängige Schnittstelle zur Verfügung stellen.

Der portable UNIX-Kern ist in C geschrieben und verwaltet hauptsächlich die Prozesse und ihre Synchronisation, das Dateisystem und die Hardware. Der UNIX-Kern bietet eine Reihe von elementaren Funktionen des Betriebssystems an (Systemaufrufe oder System-Calls), welche von den darüberliegenden Schichten (insbesondere der Shell, aber auch aller Anwendungsprogramme) benutzt werden können. Die Standardprogramme zur Manipulation des Dateisystems, Editoren, Übersetzer und vieles mehr sind in C programmiert und benutzen ebenfalls diese Systemaufrufe. Sie sind deshalb auch größtenteils protabel und somit unter allen Systemen erhältlich.