1


Einleitung

Zur Geschichte von UNIX
Einsatzzweck der UNIX-Workstations am URZ
Eingesetzte Hardware und Betriebs-Software
Vernetzung
Beschreibungskonventionen


1. Einleitung

1.1. Zur Geschichte des UNIX-Betriebssystems

UNIX[1] entstand bei den AT&T Bell Laboratories, einem der renommiertesten und größten amerikanischen Forschungsinstitute. Die Entwicklung wurde bei AT&T von einer Gruppe gestartet, die sich mit der Entwicklung eines zukunftsweisenden Betriebssystems befaßte, nämlich mit MULTICS, das Ende der 60er Jahre am Massachusetts Institute of Technologie (MIT) entwickelt worden war. In MULTICS, einem der ersten Time-Sharing-Systeme, waren die Konzepte der heutigen Multitasking-Betriebssysteme bereits zu einem Großteil realisiert. Leider wirkte sich diese Vorreiterrolle ungünstig auf MULTICS aus, das zudem unnötig komplex und schwerfällig war. Nachdem AT&T sich gegen Ende der 60er Jahre aus dem MULTICS-Projekt zurückgezogen hatte, blieb eine Gruppe von Entwicklern zurück, die genaue Vorstellungen davon hatten, wie ein Time-Sharing-System aussehen sollte. Sie begannen mit der Entwicklung eines eigenen Systems. Urheber des Systems waren die Entwickler Ken Thompson und Dennis Ritchie, die sich an einem von Rudd Canady skizzierten Konzept orientierten. Bald stießen eine Reihe anderer Computerwissenschaftler (u.a. J. F. Ossanna und R. Morris) zu der Gruppe. Die ersten grundlegenden Konzepte wurden auf einer DEC PDP-7 realisiert und Mitte der 70er Jahre auf eine DEC PDP-11 portiert. Diese frühen Versionen wiesen bereits einen Großteil der Grundkonzepte des modernen UNIX-Systems wie das Dateisystem, die Prozesse und die Kommandostrukturen auf.

UNIX war ursprünglich fast vollständig in Assembler geschrieben worden. Nachdem Dennis Ritchie im Laufe des Jahres 1972 die Programmiersprache BCPL weiterentwickelt und damit das heute weitverbreitete C geschaffen hatte, portierte das Entwicklerteam das komplette Betriebssystem in diese neue Sprache. In den modernen UNIX-Systemen sind lediglich einige wenige Routinen im Kern noch in Assembler geschrieben. Es handelte sich um den ersten Versuch, ein ganzes Betriebssystem in einer höheren Programmiersprache zu schreiben. Die sich daraus ergebende Portabilität ist einer der wichtigsten Gründe für die Popularität des heutigen UNIX-Systems.

Der Durchbruch gelang UNIX mit der Implementierung auf größeren Rechnern. Als die Mini- und Microcomputer an Geschwindikeit und Leistungsfähigkeit aufholten und gleichzeitig immer billiger wurden, konnte UNIX auch für diese Rechner portiert werden. Schon die Leistung der ersten Intel-8088-Rechner reichte zur Unterstützung von UNIX fast aus. Für diese Rechnerklasse gab es z.B. XENIX. Es handelte sich dabei um eine vom Umfang her stark eingeschränkte UNIX-Version, die aber grundsätzliche Eigenschaften, wie z.B. das Filesystem oder Pipes bereits beherrschte. Inzwischen wurde dieses System soweit weiterentwickelt, daß es zu Recht als UNIX bezeichnet werden kann, setzt aber auf der anderen Seite einen Rechner mit 80386- oder 80486-Prozessor und mindestens vier MByte Hauptspeicher voraus. Die jüngste Entwicklung im Bereich PC-UNIX stellt die Portierung des Berkeley System 4.3 für 80486-Computer dar.

