Sie sind auf Seite 1von 42

Betriebssysteme

Quelle: http://www.enlightentheweb.com/

Prozesse
Prozesse
• Definition
• Mehrprogrammbetrieb
• Prozesszustände
• Threads
• Multithreading

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 3


Was ist ein Prozess?
• Ein Prozess ist ein Programm in Ausführung, inklusive der
aktuellen Werte des Befehlszählers, der Registerinhalte und
der Belegungen der Variablen

• Programm (statisch)
• Quelltext
• Objektcode

• Prozess (dynamisch)
• Ausführung von Befehlen durch
die CPU
• Informationen aus der
Prozesstabelle

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 4


Programme und Prozesse - 1
Programm oder Prozess ?
Rechnerprogramm
Backbuch mit
Filmvorführung Rezepten
Szenenabfolge
auf der Bühne
Dienstanweisung
für Mitarbeiter

Strafprozess Strafprozess-
Klavierkonzert ordnung

Notenblätter
von Mozart Drama von
Drehbuch
Schiller

Kuchen backen
Tätigkeiten in
Ereignisse Abfolge
und Aktionen
Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 5
Programme und Prozesse
Programm Prozess

Notenblätter von Mozart Klavierkonzert


Drehbuch Filmvorführung
Strafprozessordnung Strafprozess
Rechnerprogramm Ereignisse und Aktionen
Dienstanweisung für Mitarbeiter Tätigkeiten in Abfolge
Drama von Schiller Szenenabfolge auf der Bühne
Menge von Regeln Fußballspiel
Backbuch mit Rezepten Kuchen backen

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 6


Programme und Prozesse - 3
Programm: Prozess:
Statisches Objekt als Datei Dynamisches Objekt als
des ausführbaren Prozess
Programms
• Beobachtet Ereignisse
• Eigentlicher Programmtext
• Belegt Speicher
mit Angaben für die
Erzeugung des Prozesses • Interaktion mit Dateien
und Vorgaben für die • Verwaltet in der
Speicherung der Daten Prozessverwaltung als
• Erstellt durch den dynamisches Objekt
Compiler • Adressraum verwaltet in
• Verwaltet in der der Speicherverwaltung
Dateiverwaltung • Verwendet bereitgestellte
Ressourcen exklusiv
Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 7
Stapelverarbeitung
• Anfangszeit der Datenverarbeitung
• Eine Aufgabe zu einem Zeitpunkt
• Programme wurden zu einem Paket geschnürt und liefen
nacheinander durch
• Wird für nicht-interaktive Datenverarbeitung verwendet
• Batch-Jobs: Anwenderprogramme ohne Interaktion, die zur
Ausführung an einen Systemdienst übergeben werden (Batch-
System)
• MS-DOS/Windows: Batch-Skripte (.bat), PowerShell
• UNIX/Linux: Shellskripte, Cronjobs, Queueing System
• z/OS: Job Control Language (JCL)

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 8


Multiprogrammierung - 1
• Zu einem Zeitpunkt laufen „parallel“ mehrere Prozesse
• Quasiparallelität
• CPU kann zu einem Zeitpunkt nur einen Prozess ausführen
• Alle 10 bis 100 ms Wechsel zwischen den Prozessen
→ Erweckt die Illusion von Parallelität
• Nebenläufigkeit (Parallelisierbarkeit)
• Echte Parallelität
• Voraussetzung: Prozesse, die nicht kausal
zusammenhängen, d. h. sich nicht gegenseitig beeinflussen
• Kein Prozess ist Ursache eines anderen Prozesses
• Kein Prozess benötigt das Resultat eines anderen
Prozesses
• Auswahl des aktuellen Prozesses erfolgt durch den Scheduler

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 9


Amdahlsches Gesetz
Gene Amdahl (1922 - )
Gesetz über die Beschleunigung von Programmen durch
parallele Ausführung
Der Geschwindigkeitszuwachs
bei der Verwendung von
parallel arbeitenden Prozessoren
wird durch den sequenziellen
Anteil des Problems beschränkt

Bei vielen Prozessoren kann der


Aufwand, das Problem zu
übertragen, zu synchronisieren
und zurückzusenden den Rechenaufwand, der durch die
zusätzlichen Prozessoren abgenommen wird.

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 10


Multiprogrammierung - 2

Hardware: ein Konzeptionelles Modell von Zeitmultiplex in der


Befehlszähler vier individuellen, Beobachtung und der
sequenziellen Prozessen Zuteilung der CPU
Räumlicher Multiplex
durch die Logischer Befehlszähler des Zu einem Zeitpunkt ist nur
Speicherbelegung jeweils laufenden Prozesses ein Programm aktiv
wird jeweils in den realen
Befehlszähler geladen

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 11


