Rechnernetze

Werbung
BETRIEBSSYSTEME
ZUSAMMENFASSUNG
3. Semester
20.03.2008
Bearbeiter:
Angelo Menconi
Thomas Kränzler
2
Rechnernetze
Inhalt
1.
Einführung in Betriebssysteme ...................................................................................................................... 4
1.1.
Definition Betriebssystem ..................................................................................................................... 5
1.2.
Eigenschaften eines Betriebssystems .................................................................................................... 6
1.3.
Arten von Betriebssystemen ................................................................................................................. 7
1.3.1.
Mainframe ......................................................................................................................................... 7
1.3.2.
Server-Betriebssysteme .................................................................................................................... 7
1.3.3.
Multiprozessor-Betriebssysteme ...................................................................................................... 8
1.3.4.
Betriebssysteme für den PC .............................................................................................................. 8
1.3.5.
Echtzeitbetriebssysteme ................................................................................................................... 8
1.3.6.
Betriebssysteme für eingebettete System ........................................................................................ 9
1.3.7.
Betriebssysteme für Chipkarten ........................................................................................................ 9
1.4.
Mehrprozessorsysteme: Art der Kopplung .......................................................................................... 10
1.5.
Computer Hardware ............................................................................................................................ 11
1.5.1.
Prozessor ......................................................................................................................................... 11
1.5.2.
Hauptspeicher ................................................................................................................................. 12
1.5.3.
Ein-/Ausgabegeräte ......................................................................................................................... 13
1.5.4.
Exkurs: Unterbrechungsmechanismen ........................................................................................... 14
1.5.5.
Bussysteme ..................................................................................................................................... 14
1.6.
Betriebssystemkonzepte ..................................................................................................................... 15
1.6.1.
Prozesse .......................................................................................................................................... 15
1.6.2.
Deadlocks ........................................................................................................................................ 16
1.6.3.
Speicherverwaltung......................................................................................................................... 17
1.6.4.
Ein-/Ausgabeverwaltung ................................................................................................................. 17
1.6.5.
Dateiverwaltung .............................................................................................................................. 18
1.6.6.
Exkurs: Vergleich Prozesshierarchie und Dateihierarchie ............................................................... 19
1.6.7.
Sicherheit ........................................................................................................................................ 19
1.6.8.
Die Shell ........................................................................................................................................... 20
1.7.
Systemaufrufe ..................................................................................................................................... 20
1.8.
Strukturen der Betriebssysteme .......................................................................................................... 21
1.8.1.
Monolithische Systeme ................................................................................................................... 21
1.8.2.
Geschichtete/Hierarchische Systeme ............................................................................................. 23
1.8.3.
Micokernel/Client-Server-Systeme ................................................................................................. 24
18. September 2007
Einführung in Betriebssysteme
2
3
1.8.4.
2.
4.
Objektorientierte Systeme .............................................................................................................. 25
Scripting ........................................................................................................................................................ 26
2.1.
Interpreter- versus Compilersprachen & Java ..................................................................................... 26
2.2.
Unix und die Unix-Shell........................................................................................................................ 27
2.3.
Die Shell als Programmablaufumgebung............................................................................................. 28
2.3.1.
Starten von Kommandos ................................................................................................................. 28
2.3.2.
Ein-/Ausgabe-Umlenkung ............................................................................................................... 29
2.3.3.
Verkettung über Pipes ..................................................................................................................... 30
2.4.
3.
Rechnernetze
Die Shell als Programmiersprache ....................................................................................................... 31
2.4.1.
Wildcard-Zeichen ............................................................................................................................ 31
2.4.2.
Shell-Variable & Variablen-Substitution .......................................................................................... 31
2.4.3.
Quoting............................................................................................................................................ 32
2.4.4.
If-Anweisung ................................................................................................................................... 33
2.4.5.
Case-Anweisung .............................................................................................................................. 34
2.4.6.
For-Schleife...................................................................................................................................... 35
2.4.7.
While-Schleife ................................................................................................................................. 36
2.4.8.
Until-Schleife ................................................................................................................................... 37
2.4.9.
Break/Continue-Anweisung ............................................................................................................ 37
System-API (application programming interface) ........................................................................................ 38
3.1.
Exkurs: Bestandteile eines Prozesses .................................................................................................. 41
3.2.
Exkurs: Systemaufruf fork() ................................................................................................................. 41
3.3.
Exkurs: Ein-/Ausgabe-Umlenkung mittels der System-API .................................................................. 42
Prozessorverwaltung – Scheduling und Dispatching .................................................................................... 43
4.1.
Zustände eines Prozesses .................................................................................................................... 43
4.2.
Grundbegriffe zur Prozessorverwaltung.............................................................................................. 45
4.3.
Prozessorverwaltung: Der Scheduler .................................................................................................. 46
4.4.
Prozessorverwaltung: Der Dispatcher ................................................................................................. 46
4.5.
Prozessorverwaltung: Die Ziele ........................................................................................................... 47
4.6.
Zuteilungsstrategien ............................................................................................................................ 47
4.6.1.
Round-Robin-Verfahren .................................................................................................................. 48
4.6.2.
Multi-Level-Priority-Verfahren ........................................................................................................ 49
4.6.3.
Multi-Level-Feedback-Verfahren .................................................................................................... 50
18. September 2007
Einführung in Betriebssysteme
3
4
Rechnernetze
1. E INFÜHRUNG IN B ETRIEBSSYSTEME
Ein Rechnersystem besteht aus folgenden 3 Komponenten (Betriebssystem läuft
auch unter Systemprogramme):

Hardware
o Physische Geräte (Schaltungen, Drähte, Stromversorgung usw.)
o Mikroarchitektur (Datenbearbeitung wie z.B. Addition von zwei
Operanden, Ergebnis wird in Registern abgelegt)
o Maschinensprache (Ergebnisse der Datenbearbeitung sind
Anweisungen wie z.B. Zugriff auf Festplatte an der Position xy)

Betriebssystem
o Schnittstelle zwischen Hardware und System- sowie
Anwendungsprogrammen
o Ziel: Reduzierung der Komplexität für Programmierer von
Systemprogrammen und Bereitstellung von Funktionen für
Anwendungsprograme
o Läuft im Kernelmodus und wird dadurch von der Hardware vor
Manipulation geschützt und hat unbeschränkten Zugriff auf die
Hardware

Systemprogramme
o Compiler, Editoren und Kommando-Interpreter zum
programmieren und ausführen von Programmen
o Unterschied zum Betriebssystem: Betriebssystem läuft im
Kernelmodus, Systemprogramme dagegen im Benutzermodus.
Auswirkung: Systemprogramme können geändert werden (User
verwendet z.B. einen anderen Compiler als den vorinstallierten)

Anwendungsprogramme
o Programme die von Usern auf dem Rechner genutzt werden (z.B.
Tabellenkalkulation, Textverarbeitung, Browser)
o Laufen ebenfalls im Benutzermodus
18. September 2007
Einführung in Betriebssysteme
4
5
Rechnernetze
1.1. D EFINITION B ETRIEBSSYSTEM
Nach Tanenbaum erfüllt das Betriebssystem zwei Funktionen:
Erweiterung der Hardware
Reduzierung der Komplexität durch Abstraktion der
Hardware. Die realen Eigenschaften der Hardware
werden versteckt.
Beispiel: Programmierer muss sich z.B. nicht mehr mit
dem Zustand des Festplattenmotors beschäftigen
sondern nur noch mit den Dateioperationen wie
lesen, schreiben, löschen usw.
Stellt dem Benutzer eine virtuelle Maschine zur
Verfügung die einfacher zu handhaben ist wie die
Hardware
Schnittstelle für den Benutzer  Top-down-Sicht
18. September 2007
Verwaltung von Ressourcen
Ressourcenverwaltung nach Zeit.
Zuteilung von Ressourcen an konkurrierende
Prozesse mittels Zeitmultiplex.
Beispiel: Belegung des Druckers bei mehreren,
gleichzeitigen Druckaufträgen
Ressourcenverwaltung nach Raum.
Zuteilung von Ressourcen an konkurrierende
Prozesse mittels Raummultiplex.
Beispiel: Aufteilung des Hauptspeichers in mehrere
Bereich damit gleichzeitig mehrere Programme
zwischengespeichert werden
Verwaltung aller Bestandteile eines komplexen
Systems  Bottom-up-Sicht
Einführung in Betriebssysteme
5
6
Rechnernetze
1.2. E IGENSCHAFTEN
EINES
B ETRIEBSSYSTEMS
Ein Betriebssystem sollte mehrere Eigenschaften erfüllen, die zum Teil
konkurrierend sind.
Leistungsfähig
Betriebssystem
Wartungsfreundlich
Zuverlässig
Benutzerfreundlich
Beispiel für konkurrierende Eigenschaften:

Leistungsfähigkeit: optimale Auslastung der Hardware und gute
Antwortzeiten

Je besser die Komponenten ausgelastet sind (z.B. CPU), desto länger sind
die Antwortzeiten (Prozesse werden nacheinander von der CPU bearbeitet)
18. September 2007
Einführung in Betriebssysteme
6
7
Rechnernetze
1.3. A RTEN
VON
1.3.1.
Eigenschaften von Mainframes
Hohe Ein- und Ausgabebandreite
Ausführung vieler Prozesse
gleichzeitig
Sehr hoher Speicher- und
Rechenbedarf
M AI N FR A M E
Einsatz von Mainframes
Frühere Netzwerkarchitektur
Heute Comeback als große WebServer, e-Commerce-Server
1.3.2.
Eigenschaften von Servern
Große PCs, Workstations oder
Mainframes
Bedienen (serve) viele Nutzer über
ein Netzwerk (client/server)
Hoher Speicher- und
Rechenbedarf (je nach Einsatz)
B ETRIEBSSYSTEMEN
Beispiele für Mainframe-OS
IBM OS/390
Siemens BS2000
S ERV E R -B ET RI E B SS YS T E M E
Einsatz von Servern
Druckdienste
Beispiele für Server-OS
Unix
Dateifreigabe
Windows Server
Webdienste uvm.
Linux
18. September 2007
Einführung in Betriebssysteme
7
8
Rechnernetze
1.3.3.
M UL T I P RO Z E SS O R -B ET RI E B SS YS T EM E
Um höhere Rechenleistung zu erzielen werden mehrere Prozessoren in
einem Computer zusammengeschalten.
Andere Bezeichnungen für Multiprozessor-System:

Parallelcomputer

Multicomputer

Multiprozessor-Computer
1.3.4.
B E T RI E BS SY ST E M E
FÜ R D E N
PC
Betriebssystem für einen Personalcomputer. Hauptaufgabe ist die
Bereitstellung einer Schnittstelle für den Benutzer.
Eigenschaften von PCs
(meist grafische) Schnittstelle zum
Benutzer
Angemessene Speicher- und
Rechenausstattung
Einsatz von PCs
Büro und Zuhause
Beispiele von PC-OS
Windows XP, Vista
Textverarbeitung,
Tabellenkalkulation, Internet usw.
Suse Linux, Apple MacOS
1.3.5.
E CH T ZEI T B E T RI E BS SY S T E M E
Zeit als wichtiger Parameter bei der Ressourcenvergabe.
Beispiel: Schweißroboter auf einer Produktionslinie – wenn der Roboter
zu früh oder zu spät anfängt mit schweißen wird das Produkt zerstört!
Unterscheidung in zwei Untergruppen:

Hartes Echtzeitsystem: Aktion muss unter allen Umständen zu
einem bestimmten Zeitpunkt stattfinden

Weiches Echtzeitsystem: Toleranz beim Zeitpunkt der Aktion
(z.B. digitale Audio- und Multimediasysteme)
18. September 2007
Einführung in Betriebssysteme
8
9
Rechnernetze
1.3.6.
B E T RI E BS SY ST E M E
S YST E M
FÜ R E I N GE B ET T E T E
Vorrangig für kleinere Systeme gedacht bei denen es weniger auf die Einund Ausgabebandbreite ankommt.
Eigenschaften von Embedded
Systemen
Geringe Größe
Geringe Speicher- und
Rechenausstattung
Geringer Stromverbrauch
Einsatz von Embedded Systemen
Beispiele von Embedded-OS
Mobiltelefone
Thin-Clients
PalmOS
Windows CE
PDA
1.3.7.
B E T RI E BS SY ST E M E
FÜ R
C HI P K A RT EN
Die kleinsten Betriebssysteme laufen auf Smartcards. Durch den sehr
stark begrenzten Platz für Speicher- und Rechenleistung beherrschen die
Betriebssysteme oft nur eine bzw. wenige Aktionen (z.B. bezahlen,
abheben).
Es gibt auch Smartcards mit einem auf Java basierenden Betriebssystem,
d.h. die Karten besitzen einen Java Interpreter (Java Virtual Machine).
18. September 2007
Einführung in Betriebssysteme
9
1
0
Rechnernetze
1.4. M EHRPROZESSORS YSTEME : A RT
DER
K OPPLUNG
Bei eng gekoppelten Mehrprozessorsystemen (engl.: tightly-coupled multiprocessor system) greifen wenige (derzeit bis zu 16) Zentralprozessoren auf
einen geteilten großen Arbeitsspeicher zu. Sie befinden sich an einem Ort
und benutzen einen gemeinsamen Speicherbus.
Bei lose gekoppelten Mehrprozessorsystemen (engl.: loosely-coupled multiprocessor system) verfügt jeder Zentralprozessor über einen eigenen
(lokalen) Speicher. Die Prozessoren kommunizieren über geteilte
Verbindungen in der Form lokaler Netze oder Clusternetze.
18. September 2007
Einführung in Betriebssysteme
10
1
1
Rechnernetze
1.5. C OMPUTER H ARDWARE
Das Betriebssystem ist sehr eng mit der Hardware eines Rechners verbunden,
es verwaltet z.B. die Ressourcen oder erweitert den Befehlssatz eines
Rechners. Darum muss ein Betriebssystem über die Hardware genau
Bescheid wissen, und darüber wie ein Programmierer auf diese zugreifen
kann.
1.5.1.
P RO ZE S SO R
Die CPU ist das Gehirn des Computers. Sie holt sich Befehle aus dem
Speicher, dekodiert diese und führt sie aus.
(Holen Dekodieren  Ausführen)
Um den Durchsatz einer CPU zu steigern, also die Möglichkeit mehrere
Befehle gleichzeitig zu bearbeiten, gibt es zwei Ansätze:

Pipeline-Architektur: eine CPU besitzt (mehrere) getrennte Hol-,
Dekodier-, und Ausführungseinheiten die zu einer Pipeline
zusammengefasst werden.
Es gibt unterschiedliche Ausprägungen in Länge und
Komplexität von Pipelines.
Beispielgrafik: eine dreistufe Pipeline mit getrennten Einheiten.
Es kann Befehl „n“ ausgeführt werden, während Befehl „n+1“
dekodiert wird und Befehl „n+2“ gerade geholt wird.

Superskalare CPU: bei der superskalaren CPU gibt es mehrere
Ausführungseinheiten die auf gewisse Befehle spezialisiert sind
(z.B. für Integer-Arithmetik, Gleitkomma-Arithmetik, boolesche
Operationen usw.).
Es werden gleichzeitig mehrere Befehle aus dem Speicher
geholt, dekodiert und in einem Puffer abgelegt.
Sobald eine Ausführungseinheit bereit ist, sieht diese im Puffer
nach zu bearbeitenden Befehlen nach. Sind welche vorhanden,
werden diese aus dem Puffer geladen und ausgeführt.
Prozessoren besitzen zwei Modi:

Kernel-Modus: voller Zugriff auf die Hardware

User-Modus: für Benutzerprogramme, nur ein Teil der
Hardware und der Befehle ist verfügbar
18. September 2007
Einführung in Betriebssysteme
11
1
2
Rechnernetze
1.5.2.
H AU P T S P EI C H E R
Der Speicher dient als Puffer, Zwischenspeicher für Programme und die
langfristige Speicherung von Daten. Idealerweise sollte der Speicher
genauso so schnell sein wie die CPU, damit diese bei der Bearbeitung
von Befehlen nicht ausgebremst wird.
Da schneller Speicher aber extrem teuer ist, gibt es eine
Speicherhierarchie.
Absteigend wird, dem Verwendungszweck entsprechend, langsamerer
und günstigerer Speicher mit höherer Speichergröße gewählt:
18. September 2007
Einführung in Betriebssysteme
12
1
3
Rechnernetze
1.5.3.
E I N -/A U S GA B E GE R ÄT E
Wie in der Abbildung oben zu sehen, bestehen Ein-/Ausgabegeräte (z.B.
Monitor, Tastatur, Maus, Festplatte usw.) aus zwei Teilen:

Controller: Chip auf der Hauptplatine zur Kontrolle des Geräts.
Der Chip erhält die Befehle vom Betriebssystem.

Geräte: das Gerät selber, z.B. die Tastatur
Der Controller ist dafür zuständig, die komplizierte Steuerung eines
Geräts, durch eine Schnittstelle zum Betriebssystem zu vereinfachen.
Beispiel: Benutzer will eine Datei öffnen und klickt diese dazu an.

Befehl von Betriebssystem an Controller: Lies die Datei „xy“.

Befehl von Controller an Festplatte:
o Umwandlung des Befehls in Zylinder, Spur und Sektor
o Prüfung ob fehlerhafte Sektoren ausgelagert wurden
o Momentane Position des Lesekopfs ermitteln
o Steuerung des Lesekopfs an die richtige Position
o Warten bis Lesekopf an Position und Lesevorgang
starten
o Usw.
Da es viele unterschiedliche Controllertypen gibt, benötigt man für jeden
Typ eine Software um diesen zu steuern.
Diese Software nennt man Gerätetreiber.
Der Gerätetreiber wird im Kernelmodus des Betriebssystems integriert
und spricht mit dem Controller, gibt ihm die Befehle und empfängt die
Antworten.
Betriebssystem
Gerätetreiber
Controller
Gerät
Eine Variante ist das der Gerätetreiber zur Laufzeit des Betriebssystems
geladen und gebunden wird. In diesem Fall ist kein Neustart notwendig.
Diese Variante nennt sich Hot-Plug und wird z.B. von USB-Geräten
verwendet.
18. September 2007
Einführung in Betriebssysteme
13
1
4
Rechnernetze
1.5.4.
E XK U RS : U N T E R BR E CH UN GS M E CH AN I S M EN
Moderne Betriebssysteme steuern Geräte mit Unterbrechungsmechanismen (Interrupts). Bei diesem Verfahren erteilt der
Gerätetreiber dem Gerät Befehle und signalisiert die Fertigstellung mit
einer Unterbrechung. Das Verfahren läuft folgendermaßen ab:
1.
2.
3.
Treiber erteilt dem Controller Befehle, Controller startet Gerät
Controller signalisiert dem Interrupt-Controller die
Fertigstellung der Befehle
CPU behandelt die Unterbrechung des Geräts und erkennt das
das Geräte für die nächsten Befehle frei ist.
(a)
(b)
Der Unterbrechungsmechanismus ermöglicht der CPU laufende
Befehlsbearbeitungen zu unterbrechen, z.B. bei Fertigmeldung eines
Geräts (siehe oben), Aufruf von Systemaufrufen (Traps) oder Ablauf
eines Zeitintervalls.
1.5.5.
B U SS YS T EM E
Aus Performancegründen besitzen moderne Hauptplatinen viele Busse
die unterschiedliche Geräte anbinden. Auf folgender Abbildung sieht
man z.B. 8 unterschiedliche Busse (Cache, Lokaler Bus, Speicherbus, PCI,
SCSI, USB, IDE, ISA):
18. September 2007
Einführung in Betriebssysteme
14
1
5
Rechnernetze
1.6. B ETRIEBSSYSTEMKONZEPT E
1.6.1.
P RO ZE S S E
Ein Prozess ist ein in Ablauf befindliches Programm.
Jedem Prozess wird ein Adressraum zugeordnet, in dem die zur
Ausführung benötigten Informationen liegen:

das ausführbare Programm

die Programmdaten

Stack

weitere Register

weitere Informationen die zur Ausführung benötigt werden
Die gesamte ausführbare Software und das Betriebssystem auf einem
System werden als eine Menge von Prozessen organisiert.
Ein Prozessor kann immer nur einen Prozess gleichzeitig bearbeiten.
Moderne Betriebssysteme besitzen Verfahren um die CPU-Rechenzeit
unter Prozessen so aufzuteilen, dass eine Quasiparallelität entsteht
(dem Benutzer kommt es vor als würden die Prozesse gleichzeitig
bearbeitet werden).
Dazu wurde die Möglichkeit entwickelt Prozesse nur teilweise
auszuführen, zu unterbrechen, und später wieder aufzusetzen und
fortzuführen, was im Prozessmodell beschrieben wird.
Das Prozessmodell beschreibt die drei wesentlichen Zustände eines
Prozesses:

WARTEND: Der Prozess wartet auf die Zuteilung eines
Prozessors

LAUFEND: Der Prozess ist aktuell einem Prozessor zugeordnet
und läuft ab.

UNTERBROCHEN: Der Prozess wurde durch einen anderen
Prozess oder die CPU unterbrochen.
Um die CPU-Rechenzeit aufzuteilen gibt es unterschiedliche Ansätze:

Zeitscheibenverfahren

Scheduling

Dispatcher

uvm.
Gesteuert werden Prozesse durch Signale. Signale funktionieren im
Softwarebereich Analog zu den Interrupts im Hardwarebereich.
Prozesse können diverse Systemaufrufe durchführen, wie z.B.:

Erzeugung und Beendigung von Prozessen

Anfordern oder Freigeben von Speicher
18. September 2007
Einführung in Betriebssysteme
15
1
6
Rechnernetze
Erzeugt ein Prozess weitere Prozesse entsteht eine Prozesshierarchie.
Die Kommunikation zwischen Prozessen die in solch einer Beziehung
zueinander stehen nennt man Interprozesskommunikation.
1.6.2.
D E A D LO CK S
Ein Deadlock beschreibt die Situation wenn zwei oder mehrere Prozesse
sich gegenseitig blockieren.
Eine Menge von Prozessen ist dann blockiert, wenn jeder Prozess in
dieser Menge auf ein Ereignis wartet das nur von einem anderen Prozess
ausgelöst werden kann (Abhängigkeit, siehe Beispiel unten).
Tritt ein Deadlock auf, können die Prozesse nicht mehr weiterarbeiten.
18. September 2007
Einführung in Betriebssysteme
16
1
7
Rechnernetze
1.6.3.
S P EI C H ERV E RW A L T UN G
Im Hauptspeicher (Arbeitsspeicher) werden ausführbare Programme
gespeichert. Moderne Betriebssysteme erlauben es, gleichzeitig mehrere
Programme im Hauptspeicher zu speichern.
Damit sich die verschiedenen Programme und das Betriebssystem im
Hauptspeicher nicht gegenseitig stören gibt es Schutzmechanismen.
Diese Schutzmechanismen stecken in der Hardware, werden aber vom
Betriebssystem verwaltet.
Neben den Schutzmechanismen verwaltet das Betriebssystem auch die
Adressräume der Prozesse.
Jeder Prozess erhält einen eigenen Adressraum von 0 bis Obergrenze xx.
Für die Problematik, dass der Adressraum eines Prozesses größer als der
Hauptspeicher ist, wurde der virtuelle Speicher eingeführt.
Beim virtuellen Speicher werden der Hauptspeicher und der
Festplattenspeicher zusammen verwaltet. Das Betriebssystem kann Teile
von einem Speicher zum anderen – je nachdem wie es gerade günstig ist.
1.6.4.
E I N -/A U S GA B EV ER W A L T UN G
Ein Betriebssystem verfügt über ein Ein-/Ausgabe-Subsystem das die
Geräte (z.B. Tastatur, Maus, Monitor, Drucker) organisiert.
Es gibt Software die geräteunabhängig ist und für somit für alle Ein/Ausgabegeräte passt, und spezielle Software wie Gerätetreiber die für
ein Gerät programmiert ist.
18. September 2007
Einführung in Betriebssysteme
17
1
8
Rechnernetze
1.6.5.
D AT EI V E RW A LT U N G
Um Daten zu speichern unterstützen Betriebssysteme das Konzept der
Verzeichnisse. In Verzeichnissen werden Dateien gruppiert.
Um Verzeichnisse zu erstellen, zu löschen, sowie Dateien in
Verzeichnissen zu erstellen, zu löschen, usw., werden Systemaufrufe
bereitgestellt. Ein Verzeichnis kann sowohl Daten, als auch weitere
Verzeichnisse enthalten. Dadurch entsteht eine Hierarchie die
Dateisystem genannt wird.
Der Weg durch das Verzeichnis beginnt beim Wurzelverzeichnis (root
directory) und geht bis zum gewünschten Verzeichnis bzw. der
gewünschten Datei. Dieser Weg wird Pfad genannt und wird
folgendermaßen dargestellt (erster Schrägstrich steht für das
Wurzelverzeichnis):
/faculty/prof.brown/courses/cs101
Jedem Prozess ist ein aktuelles Arbeitsverzeichnis zugeordnet. Dieses
Arbeitsverzeichnis ist für den Prozess wie das Wurzelverzeichnis.
Ist z.B. /faculty/prof.brown das Arbeitsverzeichnis eines Prozesses, dann
reicht der Pfadname courses/cs101 aus, um dorthin zu gelangen.
Durch einen Systemaufruf mit einem Pfad als Argument, kann das
Arbeitsverzeichnis eines Prozess geändert werden.
Unter UNIX können Daten auf entfernbare Medien wie Disketten oder
CD´s nicht ohne weiteres benutzt werden. Dazu müssen diese Medien
erst in das Dateisystem integriert werden. Diesen Vorgang nennt man
mounten.
18. September 2007
Einführung in Betriebssysteme
18
1
9
Rechnernetze
1.6.6.
UN D
E XK U RS : V E R GL EI C H P RO Z E S SHI E RA R CHI E
D AT EI HI E RA R CHI E
Organisationsform
Organisationstiefe
Dauerhaftigkeit
Berechtigungen
Prozesshierarchie
Baumstruktur
2-3 Ebenen
Kurzlebig, max. wenige Minuten
Nur Vaterprozess auf Kindprozess
Kommunikation
Über Pipes
Verzeichnishierarchie
Baumstruktur
4-6 Ebenen und mehr
Langlebig, mehrere Jahre
Berechtigungsstufen für viele User
(siehe Thema Sicherheit)
Eine Pipe ist ein unidirektionaler Kanal zwischen zwei Prozessen.
Wenn Prozess 1 Daten an Prozess 2 senden möchte, schreibt er sie in die
Pipe, so als ob diese eine Ausgabedatei wäre.
Prozess 2 wiederum liest die Daten aus der Pipe wie aus einer
Eingabedatei.
Es gibt als eine sehr starke Ähnlichkeit zwischen dem normalen Lesen
und Schreiben einer Datei und der Kommunikation über eine Pipe.
Nur anhand eines Systemaufrufs erkennt ein Prozess, dass die Daten in
eine Pipe geschrieben werden, bzw. aus einer Pipe kommen.
1.6.7.
S I C HE R HEI T
Das Betriebssystem ist auch dafür zuständig Dateien vor nicht
berechtigtem Zugriff zu schützen. Hierzu arbeiten Betriebssysteme mit
verschiedenen Autorisierungsstufen.
Beispiel aus UNIX:

Schutz durch 9-Bit Code
o 3 Gruppen von 3-Bits: read, write, execute
o 3 Gruppen: Eigentümer, Gruppe, alle Anwender
o „-“ steht für: keine Berechtigung
o Beispiel: rwx r-x --x
18. September 2007
Einführung in Betriebssysteme
19
2
0
Rechnernetze
1.6.8.
D I E S H EL L
Ist nicht Teil des Betriebssystems (gehört in den Bereich
Systemsoftware). Sie ist aber die wichtigste Schnittstelle zwischen dem
Benutzer am Terminal und dem Betriebssystem, wenn es keine grafische
Oberfläche gibt.
Die Shell nutzt sehr stark die Eigenschaften des Betriebssystems wie
Systemaufrufe und Pipes, und besitzt Programmierspracheneigenschaften.
1.7. S YSTEMAU FRUFE
Systemaufrufe sind die Schnittstelle zwischen dem Betriebssystem und den
Benutzerprogrammen.
Systemaufrufe funktionieren wie Methodenaufrufe: das Benutzerprogramm führt
einen Systemaufruf auf, wartet bis dieser bearbeitet ist und geht dann im
Programmcode weiter.
Grund für Systemaufrufe ist die Trennung zwischen dem Betriebssystem im
Kernelmodus und den Benutzerprogrammen im Benutzermodus. Will ein
Benutzerprogramm eine Aufgabe erfüllen die nur im Kernelmodus möglich ist
(z.B. Zugriff auf die Hardware), führt es einen Systemaufruf durch.
Der Prozess bleibt ständig im Benutzermodus (Schutz des Systems).
1.
4.
5.
6.
Parameter werden im Stack abgelegt
Aufruf der Bibliotheksfunktion (system call) „read“
Systemaufruf wird im Register abgelegt
TRAP-Funktion wird ausgeführt zum Wechsel von Benutzermodus in
Kernelmodus (Betriebssystem übernimmt die Kontrolle)
7. Systemaufruf wird zur Bearbeitung geholt
8. Systemaufruf wird gestartet und bearbeitet
9. Nach Bearbeitung geht Kommando an die Bibliothek zurück die TRAP
ausgeführt hat
10. Bibliothek kehrt zum Benutzerprogramm zurück
11. Benutzerprogramm muss Systemaufruf beenden indem Stack geräumt wird
18. September 2007
Einführung in Betriebssysteme
20
2
1
Rechnernetze
1.8. S TRUKTUREN
DER
B ETRIEBSSYSTEME
Die Struktur eines Betriebssystems beschreibt den inneren Aufbau wie z.B.
die Anordnung des Programmcodes, der Prozeduren usw. Im Wesentlichen
geht es dabei um die Struktur des Kernels.
Ein Kernel hat meist folgenden Aufgaben:
1.8.1.

Speicherverwaltung

Prozessverwaltung

Geräte- und Hardwareverwaltung

Schnittstelle für Treiber oder Anwendungsprogramme

Dateisystemverwaltung
M O N O LI T HI SC H E S Y ST E M E
Organisationsform ist die „große Masse“ ohne Struktur. Das
Betriebssystem ist eine Menge von Prozeduren dich sich gegenseitig
aufrufen können. Jede Prozedur hat, wie eine Methode in der
Programmierung, eine Schnittstelle in Form von Parametern und
Rückgabewerten (Ergebnisse).
Monolithische Systeme bringen alle obengenannten Kernel-Funktionen,
wie z.B. Treiber, im Kernel unter.
Das hat folgende Vor- und Nachteile:
Vorteile
effiziente Kommunikation im Kern
Hardwarezugriffe jederzeit und unmittelbar
durchführbar (privilegierter Kernelmodus)
18. September 2007
Nachteile
kein Zugriffsschutz zwischen den Komponenten
Undurchsichtige, interne Struktur
(änderungsunfreundlich, fehleranfällig)
Einführung in Betriebssysteme
21
2
2
Rechnernetze
18. September 2007
Einführung in Betriebssysteme
22
2
3
Rechnernetze
1.8.2.
G E S CHI C HT ET E /H I E RA RC HI S CH E S Y ST E M E
Das Betriebssystem wird in Schichten aufgebaut, wobei jede Schicht auf
die darunterliegende aufbaut.
Vorteile
Schutz zwischen verschiedenen BS-Teilen
Interne Strukturierung
18. September 2007
Nachteile
Mehrfacher Schutzraumwechsel ist teuer
Unflexibler und nur einseitiger Schutz (von unten
nach oben)
Einführung in Betriebssysteme
23
2
4
Rechnernetze
1.8.3.
M I CR O K E RN E L /C LI E N T -S E RV ER -S Y ST E M E
Der Ansatz der Client-Server-Systeme ist es, möglichst alle
Funktionalitäten aus dem Kernel auszulagern. Damit bleibt nur ein
Mikrokern übrig.
Dazu werden die Funktionen in Benutzerprogrammen implementiert
(Server), die von Benutzerprozessen (Client) angesprochen werden.
Ähnlich der Kommunikation in einem Netzwerk wartet der Client dann
auf eine Antwort (Acknowledgement) des Servers.
Der Kernel kümmert sich dann nur um folgende Aufgaben:

einfaches Prozessmanagement

einfaches Speichermanagement