Heute findet sich UNIX auf Rechnern aller Klassen, angefangen vom PC bis hin zu den leistungsfähigsten Groß- und Vektorrechnern. Derzeit ist UNIX mit steigender Tendenz auf mehr als 300.000 Rechnern installiert. UNIX wurde auf fast alle Rechnertypen portiert, die jemals gebaut worden sind. Da die Microcomputer sich in ihrer Leistungsfähigkeit immer mehr den millionenteuren Großrechnern vergangener Tage annähern bzw. jene inzwischen übertreffen, ist es nur konsequent, UNIX auch für diese Rechner verfügbar zu machen. Die Portabilität von UNIX wird derzeit von keinem anderen Betriebssystem erreicht. Immer mehr Benutzer sind von der beeindruckenden Flexibilität, Leistungsfähigkeit und Eleganz dieses Betriebssystems überzeugt. Insbesondere die vorhandenen Werkzeuge und die Unterstützung der bausteinartigen Programmentwicklung haben UNIX inzwischen zu einem bei Software-Entwicklern weit verbreiteten Betriebssystem gemacht. Das UNIX-System bietet eine Umgebung, in der Programme fast problemlos zwischen Rechnern unterschiedlicher Architekturen portiert werden können.

UNIX zählt zu den leistungsfähigsten Computer-Betriebssystemen, die derzeit verfügbar sind. Aufgrund seiner klaren und mächtigen Kommandosyntax können Benutzer damit Funktionen auf schnelle Weise durchführen, die in anderen Betriebssystemen ummöglich oder nur sehr umständlich zu realisieren sind. UNIX wird in seinem Leistungsumfang von keinem anderen Betriebssystem auch nur annähernd erreicht.

Das UNIX-System ist ein Timesharing- und Multitasking-Betriebssystem, d.h. mehrere Funktionen werden zur gleichen Zeit ausgeführt. Zudem ist UNIX ein leistungsfähiges Multiuser-Betriebssystem, d.h. es kann viele Benutzer gleichzeitig bedienen.

1.2. Einsatzzweck der UNIX-Workstations am URZ

Am Rechenzentrum werden die unter dem System UNIX betriebenen Workstations als wesentliche Ergänzung der bisherigen Rechnerumgebung angeboten. Sie verfügen zum Teil über spezielle Eigenschaften, wie z.B. über eine besonders hohe Rechenleistung, großen Arbeitsspeicher oder spezielle Grafikfähigkeiten.

Insbesondere sollen die wachsenden Anforderungen an Arbeitsspeicher bei gleichzeitig gesteigerter Rechenleistung mit diesen Rechnern erfüllt werden. Diese Eigenschaften, kombiniert mit dem eleganten Betriebssystem UNIX und modernen X-Terminals, sollen ein wesentlich effektiveres Arbeiten als bisher ermöglichen.

1.3. Eingesetzte Hardware und Betriebs-Software

Für den UNIX-Pool des Rechenzentrums werden überwiegend RS/6000-Rechner der Firma IBM eingesetzt. Weitere Rechner, auch anderer Hersteller, sind beantragt und werden in Zukunft angeschlossen und zur Verfügung gestellt werden.

Als Datenspeicher (Fileserver) für den gesamten Pool werden zwei Modelle RS/6000-950 eingesetzt. Auf diesen Geräten werden die meisten Daten für die Verwendung im gesamten UNIX-Pool gespeichert und mittels AFS (Andrew File System)[2] allen berechtigten Workstations zur Verfügung gestellt (siehe auch Kapitel 3). Ein Teil der Dialoganwendungen soll auf diesen Maschinen ausgeführt werden. Für Dialoganwendungen von den X-Terminals aus stehen vier Modelle RS/6000-320H zur Verfügung. Sie verfügen über ausreichende Rechenleistung für weitere Dialoganwendungen.

Für rechenintensive Anwendungen, die zudem noch hohe Speicheranforderungen haben, sind zwei Modelle RS/6000-580 installiert. Diese beiden Maschinen sind mit je 512 MByte Hauptspeicher ausgestattet. Auf ihnen sollen Programme über NQS (Network Queueing System) abgegeben werden können (NQS oder ein äquivalentes System befindet sich noch in der Vorbereitung.). Interaktiver Betrieb ist auf diesen Geräten dagegen nicht vorgesehen. Für große, während der Programmausführung benötigte Dateien, haben auf diese Rechner einen besonders großen temporären Speicherbereich (/tmp) von mehreren GByte.