Grad der Multiprogrammierung
Verbesserung der CPU-Ausnutzung durch Multiprogrammierung

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 12


Prozesserzeugung
• Ereignisse, die das Erzeugen von Prozessen verursachen
• Initialisierung des Systems
• Systemaufruf zum Erzeugen eines Prozesses durch einen
anderen Prozess
• Benutzeranfrage, einen neuen Prozess zu erzeugen
• Initiierung einer Stapelverarbeitung (Batch-Job)
• Vordergrundprozesse: Interaktion mit Benutzer
• Hintergrundprozesse: z. B. Daemons (stellen bestimmte
Dienste zur Verfügung): Drucken, E-Mail, Webserver
• Prozesse besitzen eine eindeutige Prozess-ID
• UNIX: Prozesse besitzen einen Vaterprozess und damit auch
eine Parent-ID

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 13


Initialisierung des Systems
• Nach Einschalten des Rechners findet der Power-On-Self-Test
(POST) durch die Firmware des BIOS (Basic-Input-Output-
System), das sich auf dem Motherboard befindet, statt
• Anschließend wird eine Bootstrap-Routine des BIOS gestartet,
die einen ersten Teil des Systemcodes in den Speicher lädt
und dort ausführt. Dieser Code steht im Bootsektor eines
Speichermediums.

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 14


UNIX-Systemstart - 1
• Nachdem der Systemcode im Speicher ist, beginnt das
Betriebssystem mit seiner Ausführung
• Initialisierung interner Datenstrukturen (Listen, Puffer,
Adresstransformationstabellen)
• Einbinden des root-Filesystems
• Die Ablaufumgebung für den ersten Prozess wird
bereitgestellt. Danach läuft der Systemcode als Prozess mit
der PID=0 weiter (Scheduler)
• Prozess 0 erzeugt und startet Prozess 1 (Kernmodus)
• Prozess 1 baut seine Ablaufumgebung für den Benutzermodus
auf und wechselt in den Benutzermodus.
• Prozess 1 beginnt, die Datei /etc/init auszuführen
init-Prozess: zuständig für die Initialisierung des Systems und
von neuen Prozessen
Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 15
UNIX-Systemstart - 2
• Der init-Prozess liest die Datei /etc/inittab und startet die
Programme aus der Datei:
Benutzer-Prozesse (GETTY-Prozesse: Anmeldekonsolen)
• Nach Anmeldung am System durchläuft der Benutzer die
Login-Prozedur. War diese erfolgreich, dann wird die
eigentliche Shell gestartet
Der GETTY und LOGIN-Prozess werden beendet, d.h. die Shell
hat als Parent-ID den Prozess 1
• Prozess 0 startet benötigte Kernprozesse, die Systemdienste
leisten und im Kernmodus laufen
Daemon-Prozesse (benutzen kein Terminal)

Bild: www.linuxpraxis.de

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 16


Windows-Systemstart - 1
• Initial phase
Bootstrap-Routine des BIOS lädt den Windows-NT-Boot-
Loader (NTLDR) und startet ihn anschließend
Ab Windows Vista/Windows Server 2008: winload.exe und
Windows Boot Manager
• Boot loader phase
• NTLDR initialisiert Tabellen und schaltet die CPU in den
Protected-Mode
• Booteinstellungen werden aus boot.ini gelesen
• Untersuchung der Hardware (NTDETECT.COM)
(mit Hilfe des BIOS) und Eintragen in Registry
• Laden des Systemkerns (ntoskrnl.exe)
und der Hardware-Abstraktionsschicht (hal.dll)
• Laden der Treiber für die Boot-Geräte Bild: Wikipedia

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 17


Windows-Systemstart - 2
• Kernel phase
• Initialisierung des Kernels (Systemdatenstrukturen)
• Erster Prozess „Idle“ wird gestartet
• Interrupts werden eingeschaltet
• Boot-Videotreiber wird aktiviert (Windows Startup-
Bildschirm)
• Win32-Subsystem wird gestartet (Verwaltung der
Windows-Prozesse)
• Winlogon-Prozess wird gestartet
• Service Control Manager lädt alle Dienste und weitere
Treiber

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 18


Windows-Systemstart - 3
• Logon phase
• Anmeldedialog wird aktiviert
• Netzwerktreiber und zugehörige Dienste werden geladen
• Bei erfolgreicher Anmeldung wird das benutzte Hardware-
Profil als „letzte bekannte funktionierende Konfiguration“
gespeichert

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 19


Systemaufruf zum Erzeugen eines Prozesses

Kindprozess erhält eine


Kopie (getrennter
Adressraum) des
Speicherbereichs für
die Variablen

fork() = 0: Kindprozess
fork() > 0: Prozess-Id des Vaterprozesses
fork() < 0: Fehler

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 20