effiziente Wege zur Inter-Prozess-Kommunikation (IPC)
Das hat folgende Vor- und Nachteile:
Vorteile
Gute Modularisierung durch Trennung der Server
Schutz der Komponenten voreinander
(stürzt ein Server ab, läuft das System weiter)
18. September 2007
Nachteile
Kommunikation zwischen Modulen ist teuer
Einführung in Betriebssysteme
24
2
5
Rechnernetze
1.8.4.
O B J EK T O RI EN T I E RT E S YST E M E
Vorteile
Schutz auf mehreren Ebenen (Sprache, Code-Prüfung,
Adressraum)
Modularisierung und Effizienz möglich
18. September 2007
Nachteile
Komplexes Sicherheitsmodell
Einführung in Betriebssysteme
25
2
6
Rechnernetze
2. S CRIPTING
Skriptsprachen sind Programmiersprachen, die vor allem für kleine, überschaubare
Programmieraufgaben gedacht sind. Skriptsprachen sind Interpretersprachen.
Häufig werden sie von Administratoren zur Automatisierung bestimmter Aufgaben
verwendet:

Administration von Betriebssystemen

Benutzerverwaltung, Anmeldeskripte

Netzwerkinstallationen
2.1. I NTERPRETER J AVA
Interpretersprache
Quellcode wird direkt, Zeile für Zeile gelesen,
analysiert und ausgeführt
Keine Compilier- und Linkzeit
Langsam, da Quellcode erst interpretiert werden
muss
Schneller Korrektur- / Test-Zyklus
Beispiele: DOS Batch-Prozessor, UNIX Shell, OS/2
REXX, JavaScript, JScript, VBScript
VERSUS
C OMPILERS PRACHEN &
Compilersprache
Quellcode wird compiliert und gelinkt. Entstandenes
Programm kann ausgeführt werden
Compilier- und Linkzeit nötig
Schnell, da Programm bereits compiliert und Code
damit schon in Maschinensprache vorliegt
langsame Korrektur- / Test-Zyklus
C, C++, Pascal
Java vereint die Funktionen von Interpreter- und Compilersprachen.
Warum das funktioniert erklärt folgender Artikel:
„Java ist fast eine Interpretersprache. Das "fast" ist das Neue an Java. Java
interpretiert keinen Quellcode sondern einen Bytecode. Dieser sieht auf den
ersten Blick aus wie Maschinencode. Er ist es auch, aber nur für die Virtuelle
Java Maschine. Dieser Bytecode muss natürlich nicht vom Programmierer
geschrieben werden. Er wird vom Java-Compiler erzeugt. Der Interpreter
führt ihn dann aus, indem er die systemspezifischen Befehle ausführt.“
18. September 2007
Scripting
26
2
7
Rechnernetze
2.2. U NIX
UND DIE
U NIX -S HELL
UNIX ist ein Multi-User- und Multitasking-Betriebssystem. Es baut auf dem
Schichtenmodell auf. In diesem besitzt nur der Kernel Zugriff auf die
Hardware. Die Schnittstelle vom Benutzer zur Hardware läuft über SystemCalls, wodurch die Benutzerprozesse im Kernelmodus laufen.
Die Unix-Shell ist die Benutzerschnittstelle in welcher der Benutzer
Kommandos eintippt, die der Computer dann sofort ausführt. Man spricht
darum auch von einem Kommandozeileninterpreter.
Die meisten gängigen Unix-Shells bieten die folgenden Funktionen:

Starten von Kommandos (2.3.1)

Dateinamen-Wildcards (globs) als Kommandoargumente (2.3.4)

Bedingungen (if, case) und Schleifen (while, for)

interne Kommandos (cd, read)

interne Variablen ($HOME)

Manipulation der Umgebungsvariablen für die neuen Prozesse

Ein-/Ausgabeumlenkung (2.3.2)

Verkettung über Pipes (Starten mehrerer Prozesse) (2.3.3)

Starten von Prozessen im Hintergrund
18. September 2007
Scripting
27
2
8
Rechnernetze
2.3. D IE S HELL
ALS
P ROGRAMMABLAUFUMGEBUN G
Eigenschaften von UNIX als Programmablaufumgebung:

Programme sind ausführbare Dateien

Prozesse sind Programme in Ausführung

Prozesse werden von anderen Prozessen mittels „fork“-Systemcall
erstellt

Programme werden mittels „exec“-Systemcall ausgeführt
Die UNIX-Shell ist ein interaktiver Kommandozeileninterpreter:

Liest Befehlszeile, interpretiert sie als Befehl

Erzeugt einen Kindprozess mittels „fork“

Kindprozess führt den Befehl mittels „exec“ aus

Anschließend Aufforderung zur weiteren Eingabe (neue
Befehlszeile)
2.3.1.
S T AR T EN
VON
K O M MA N DO S
Bei der synchronen Ausführung wird ein Befehl nach dem anderen
eingegeben und bearbeitet. Erst nach der Ausführung eines Befehls
erscheint wieder die Eingabeaufforderung.
Bei der asynchronen Ausführung können mittels „&“ mehrere Befehle
nacheinander eingegeben werden, da die Eingabeaufforderung sofort
erscheint (während der zuerst eingegebene Befehl im Hintergrund
ausgeführt wird).
Befehlszeichen für einfache Verknüpfung von Befehlen: prog1 ; prog2
Beispiel: sleep 240 ; who
Befehle können auch durch UND bzw. ODER verknüpft werden
(bedingte Ausführung). Dadurch wird die Ausführung weiterer Befehle
vom Ergebnis des vorigen Befehls abhängig.
Befehlszeichen für UND: prog1 && prog 2
(prog2 wird nur bei Erfolg (return code rc=0) von prog1 ausgeführt)
Befehlszeichen für ODER: prog 1 || prog2
(prog2 wird nur bei Misserfolg von prog1 (rc <> 0) ausgeführt)
18. September 2007
Scripting
28
2
9
Rechnernetze
2.3.2.
E I N -/A U S GA B E -U M L EN K UN G
UNIX verfügt über drei Standard Ein- und Ausgabegeräte. Das sind die
sogenannten Standard-Deskriptoren, die über eine Nummer eindeutig
identifizierbar sind.
• Standardausgabe
• Bildschirm
1
• Standardfehlerausgabe
• Bildschirm
2
• Standardeingabe
• Tastatur
0
Ein- und Ausgaben können umgelenkt werden um so z.B. die Ausgabe
direkt in eine Datei zu speichern (Logfile) oder die Eingabe aus einer
bereits vorhandenen Datei zu lesen (z.B. Kundenstamm). Auch eine
Umlenkung auf das Netzwerk ist möglich, um so z.B. mit einem Server zu
kommunizieren.
Befehlszeichen für die Umlenkung:
Aufgabe
Umlenkung der Standardausgabe
Umlenkung der Standardfehlerausgabe
Umlenkung der Standardeingabe
18. September 2007
„>“ bzw. „<“
Befehl
Prog > file oder Prog >> file (wird hinten angehängt,
keine Überschreibung bereits vorhandener Daten)
Prog 2 > file
Prog < file
Scripting
29
3
0
Rechnernetze
2.3.3.
V ERK ET T UN G
ÜB E R
P I P ES
Die Pipe bezeichnet einen uni- oder bidirektionalen Datenstrom
zwischen zwei Prozessen nach dem „First In – First Out“-Prinzip.
Unter UNIX ist die Pipe ein Standardmittel zur Verknüpfung zweier
Prozesse. Dabei führt der eine Prozess seine Standardausgabe dem
Nachfolger als Standardeingabe zu.
Befehlszeichen für die Verkettung über Pipes: Befehl 1 | Befehl 2
A UNIX pipe after forking
(pp[1] = Standardausgabe, pp[0] = Standardeingabe).
Es gibt zwei Arten von Pipes: die anonyme und die named Pipe.
Anonyme Pipe
Nur bidirektionale Kommunikation möglich
Kommunikation nur zw. verwandten Prozessen
(parent process/child process)
Erzeugung: pipe()
Wird mit close() vom System entfernt
Schreib-/Lesezugriff: read()/write() Systemaufrufe
Named Pipe
Unidirektionale Kommunikation möglich
Kommunikation zw. beliebigen Prozessen, z.B. auch
über ein Netzwerk
Jeder Prozess kann Pipe über deren Namen benutzen
Erzeugung: mknod(), Zugriff: open()
Ist permanent im System vorhanden
Schreib-/Lesezugriff: read()/write() Systemaufrufe
int pipe(int zipfel[2]);
Es werden mit dem Aufruf von pipe zwei Dateihandles erzeugt, die Sie nach dem Aufruf in dem
Parameter zipfel finden. zipfel[0] enthält das Ende zum Lesen und zipfel[1] enthält das Ende
zum Schreiben in die Pipe. Als nächstes erfolgt typischerweise ein Aufruf von fork(). Dann
übernimmt der Vater das eine und das Kind das andere Ende der Pipe und schließt das jeweils
andere, je nach dem, wer von beiden Datenproduzent und wer Datenkonsument ist. Der
Produzent benutzt write() und der Konsument read(). Beide Enden der Pipe müssen separat per
close() geschlossen werden.
18. September 2007
Scripting
30
3
1
Rechnernetze
2.4. D IE S HELL
ALS
P ROGRAMMIERSPRACHE
Die Shell ist nicht nur einfach ein Befehlsempfänger, sondern auch eine
Programmiersprache. Gemischt mit der Kombinierbarkeit der UNIX-Befehle
entsteht die Möglichkeit, auch komplexere Abläufe zu programmieren.
Folgende Programmsprachelemente bietet die Shell:

Variablen

Kontrollstrukturen (if, Schleifen mit for und while)

Zusammenfassung von Befehlen in Skripten (Pedant zu Quelldatei)

Skripte können wie ein Programm direkt ausgeführt werden
2.4.1.
W I L D C AR D -Z EI C H EN
Wildcards sind Platzhalter für Zeichen bzw. Zeichenfolgen. Sie werden
z.B. für Dateiselektionen und -operationen eingesetzt. Im Internet
unterstützen auch viele Suchmaschinen diese Wildcards.

„?“ steht genau für ein beliebiges Zeichen
Beispiel: a?tion (würde das deutsche 'Aktion' als auch den
englischen Begriff 'action' finden)

„*“ (auch Asterisk genannt) steht für eine Zeichenfolge
Beispiel: invest* (würde Wörter wie Investition, Investment,
Investor, investieren etc. finden)
2.4.2.
S H EL L -V A RI A B L E & V A RI A B L EN S UB ST I T UT I O N
Es gibt eine Reihe vordefinierter Variablen, deren Benutzung ein
wesentlicher Bestandteil des Shell-Programmierens ist. Die wichtigsten
eingebauten Shell-Variablen sind:



n Aufrufparameter mit der Nummer n, n <= 9
* Alle Aufrufparameter als 1 String ("$*" == "$1 $2 $3 ...")
@ Alle Aufrufparameter als einzelne Strings ("$@" == "$1"
"$2" "$3" ...)




#
?
$
!
Anzahl der Aufrufparameter
Rückgabewert des letzten Kommandos
Prozessnummer der aktiven Shell
Prozessnummer des letzten Hintergrundprozesses
Unter Variablen-Substitution versteht man verschiedene Methoden, um
die Inhalte von Variablen zu benutzen. Im Folgenden zwei oft benutze
Methoden:

Variable=Wert
Setzt die Variable auf den Wert

${Variable}
Nutzt den Wert der (Shell-)Variable
Beispiel: $7 (Aufrufparameter 7 wird
genutzt), $dir (Wert von dir)
18. September 2007
Scripting
31
3
2
Rechnernetze
2.4.3.
Q UO T I N G
Ouoting behandelt das Thema in der Shell ähnlich aussehenden Zeichen,
völlig unterschiedliche Bedeutungen haben. Das Quoten dient dazu,
Zeichen mit einer Sonderbedeutung vor der Shell zu „verstecken“.
Dies kann z.B. notwendig sein wenn ein Sonderzeichen in einem String
eingesetzt werden soll, oder einfach per „echo“-Befehl auf der
Standardausgabe angezeigt werden soll.
Die folgenden Zeichen haben eine spezielle Bedeutung innerhalb der
Shell:

;
Befehls-Trennzeichen

&
Hintergrund-Verarbeitung

()
Befehls-Gruppierung

|
Pipe

<>&
Umlenkungssymbole

*?[]~+-@!
Meta-Zeichen für Dateinamen

` ` (Backticks)
Befehls-Substitution

$
Variablen-Substitution

[newline] [space] [tab]Wort-Trennzeichen
Die folgenden Zeichen können zum Quoten verwendet werden:

" " (Anführungszeichen) Alles zwischen diesen Zeichen ist
buchstabengetreu zu interpretieren. Ausnahmen sind folgende
Zeichen, die ihre spezielle Bedeutung beibehalten: $ ` "

' ' (Ticks) Alles zwischen diesen Zeichen wird wörtlich
genommen, mit Ausnahme eines weiteren ' und \.

\ (Backslash) Das Zeichen nach einem \ wird wörtlich
genommen. Anwendung z. B. innerhalb von " ", um ", $ und ` zu
entwerten. Häufig verwendet zur Angabe von Leerzeichen
(space) und Zeilenendezeichen, oder um ein \-Zeichen selbst
anzugeben.
18. September 2007
Scripting
32
3
3
Rechnernetze
2.4.4.
I F -A N W EI SU N G
Die if-Anweisung in der Shell funktioniert genau so wie in anderen
Programmiersprachen. Sie testet eine Bedingung auf Wahrheit und
macht davon den weiteren Ablauf des Programms abhängig.
18. September 2007
Scripting
33
3
4
Rechnernetze
2.4.5.
C A S E -A N W EI S UN G
Auch die case-Anweisung ist vergleichbar in vielen anderen Sprachen
vorhanden. Sie dient, ähnlich wie die if-Anweisung, zur Fallunterscheidung. Allerdings wird hier nicht nur zwischen zwei Fällen
unterschieden (Entweder / Oder), sondern es sind mehrere Fälle
möglich.
Wenn der Wert mit dem Muster1 übereinstimmt, wird die
entsprechende Befehlsgruppe (Befehle1) ausgeführt, bei
Übereinstimmung mit Muster2 werden die Kommandos der zweiten
Befehlsgruppe (Befehle2) ausgeführt, usw.
Der letzte Befehl in jeder Gruppe muss mit ;; gekennzeichnet werden.
Das bedeutet für die Shell soviel wie springe zum nächsten esac, so
dass die anderen Bedingungen nicht mehr überprüft werden.
In den Mustern sind die gleichen Meta-Zeichen erlaubt wie bei der
Auswahl von Dateinamen. Wenn in einer Zeile mehrere Muster
angegeben werden sollen, müssen sie durch ein
Pipezeichen (|, bitweises ODER) getrennt werden.
18. September 2007
Scripting
34
3
5
Rechnernetze
2.4.6.
F O R -S C HL EI F E
In anderen Sprachen wird die for-Schleife meistens dazu benutzt, eine
Zählvariable über einen bestimmten Wertebereich iterieren zu lassen
(for i = 1 to 100...next). In der Shell dagegen wird die Laufvariable nicht
mit aufeinanderfolgenden Zahlen belegt, sondern mit einzelnen Werten
aus einer anzugebenden Liste.
Wird keine Liste angegeben (for x do…) dann gilt: for x in $* do…
(x nimmt also Wert aller Argumente an, siehe zweiten Screenshot)
18. September 2007
Scripting
35
3
6
Rechnernetze
2.4.7.
W HI L E -S C H L EI F E
Die while-Schleife ist wieder ein Konstrukt, das einem aus vielen anderen
Sprachen bekannt ist: Die kopfgesteuerte Schleife.
Die Bedingung prüft ob die Anzahl der Aufrufparameter > 0 ist. Ist die
Bedingung erfüllt werden alle Aufrufparameter in der Standardausgabe
angezeigt.
Mit „shift“ werden die Aufrufparameter um einen Wert nach links
verschoben (der Wert von $9 wird in $8 geschrieben, $8 in S7 usw.).
Die Schleife wird so oft durchgeführt bis durch das Verschieben auch in
$1 kein Wert mehr steht, die Anzahl der Parameter ist dann nicht mehr
größer 0.
18. September 2007
Scripting
36
3
7
Rechnernetze
2.4.8.
U N T I L -S CH L EI F E
Die until-Schleife ist das Gegenstück zur while-Schleife: Die ebenfalls aus
vielen anderen Sprachen bekannte Schleife.
Die Befehle werden ausgeführt, bis die Bedingung erfüllt ist.
Die Bedingung wird dabei üblicherweise, genau wie bei der
if-Anweisung, mit dem Befehl test) formuliert. Wenn die Ausführung
eines Schleifendurchlaufs bzw. der ganzen Schleife abgebrochen werden
soll, müssen die Kommandos continue bzw. break benutzt werden.
Beispiel: Hier wird die Bedingung nicht per test sondern mit dem
Rückgabewert des Programms grep formuliert.
2.4.9.
B R E AK /C O N T I N U E -A N W EI SU N G
Man benutzt continue um die restlichen Befehle in einer Schleife zu
überspringen und mit dem nächsten Schleifendurchlauf anzufangen.
Wenn der Parameter n angegeben wird, werden n Schleifenebenen
übersprungen.
Mit break kann man die innerste Ebene (bzw. n Schleifenebenen)
verlassen ohne den Rest der Schleife auszuführen.
18. September 2007
Scripting
37
3
8
Rechnernetze
3. S YSTEM -API
( AP P L I C AT I O N
P RO G R A M MI N G I N T E RF A C E )
Das Thema System-API und Systemaufrufe wird bereits im Kapitel 1.7 behandelt.
Über die System-API stellt das Betriebssystem Anwendungsprogrammen
(application programms) die im Benutzermodus laufen eine Schnittstelle zu
wichtigen Betriebsmitteln zu Verfügung.
Zweck dieser Maßnahme ist es, die Betriebsmittel zu schützen und das System zu
stabilisieren, indem nur über definierte Schnittstellen auf die Hardware und das
Betriebssystem zugegriffen werden darf.
Nur das Betriebssystem ist autorisiert Zugriffe auf die Hardware durchzuführen da es
im Kernelmodus arbeitet.
Anwendungsprogramme im Benutzermodus sind nicht autorisiert, und müssen die
zur Verfügung gestellten Schnittstellen nutzen die wiederum Befehle im
Kernelmodus auslösen.
Allgemeiner Ablauf von Systemaufrufen:

Prozess im Benutzer-Modus benötigt Zugriff auf die Hardware

Prozess führt einen Systemaufruf aus und wird unterbrochen

Systemaufruf wird im Kernelmodus durchgeführt

Ergebnis des Systemaufruf wird an den aufrufenden Prozess gegeben

Prozess wird wieder gestartet und führt den Programmcode an der Stelle
weiter als der Systemaufruf veranlasst wurde

Prozess hat nie den Benutzermodus verlassen und konnte dadurch die
Stabilität des Systems gefährden
18. September 2007
interface)
System-API (application programming
38
3
9
Rechnernetze
Aufbau eines Systems: Unterteilung in Anwendungsprogramme, Systemprogramme
und Hardware:
In den meisten Fällen wird die System-API in Form einer (Programm-)Bibliothek zur
Verfügung gestellt. Hierzu werden zusammengehörende Aufgaben in Sammlungen
zusammengefasst.
Häufig verwendete Funktionen, die auf Systemaufrufen basieren, sind unter
anderem die Dateiverarbeitungsfunktionen open, close, read und write, sowie exec,
fork oder exit. Diese können vom Programmierer wie normale Benutzer-ModusFunktionen genutzt werden, führen aber unbemerkt im Hintergrund einen
Kontextwechsel (in den Kernelmodus) durch.
18. September 2007
interface)
System-API (application programming
39
4
0
Rechnernetze
Im Folgenden einige Beispiele für Systemaufrufe und Bibliotheken unter UNIX:
18. September 2007
interface)
System-API (application programming
40
4
1
Rechnernetze
3.1. E XKURS : B ESTANDTEILE
EINES
P ROZESS ES
Ein Prozess besitzt folgende Hauptbestandteile:

PID: Process ID, ganzzahliger Wert zur eindeutigen Identifikation des
Prozesses

PPID: Parent Process ID

UID: User ID, ganzzahliger Wert zur eindeutigen Identifikation des
ausführenden User

Priorität des Prozesses (siehe Scheduling)

Der momentane Prozesszustand (wartend/laufend/laufbereit,…)
o Falls rechnend: der ausführende Prozessorkern
o Falls wartend: Ereignis auf das der Prozess wartet

Inhalte der Register

Verweis auf den Adressraum des Prozesses
3.2. E XKURS : S YSTEMAU FRUF
FORK ()
Ein neuer Prozess entsteht durch den Aufruf von „fork()“.
Er dupliziert den aktuell laufenden Prozess. Anschließend laufen beide
Prozesse parallel. Der neue Prozess ist ein Duplikat der Arbeitsumgebung des
Vaters, inklusive des Zustands der CPU, des gesamten Speicherzustands
sowie aller offenen Dateien.
An dem Rückgabewert von fork() wird erkannt, in welchem Prozess man sich
befindet. Liefert fork() eine 0 zurück, kennzeichnet dies den Kindprozess, im
Vaterprozess wird die PID des Kindes zurückgeliefert. Bei einem Fehler liefert
fork() einen Wert kleiner 0 und kein Kindprozess wurde erzeugt.
18. September 2007
interface)
System-API (application programming
41
4
2
Rechnernetze
3.3. E XKURS : E IN -/A US GABE -U MLENKUNG
DER S YSTEM -API
MITTELS
Ein-/Ausgabe-Umlenkung innerhalb der Shell: siehe Kapitel 2.2
Bei einer Umsetzung mittels der System-API wird durch den Systemaufruf
„dup()“ der Deskriptor „fd“ dupliziert und der Variablen „newfd“
zugewiesen. Die neue Variable „newfd“ erhält den niedrigsten freien
Deskriptor aus der Datei-Deskriptortabelle.

newfd = dup(fd);
Beispiel:
18. September 2007
interface)
System-API (application programming
42
4
3
Rechnernetze
4. P ROZESSORVERWALTUNG – S CHEDULING UND
D ISPATCHING
Moderne Betriebssysteme sind Multitasking-fähig, das bedeutet dass mehrere
Programme parallel laufen. Eine CPU kann jedoch tatsächlich immer nur einen
Prozess (= Programm in Ausführung) gleichzeitig ausführen. Dadurch das die CPU
innerhalb von Millisekunden zwischen den Prozessen hin- und herwechselt wird der
Eindruck von Parallelität erweckt. In diesem Zusammenhang wird darum oft von
Quasiparallelität gesprochen.
Übersteigt also die Zahl der laufenden Prozesse die Anzahl der CPUs werden
Verfahren notwendig wie die Rechenzeit der CPU unter den Prozessen aufgeteilt
wird.
Solche Verfahren nennt man Zuteilungsstrategien. Für die Durchführung der
Zuteilungsstrategien sind der Scheduler und der Dispatcher verantwortlich.
4.1. Z USTÄNDE
EINES
P ROZESSES
Prozesse kennen mehrere Zustände.
Ein Prozess kann z.B. in den Zustand „wartend“ (blocked) wechseln wenn er
nicht weiterarbeiten kann da ihm noch Eingabedaten fehlen.
Oder das Betriebssystem entscheidet einen Prozess in den Zustand
„wartend“ zu versetzen damit die Rechenzeit der CPU vorübergehend einem
anderen Prozess zur Verfügung gestellt wird.
Der Unterschied zw. diesen beiden Beispielen: im ersten Fall liegt die
Verzögerung in der Aufgabe  die Eingabe des Benutzers fehlt.
Im zweiten Beispiel ist die Verzögerung technischer Art
 das Betriebssystem teilt die CPU-Rechenzeit auf.
Im Wesentlichen gibt es drei Zustände für Prozesse und nur bestimmte
Möglichkeiten für einen Zustandswechsel (z.B. von rechenbereit zu
rechnend)
18. September 2007
Dispatching
Prozessorverwaltung – Scheduling und
43
4
4
Rechnernetze
18. September 2007
Dispatching
Prozessorverwaltung – Scheduling und
44
4
5
Rechnernetze
4.2. G RUNDBEGRIFFE
ZU R
P ROZESSORVERWALTUNG
Gibt zwei unterschiedliche Ansätze für eine Zuteilungsstrategie
(preemptiv = unterbrechbar):

Non-preemptiv: Prozess hat die Kontrolle über das System und
entscheidet selbst über Unterbrechungen (z.B. versetzt sich der
Prozess in den Zustand „wartend“ wenn ihm noch Eingabedaten
fehlen)
o FIFO bzw. FCFS (First-in-first-out, first-comes-first-serves)
o SJF (Shortest Job First)

Preemptiv: Preemptiv bedeutet das ein Prozess jederzeit
unterbrochen werden kann. Das kann durch den Prozess selbst
passieren (siehe oben) oder durch das Betriebssystem
(Zwei Gründe: Prozess mit höherer Priorität kommt oder die
Zeitscheibe des Prozesses ist abgelaufen).
o SRT (Shortest Remaining Time)
o Round Robin
o Multi Level Priority
o Multi Level Priority mit Feedback
o Fair-Share-Scheduling
Es gibt drei zeitliche Planungsstufen bei der Prozessorverwaltung:

Langfristig: Organisation des Zugangs von Prozessen zum System

Mittelfristig: Planung von Zuteilungsreihenfolgen und Prioritäten,
Suspendierung und Wiederaufnahme von Prozessen

Kurzfristig: Zuweisung der CPU-Rechenzeit zu Prozessen unter
Berücksichtigung der mittelfristigen Planung sowie Organisation
der Prozesswechsel
18. September 2007
Dispatching
Prozessorverwaltung – Scheduling und
45
4
6
Rechnernetze
4.3. P ROZESSORVERWALTUNG : D ER S CHEDU LER
Der Scheduler ist für die lang- und mittelfristige Prozessorzuteilung
zuständig. Er erstellt sozusagen den Fahrplan, während der Dispatcher dann
als Fahrer den Fahrplan (Prozessablaufplanung) ausführt (siehe Kapitel 4.4).
Das größte Problem des Schedulers ist die Tatsache, dass die benötigten
Betriebsmittel für die einzelnen Prozesse nicht im Vorfeld bekannt sind. Es
lässt sich also im Allgemeinen keine optimale Planung erstellen, sondern der
Scheduler muss dynamisch auf geänderte Anforderungen reagieren. Dabei
können (abhängig vom Scheduler) verschiedene Zuteilungsstrategien zum
Einsatz kommen (non-preemptive und preemptive, siehe Kapitel xx).
Der Scheduler hat folgende Aufgaben:

Startzeitpunkt und Priorität neuer Prozesse festlegen

Prioritäten für Reihenfolge der Prozesswechsel aus „bereit“ zu
„laufend“ festlegen

Entscheidungen über Suspendierung und Wiederaufnahme treffen
In folgenden Situationen kommt der Scheduler zum Einsatz:

Ein Betriebsmittel wird angefordert

Ein Betriebsmittel wird freigegeben

Ein Prozess wird/ist terminiert

Ein neuer Prozess wird/ist gestartet
4.4. P ROZESSORVERWALTUNG : D ER D ISPATCHER
Wie oben erwähnt führt der Dispatcher die Anweisungen des Schedulers
durch. Der Dispatcher (engl. to dispatch = etwas erledigen, abschicken) ist
ein Einsatzleiter, Koordinator, Zuteiler. Wörtlich „Schnell-Erlediger“.
Im Rahmen der Prozessverwaltung dient der Dispatcher dazu, bei einem
Prozesswechsel dem derzeit aktiven Prozess die CPU zu entziehen und diese
anschließend dem nächsten Prozess zuzuteilen. Die Entscheidung, welcher
Prozess der nächste ist, wird vom Scheduler im Rahmen der
Zuteilungsstrategie getroffen.
Der Dispatcher hat folgende Aufgaben:

Prüfen ob laufender Prozess noch derjenige mit der höchsten
Priorität ist

Sicherung des Prozess-Zustands

Restaurierung des Prozess-Zustands des nächsten Prozesses

Aktivierung des nächsten Prozesses
In folgenden Situationen kommt der Dispatcher zum Einsatz:

Aktive Prozess kann CPU nicht mehr nutzen

Anderer Grund für Zuteilungsänderung liegt vor (z.B. externe
Unterbrechung, Fehler im Prozess, Warte auf Eingabedaten)
18. September 2007
Dispatching
Prozessorverwaltung – Scheduling und
46
4
7
Rechnernetze
4.5. P ROZESSORVERWALTUNG : D IE Z IELE

Durchsatz (Anzahl bearbeiteter Prozesse pro Zeiteinheit
maximieren)

Verweilzeit (Prozess soll so schnell wie möglich abgearbeitet sein)

Wartezeit (Dauer im Zustand "wartend" minimieren)

Effizienz (Prozessorleistung maximal ausnutzen)

Antwortzeit (möglichst kurze Reaktionszeiten für den Benutzer)

Fairness (gerechte Verteilung der Prozessorzeit)

Lastverhalten (vernünftiges Verhalten bei hoher Last, „graceful
degradation“)

Minimale Kosten (Overhead)

Prioritäten (Berücksichtigung von Prozessprioritäten)

Flaschenhälse (Verhinderung von Bottlenecks durch bevorzugen
von Prozessen die wichtige, nicht entziehbare Betriebsmittel
halten)

Auslastung (Gute Auslastung aller Betriebsmittel durch bevorzugen
von Prozessen die wenig benutzte Betriebsmittel anfordern)
Es ist nicht möglich CPU-Auslastung und Durchsatz zu maximieren und
gleichzeitig Warte- und Antwortzeit zu minimieren. Deshalb müssen alle
Scheduling Algorithmen Kompromisse (richtige Balance) eingehen.
4.6. Z UTEILUNGSSTRATEGIEN
Wie bereits erwähnt, verwendet der Scheduler einen Algorithmus zur
Verteilung der CPU-Rechenzeit an Prozesse (Zuteilungsstrategie).
Je nach Einsatzzweck gibt es Scheduler die auf bestimmte Ziele (siehe oben)
ihren Schwerpunkt setzen (z.B. Echtzeitbetriebssystem  Einhaltung der
erforderlichen Antwortzeit).
Alle gebräuchlichen Algorithmen kommen aus der Warteschlangentheorie.
Alle Prozesse welche den Prozessor fordern werden in eine Warteschlange
eingereiht.
Ein Übersicht der Warteschlangentheorien und ihrer Einteilung in nonpreemptive und preemptive Verfahren gibt es in Kapitel 4.2.
18. September 2007
Dispatching
Prozessorverwaltung – Scheduling und
47
4
8
Rechnernetze
4.6.1.
R O UN D -R O BI N -V E R FA HR EN
Einem Prozess wird nach Ablauf seiner Zeitscheibe (q) die CPU entzogen.
In der Warteschlange für bereite Prozesse wird das FIFO-Verfahren
angewendet.
Für optimale Antwortzeiten sollte q > 10x Kontextwechsel (ca. 1-10msec)
sein. Wenn q unendlich ist, die Zeitscheibe also niemals abläuft, haben wir
ein einfaches FIFO-Verfahren da die Prozesse in der Warteschleife ebenfalls
im FIFO-Verfahren sortiert sind.
18. September 2007
Dispatching
Prozessorverwaltung – Scheduling und
48
4
9
Rechnernetze
4.6.2.
M UL T I -L EV E L -P RI O RI T Y -V ER F AH R EN
Das Multi-Level-Priority-Verfahren verwendet Prioritäten, die den
einzelnen Prozessen zugeordnet sind. Für Prozesse die im Zustand
„bereit“ sind, werden für jede Priorität Warteschlangen gebildet.
Es werden immer zuerst die Prozesse aus der Warteschlange mit der
höchsten Priorität ausgeführt. Da dies ein verdrängendes Verfahren ist,
besteht die Gefahr das niedrig priorisierte Prozesse nie ausgeführt
werden.
18. September 2007
Dispatching
Prozessorverwaltung – Scheduling und
49
5
0
Rechnernetze
4.6.3.
M UL T I -L EV E L -F E E D BA CK -V E RF A HR EN
Bei diesem Verfahren gibt es eine feste Anzahl von
Prioritätswarteschlangen. Neue Prozesse werden in die Warteschlange
mit der höchsten Priorität eingeteilt. Nach Ablauf der Zeitscheibe wird
der Prozess in die Warteschlange mit der niedrigsten Priorität eingeteilt.
Weitere Maßnahme damit Prozesse in niederprioren Warteschlangen
nicht „verhungern“: die Zeitscheibe q wird mit abnehmender Priorität
immer größer.
Innerhalb der Warteschlangen wird das FIFO-Verfahren angewendet. In
der Warteschlange mit der niedrigsten Priorität wird das Round-RobinVerfahren angewendet.
18. September 2007
Dispatching
Prozessorverwaltung – Scheduling und
50
Herunterladen