Als dedizierte Grafik-Workstations werden RS/6000-530H eingesetzt. Sie verfügen über einen speziellen Grafik-Adapter, der die Darstellung und Animation dreidimensionaler Grafiken in Echtzeit ermöglicht.

Es sind zudem eine Reihe weiterer Workstations verschiedener Hersteller beantragt. Diese Geräte sollen ebenfalls in den Workstationpool integriert werden. Eine Einbindung in das gemeinsame Filesystem über AFS ist vorgesehen.

Das Filesystem AFS sorgt dafür, daß auf den

erwähnten Rechnern der Zugriff zu allen benötigten Daten ermöglicht wird. Alle diese Maschinen sind Mitglieder der gleichen AFS-Zelle urz.uni-heidelberg.de. Sie verfügen somit alle über die gleiche Sicht der Anwenderdaten. Es ist für den Anwender unerheblich, auf welchem Gerät die von ihm verwendeten Daten gespeichert werden.

1.4. Die unterschiedlichen UNIX-Systeme

Alle IBM-Modelle RS/6000 werden unter dem UNIX-Derivat AIX 3.2 der Firma IBM betrieben. Geplant ist jedoch die Integration von Rechnern weiterer Hesteller und somit der Einsatz anderer Unix-Derivate wie z.B. Ultrix, HP/UX, OSF/1 usw.

1.5. Vernetzung

Alle Rechner sind sowohl untereinander als auch mit den anderen Rechnern am URZ über Ethernet verbunden. Der UNIX-Workstation-Pool, der die AFS-Zelle beinhaltet, befindet sich in dem Subnetz 129.206.119.xxx.

Die beiden Fileserver heißen aixfile1.urz.uni-heidelberg.de bzw. aixfile2.urz.uni-heidelberg.de. Innerhalb des Namensraumes urz.uni-heidelberg.de können beide Rechner auch mit ihren Kurznamen, aixfile1 bzw. aixfile2, angesprochen werden. Für einfache Dialoganwendungen stehen vier Dialogserver (aixterm1, aixterm2, aixterm3, aixterm4) zur Verfügung. Anwendern, die von außen auf unseren UNIX-Pool zugreifen wollen, wird empfohlen, eine dieser vier Maschinen für ihre Arbeit auszuwählen. Alle Maschinen sind AFS-Clients der Fileserver (aixfile1, aixfile2). So stehen, wie oben erwähnt, zwei weitere Modelle RS/6000-580 als Hintergrundrechner zur Verfügung.

(Schematische Darstellung der Vernetzung der besprochenen Rechner)

Die X-Terminals sind untereinander in zwei weiteren Subnetzen (129.206.117.xxx und 129.206.118.xxx) organisiert, um die Netzwerkbelastung durch umfangreiche Datenübertragungen an die Terminals so niedrig wie möglich zu halten. Den Benutzern dieser Terminals stehen vorwiegend vier RS/6000-320H zur Verfügung, d.h. ihre Anmeldung (login) wird von einer dieser Maschinen angenommen.

1.6. Beschreibungskonventionen

Alle Befehlseingaben des Benutzers werden fett gedruckt.

Variable Bestandteile in den einzelnen Beschreibungen werden kursiv dargestellt.

Sofern die Eindeutigkeit gewahrt bleibt, werden diese beiden Methoden zur Hervorhebung von Textbestandteilen auch an anderen Stellen eingesetzt.

Oft werden Funktionen benötigt, die die gleichzeitige Betätigung zweier Tasten erfordern. So kann beispielsweise durch gleichzeitiges Betätigen der Tasten Control (Ctrl bzw. Strg) und D eine aktive Shell verlassen werden. Die Notwendigkeit, diese beiden Tasten gleichzeitig zu betätigen, wird im Text folgendermaßen angezeigt: <Ctrl-D>. Diese Schreibweise gilt analog für andere gleichzeitig zu betätigende Tastenkombinationen.

In einigen Fällen ist es notwendig, zwei Control-Funktionen unmittelbar hintereinander aufzurufen, um eine angestrebte Wirkung zu erzielen. Für diese Fälle werden zwei Darstellungsweisen verwendet:

<Ctrl-x><Ctrl-y>

oder

<Ctrl-x-y>

Die zweite Darstellungsweise soll andeuten, daß vor der Betätigung des zweiten Zeichens die Ctrl-Taste nicht losgelassen werden darf.

Weiterhin gibt es Fälle, bei denen der Eingabe einer Control-Funktion die Eingabe eines einfachen Zeichens zu folgen hat. Durch

<Ctrl-x y>

soll dargestellt werden, daß vor der Betätigung der y-Taste sowohl die Ctrl- als auch die x-Taste freizugeben sind.

Für weitere Sondertasten werden im Text folgende Abkürzungen verwendet:

Bezeichnung im    Bedeutung                              mögliche Beschriftung     
Handbuch                                                 auf der Tastatur          
<Cr>              Eingabetaste (Enter-Taste)             , Enter, Eingabe          
<Del>             lösche Zeichen unter dem Cursor        Entf, Lösch, Del          
<Esc>             Escape-Taste                           Eing lösch, Esc           
<Tab>             Tabulator-Taste                                                  
<BS>              lösche Zeichen links vom Cursor        , Rück                    
<Shift>           Umschalt-Taste, z.B für                , , Shift                 
                  Großbuchstaben                                                   

1.7. Betriebsbedingungen der am URZ eingesetzten Rechner

1.7.1. Limitierung von Speicherplatz und CPU-Zeit

Das URZ betreibt im UNIX-Pool 10 AIX Rechner mit verschiedener Hardware-Ausstattung. Weil diese den Benutzern offenbar nicht bekannt ist, ist es immer wieder zu Beeinträchtigungen der Antwortzeiten gekommen. Deshalb wurden zum 1. März 1993 Einschränkungen der CPU-Zeit und Speicherplatzbelegung eingeführt, die den Resourcen der einzelnen Rechnern angepaßt sind.

In der folgenden Tabelle sind die Funktion der einzelnen Rechner mit Angabe des Modells, der installierte Hauptspeicher, der maximal belegbare Speicherplatz, die maximale CPU-Zeit und die Namen der betroffenen Rechner angegeben.

Funktion        Modell  Hauptspeicher   benutzbarer   Maximale CPU-Zeit   Rechnernamen     
                                        Speicher                                           
                                                                                           
Computeserver   580     512 MB          512 MB *)     unbegrenzt          aixcomp1         
                                                                          aixcomp2         
Fileserver      950     256 MB          256 MB        6 Stunden           aixfile1         
                                                                          aixfile2         
Grafikserver    53H     64 MB           64 MB         1 Stunde            aixgraf1         
                                                                          aixgraf2         
Terminalserver  32H     64 MB           64 MB         1 Stunde            aixterm1         
                                                                          aixterm2         
                                                                          aixterm3         
                                                                          aixterm4         

*) 512 MB können nur mit dem Parameter '-bmaxdata:0x20000000' für den Linker adressiert werden. Ohne diesen Parameter sind 256 MB adressierbar. Der Parameter kann schon beim Compilieren des Programms angegeben werden.

Beispiel:

cc -O -o memtest memtest.c -bmaxdata:0x20000000

Die einzelnen Beschränkungen beziehen sich nicht auf die gesamte Sitzung, sondern gelten pro Prozeß (Kommando oder Job). Mit dem Kommando 'ulimit -Ha' können Sie sich die jeweils geltenden Werte anzeigen lassen, sofern Sie die 'bash' (Standard) oder die 'ksh' verwenden. Das Kommando 'ulimit' ermöglicht Ihnen, die Werte zu verkleinern. Mit ulimit -t 100 begrenzen Sie die CPU-Zeit auf 100 Sekunden.

1.7.2. Automatische Prioritätensteuerung

Zusätzlich haben wir ein Verfahren zur Berechnung der Priorität eingeführt. Die Priorität von laufenden Prozessen richtet sich nach der Speicheranforderung, der verbrauchten CPU-Zeit sowie der Anzahl der Prozesse eines Benutzers. Die Prioritätssabzüge sind abhängig von der Speicherausstattung des jeweiligen Rechners sowie der dort erlaubten CPU-Zeit.