Prozesserzeugung

Bild: Glatz, 2006

• Prozessverkettung: Der laufende Prozess startet einen neuen


Prozess und beendet sich damit selbst
• Prozessvergabelung: Der laufende Prozess startet einen neuen
Prozess, läuft selbst aber weiter
• Prozesserzeugung: Der laufende Prozess startet einen
unabhängigen neuen Prozess

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 21


Prozesszustände
1. Prozess blockiert, weil er auf eine Eingabe wartet
2. Scheduler wählt einen anderen Prozess
3. Scheduler wählt diesen Prozess
4. Eingabe vorhanden
• Rechnend: Befehle werden
in diesem Moment auf der
CPU ausgeführt
• Rechenbereit: kurzzeitig
gestoppt, um einen anderen
Prozess rechnen zu lassen
• Blockiert: nicht lauffähig bis
ein bestimmtes externes
Ereignis eintritt

Bild: Tanenbaum, 2005

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 22


Prozessbeendigung
• Normales Beenden, d.h. Aufgabe ist erledigt (freiwillig)
• Beenden aufgrund eines Fehlers (freiwillig)
• Beenden aufgrund eines schwerwiegenden Fehlers, z.B.
Division durch Null(unfreiwillig)
• Beenden durch einen anderen Prozess (unfreiwillig)

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 23


Schichtenmodell
• Tatsächlich rechnend sind immer nur so viele Prozesse, wie
physische Prozessoren (Kerne) vorhanden sind
• Unterbrechungsbehandlung sowie die Details bezüglich
Starten und Stoppen von Prozessen werden vom Scheduler
übernommen
• Scheduler und Betriebssystem sind Prozesse

Bild: Tanenbaum, 2005


Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 24
Prozessverwaltung
• Prozesstabelle: Enthält einen Eintrag pro Prozess
• Der Prozesskontext ist in der Prozesstabelle durch Werte oder
Zeiger beschrieben
• Durch die Prozesstabelle wird das Aktivieren (Reaktivieren)
und kontrollierte Terminieren von Prozessen ermöglicht

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 25


Prozesstabelle
Prozessmanagement Speicherverwaltung
• Register • Zeiger auf die Adressräume für
• Befehlszähler • Programm
• Programmstatuswort • Daten
• Stackregister • Stack
• Priorität
• Scheduling Parameter Dateiverwaltung
• Prozess-ID • Wurzelverzeichnis
• Statistische Daten • Arbeitsverzeichnis
• Verbrauchte Zeit • Dateideskriptor
• Startzeit
• Benutzer-ID
• Prozessor Nr. (bei
Mehrprozessorbetrieb) • Gruppen-ID

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 26


Prozesstabelle in Minix

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 27


Behandlung einer Unterbrechung
Beispiel: Benutzerprozess läuft, während ein Festplatten-
Interrupt auftritt.
1. Hardware sichert Befehlszähler etc.
2. Hardware holt neuen Befehlszähler vom Interruptvektor
3. Assemblerfunktion speichert Register (häufig im
Prozesstabelleneintrag)
4. Assemblerfunktion erzeugt neuen Keller für den Prozess-
Handler
5. C-Unterbrechungsroutine läuft (puffert Ein- und Ausgaben)
6. Scheduler sucht nächsten Prozess
7. C-Funktion kommt zur Assemblerfunktion zurück
8. Assemblerfunktion lädt Register und Speicherabbild des
neuen aktuellen Prozesses und startet ihn
Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 28
Threads
• Prozesswechsel (context switch) ist „teuer“
Ziel: Umschaltverluste reduzieren
• Threads (Ausführungsfaden, leichtgewichtige Prozesse) laufen
unabhängig voneinander in derselben Prozessumgebung
• Threads teilen sich Codesegement, Datensegement und
Dateideskriptoren
• Gemeinsame Betriebsmittel:
Synchronisationsmechanismen
• Kommunikation zwischen Threads
problemlos möglich
• In vielen Systemen läuft die Erstellung
eines Threads 100 Mal schneller ab
als die Erstellung eines Prozesses
(Echtzeitfähigkeiten)
Bild: Wikipedia

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 29


Beispiel für Multithreading - 1
• Rechtschreibprüfung im Hintergrund
• Speichern im Hintergrund
• Benutzerinteraktion im Vordergrund
• Gemeinsamer Datensatz ist der editierte Text

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 30


Beispiel für Multithreading - 2

Dispatcher-Thread Worker-Thread

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 31


Prozesse und Threads

Drei Prozesse mit je einem Thread Ein Prozess mit drei Threads
Jeder Prozess hat seinen eigenen
Adressraum

MS-DOS: 1 Prozess, 1 Thread Windows, moderne UNIX-


Systeme, Linux: mehrere
Ältere UNIX-Systeme: Mehrere
Prozesse, mehrere Threads
Prozesse mit je 1 Thread
Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 32
Multithreading
• Der Prozessor wird zwischen den Threads umgeschaltet und
nicht mehr zwischen den Prozessen
• Begrenzte Unabhängigkeit im gemeinsamen Adressraum
(gemeinsame globale Variablen)
• Jeder Thread kann auf die Speicheradresse (Daten und
Programm) aller Threads eines Prozesses zugreifen
→ Synchronisationsmechanismen
• Prozesse können unterschiedlichen Benutzern gehören,
Threads gehören demselben Benutzer innerhalb eines
Prozesses
• Threads werden eingesetzt, um in aktiver Kooperation an
derselben Aufgabe zu arbeiten

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 33


Prozesstabelle bei Multithreading
für alle Threads sichtbar
sowohl lesend als auch
schreibend

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 34


Ablaufhistorie von Threads
• Threads können wie Prozesse in den Zuständen
rechnend, blockiert, rechenbereit oder beendet sein
• Jeder Thread hat seine eigene Ablaufhistorie (Kellerspeicher)
• Operationen sind bei der Umschaltung der Threads daher
nicht beendet

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 35


Vorteile von Threads
• Erzeugen von Threads ist deutlich schneller als das Erzeugen
von Prozessen
• Beenden von Threads ist schneller
• Wechsel zwischen Threads ist schneller als zwischen
Prozessen
• Kommunikation zwischen Threads ist effizienter:
Kommunikation zwischen Prozessen erfordert Kernelroutinen
(Schutzmechanismen)

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 36


Einsatz von Threads
• Gleichzeitige Bearbeitung im Vordergrund und Hintergrund:
Dialogschritte im Vordergrund, Aktualisierung/Berechnung
der Daten im Hintergrund; erhöht die wahrgenommene
Bearbeitungsgeschwindigkeit
• Asynchrone Verarbeitung:
Regelmäßige Sicherung der Applikationsdaten im Hintergrund
• Ausführungsgeschwindigkeit:
Gleichzeitiges Einlesen, Verarbeiten und Ausgeben von Daten
• Modulare Programmstruktur:
Einfacheres Design von Applikationen

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 37


Threads in Java - 1
• Java Virtual Machine ermöglicht Multithreading, auch wenn
das vom Betriebssystem gar nicht unterstützt wird
• Threads sind Instanzen der Klasse Thread
• Die Ausführung eines Threads startet die Methode run eines
Objekts, das die Schnittstelle Runnable implementiert

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 38


Threads in Java - 2

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 39


Realisierung von Thread-Paketen
• Threads laufen auf der Basis eines Laufzeitsystem im
Benutzeradressraum (a)
• Kern verwaltet Prozesse
• Eigene Thread-Tabelle pro Prozess (vgl. Prozesstabelle im
Kern)
• Kern verwaltet eine Threadtabelle bei Realisierung im
Kernadressraum (b)

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 40


Threads im Benutzeradressraum
Vorteile
• Einfacher Wechsel ohne context switch möglich (schnelles
Thread-Scheduling)
• Verschiedene Scheduling Verfahren je Prozess möglich (günstig
bei Garbage-Collector)
• Kann auf beliebigen Betriebssystemen realisiert werden, auch
wenn diese Multithreading nicht kennen
Nachteile
• Kern kennt die Threads nicht, d.h. blockiert ein Thread, so sind
alle Threads blockiert
• Behandlung von Seitenfehlern schwierig (Nachladen von
Speicherseiten blockiert den gesamten Prozess)
• Lösungsansatz: Systemaufrufe in nicht blockierend ändern wäre
ein Eingriff in das Betriebssystem
• Lösungsansatz: Systemaufrufbibliothek neu schreiben
(Wrapper)
• Thread kann nicht unterbrochen werden
Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 41
Threads im Kernadressraum
Vorteile
• Kein Laufzeitsystem nötig (Kernel verwaltet die Threads)
• Bei blockierenden Systemaufrufen können andere Threads
selektiert werden
• Seitenfehler können behandelt werden
Nachteile
• Schlechte Performance/hohe Kosten bei häufigem
Wechsel, da alle Aufrufe, die blockieren könnten, als
Systemaufrufe realisiert sind
• Betriebssystem muss multithreadfähig sein

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 42


Fragen
• In der Abbildung fehlen zwei Übergänge. Sind diese
Übergänge denkbar?
• Auf allen derzeit verfügbaren
Computern werden Teile der
Interruptroutinen in Assembler
geschrieben. Warum?

Betriebssysteme – Prozesse Prof. Dr. Peter Hertkorn Folie 43