12 KiB
title | date | author |
---|---|---|
Betriebssysteme | Wintersemester 20/21 | Robert Jeutter |
Einführung
worauf es ankommt:
- Korrektheit
- Sicherheit
- Verfügbarkeit
- Skalierbarkeit
- Echtzeitfähigkeit
- Robustheit
- Sparsamkeit
Extrem breites Anwendungsspektrum
- funktionale Eigenschaften
- Authentisierung, Verschlüsselung
- Fahrzeug/Verkehrsmanagement
- Informationsmanagement
- Kommunikationsmanagement
- nichtfunktionale Eigenschaften
- Sicherheit
- Korrektheit
- Echtzeitfähigkeit
- Skalierbarkeit
- Offenheit
- Sparsamkeit
- Verfügbarkeit
- Robustheit
mit vielen Gemeinsamkeiten
- Architekturprinzipien
- Programmierparadigmen
voller individueller Strategien mit teils konfligierenden Zielen
- Performanz
\leftrightarrow
Robustheit - Echtzeitfähigkeit
\leftrightarrow
Effizienz
\Rightarrow
spezialisierte Betriebssystem-Familien1. Einführung
Funktionale und nicht-Funktionale Eigenschaften
Beispiel Essen:
- funktionale Eigenschaft: es soll satt machen
- nichtfunktional: Geschmack, Aussehen,...
Funktionale Eigenschaften (= Funktionen, Aufgaben)
- Betriebssysteme: sehr komplexe Softwareprodukte
- Ein Grund für diese Komplexität: besitzen Reihe von Aufgaben - also funktionale Eigenschaften
- Hauptaufgaben dabei:
- Verwalten der Resourcen des Systems (Hard-u. Software-Ressourcen)
- Transformation der „hässlichen“ Hardwareschnittstellen in angenehme nutzerfreundliche Schnittstelle (Betriebssystem als „Erweiterung“ der Maschine, auch Hardware + BS = „virtuelle Maschine“)
- Dabei für beide Aufgaben: Schaffung sinnvoller Abstraktionen(Prozess, Datei,...
\rightarrow
Softwareressourcen)
Nichtfunktionale Eigenschaften
Wie - mit welchen speziellen weiteren Eigenschaften sollen die funktionalen Eigenschaften realisiert werden. Z.B. schon genannt:
- Echtzeitfähigkeit: Betriebssystem-Komponenten, -Algorithmen usw. mit solchen Eigenschaften realisieren, dass Betriebssystem insgesamt echtzeitfähig ist
- Robustheit: Betriebssystem-Komponenten, -Algorithmen usw. mit solchen Eigenschaften realisieren, dass Betriebssystem insgesamt robust ist
- usw
Blick in Betriebssystem-Zoo
- Mainframe Betriebssystem
- performante E/A
- Massendatenverarbeitung
- Server Betriebssystem
- viele Klienten, permanente Kommunikation
- Web Server, Fileshare
- Parallelrechner Betriebssystem
- Number Crunching, parallele Algorithmen mit hohem Rechenbedarf
- schnelle IPC
- Desktop/Laptop Betriebssystem
- Interaktivität/Responsivität
- Echtzeit Betriebssystem
- Einhaltung zeitlicher Garantien, Safety
- Fahrzeug-, Anlagensteuerung
- Eingebettete Systeme
- in Fahrzeugen, Kaffeemaschinen, Telefonen...
- z.T. Spezialaufgaben
Grundbegriffe
- Wo sind Betriebssysteme zu finden?
- Welches Spektrum decken sie ab?
- Welche Arten von Betriebssystemen gibt es?
- Welche funktionalen und nichtfunktionalen Eigenschaften spielen dabei eine Rolle?
Prozessormanagement: Prozesse und Threads
Grundsätzliches
- Computer bearbeiten Aufgaben in wohldefinierten Arbeitsabläufen (beschrieben durch Programme/Algorithmen)
- bei abarbeitung von Programmen entstehen oft Wartesituationen
- Wartezeiten sind ~ relativ zur Prozessorgeschwindigkeit ~ gigantisch (1 Sek ~ 10 Milliarden Prozessorzyklen)
- statt zu warten, lässt sich besseres tun (parallele Ausführung mehrerer Aufgaben)
- Parallelität geht nicht immer (vorraussetzung Nebenläufigkeit)
Begriffe
- Aktivitäten heißen nebenläufig, wenn zwischen ihnen keine kausalen abhängigkeiten bestehen
- Aktivitäten heißen parallel, wenn sie zeitlich überlappend druchgeführt werden
Definition Prozess: Ein Prozess ist eine Abstraktion zur vollständigen Beschreibung einer sequenziell ablaufenden Aktivität
parallele Aktivitäten werden repräsentiert durch parallele Prozesse
Prozess = betriebssystem-Abstraktion zur Ausführung von programmen
Prozessmodelle: definieren konkrete Prozesseigenschaften
Prozessmanagement: Komponente eines Betriebssystems, die Prozessmodell dieses Betriebssystems implementiert
Aufgabe: präzise Definition der Betriebssystem-Abstraktion "Prozess" (definiert durch Semantik und nichtfunktionale Eigenschaften; implementiert durch Datenstrukturen/Algorithmen)
Prozesserzeugung: Erzeugen einer Programmablaufumgebung
Prozesserzeugung
Was geschieht bei der Prozesserzeugung
- Prüfen notwendiger Vorraussetzungen (Rechte, Ressoucenverfügbarkeit,...)
- Namensvergabe und "Stammbaumpflege"
- Allokation von Ressourcen (Arbeitsspeicher, Prozessorzeit)
- Anlegen von Managementstrukturen (belegte Ressourcen, Laufzetmanagement)
Prozesserzeugung: notwenige Vorraussetzungen
- Rechte: zur Prozesserzeugung und Ressourcenallokation (Kontingente)
- Ressourcenverfügbarkeit (Arbeitsspeicher, Rechenzeit, Kommunikation)
- Sicherheit (Authentizität und Integrität des auszuführenden Programms)
- bei Echtzeitbetriebssystem
- Erfüllung von Ressourcenanforderung
- Einhaltung gegebener Garantien
- Fairness (Quoten)
- robustheit/Überlastvermeidung (Lastsituation)
Prozesserzeugung: Namensvergabe
Identifikation ist positive ganze Zahl durch Vergabe Algorithmus. Kann nach Terminierung eines Prozesses erneut vergeben werden
- eindeutig: zu einem Zeitpunkt bzgl aller existierenden Prozesse
- nicht unbedingt eindeutig: für zeitlich nicht überlappende Prozesse
- erst recht nicht eindeutig: über Systemgrenze hinweg
Prozesserzeugung: Stammbaumpflege
Abstammungsbeziehung: definieren Eltern/Kind Hierarchie
- Prozess erzeugt weitere Prozesse: Kinder
- diese wiederum erzeugen weitere Prozesse usw -> baumartige Abstammungshierarchie Nutzung: Rechte und Verantwortlichkeiten
Verwaiste Prozesse -> Adoption (durch Urprozess)
Prozesserzeugung: Allokation (Zuordnung) von Ressourcen
- Arbeitsspeicher
- Größe: Wie viel Arbeitsspeicher benötigt der Prozess?
- Zeitpunkt: zu welchem Zeitpunkt? Echtzeiteigenschaften (Planbarkeit) oder Performanz (proaktivität)?
- Isolation: wie ist er geschützt? (Robustheit, Sicherheit, Korrektheit)
- Prozessorzeit
- in Prozessmodellen echtzeitfähiger Systeme: Größe und Zeitpunkt
- in Prozessmodellen ohne diese Eigenschaften: dynamisches ad-hoc-Scheduling
für richtige Initialisierung: präzise Formatvereinbarung zwischen
- Linker (Programmdatei-Produzent)
- Prozessmanagement des BS (Programmdatei Nutzer)
- das a.out-Format (veraltet; ursprünglich Unix Format)
- das Mach Object File Format (Mach-O; heutiger Standard für OS X, iOS)
- das Executable and Link(age/able) Format (ELF; heutiger Linux standard)
Prozesserzeugung: Management Datenstrukturen
Buchführung über sämtliche zum management notwendigen Informationen
- Prozessidentifikation
- Rechtemanagement
- Speichermanagement
- Prozessormanagement
- Kommunikationsmanagement
a. Prozessdeskriptor (process control block ~ PCB) b. Prozessdeskriptortabelle: Deskriptioren sämtlicher Prozesse
| Prozessormanagement | | | Identifikation | eindeutige Prozessbezeichnung; einordnung in Abstammungshierarchie | | Scheduling | Informationen für Schedulingalgorithmen | | Prozessorkontext | gesichert bei Verdrängung des Prozesses, restauriert bei Reaktivierung | | Ereignismanagement | what if... | | Accounting (Kontoführung) | zur Prioritätsbestimmung, Statisik, kostenberechnung | | Virtueller Adressraum | Beschreibung des Speicherlayouts | | Kernel Stack | Prozedurmanagement innerhalb des BS | | Rechtemanagement | | | Allgemeines Ressourcenmanagement | Filedeskriptoren, Socketdeskriptoren,... |
Aktionen des Prozessmanagements
- Prüfen notweniger Vorraussetzungen
- Namensvergabe und Stammbaum
- Allokation von Ressourcen
- Anlegen von Managementdatenstrukturen (Prozessdeskriptor)
Prozessterminierung
durch
- Aufgabe erledigt
- Fehler aufgetreten
- durch Nutzer/Eigentümer geschlossen
- ...
- Freigabe der Ressourcen
- Benachrichtigung der "Eltern"
- Adoption der "Kinder"
Threads
Naive Lösung: für jede nebenläufige Aktivität einen Prozess erstellen. Jedoch hat ein Prozess:
- Kosten des Managements
- kosten der isolation
- Kosten der Kommunikation
\rightarrow
Parallelität mittels Prozessen ist teuer (revidiertes Prozessmodell)
Daher suche nach kostengünstigerem Modell zur Parallelisierung nebenläufiger Aktivitäten
Definition Prozess: Ein (Multithread-) Prozess ist eine vollständige Beschreibung einer ablaufenden Aktivität. Dazu gehört insbesondere
- Das ablaufende Programm
- zugeordnete Betriebsmittel
- Rechte
- prozessinterne parallele Aktivitäten (Threads) und ihre Bearbeitungszustände
Definition Thread: ist eine sequenzielle Aktivität im Betriebsmittelkontext (d.h. innerhalb) eines Prozesses
parallele Aktivitäten innerhalb eines Prozesses werden durch parallele Threads repräsentiert.
Anmerkung:
- Eigentümer von Ressourcen und Rechten sind immer noch prozesse
- das Programm eines Prozesses kann nun Code für mehr als eine sequenzielle Aktivität enthalten
- Gegenstand der Prozesszuteilung sind nun Threads
- das ursprüngliche Prozessmodell ist eine Spezialisierung dieses Modells (ein Prozess mit genau einem Thread)
- ein Prozessdescriptor (PCB) eines Multithread-Prozessmodells enhält alle Informationen des PCBs eines Single-Thread-Prozessmodells plus Informationen über alle seine Threads
- ein TCB enthält lediglich den Threadszustand und den Ablaufkontext
Threads werden daher oft als Leichtgewichtprozesse bezeichnet
Threads treten in verschiedenen Varianten auf
- komfortabel (integriert in Programmiersprache)
- "zu Fuß" (durch Bibiliotheken oder API)
Implementierungsebenen
- Prozessmodell des Betriebssystems ist Multithread Modell
- Thread Implementierung im Betriebssystem
- das Betriebssystem hat Kenntnis über Threads
- Kernel Level Threads (KLTs)
- Prozessmodell des Betriebssystems ist Single-Thread-Modell
- Thread Implementierung auf Anwendungsebene
- nur auf Endbenutzer-Ebene ist Kenntnis über Threads
- User Level Thread (ULTs)
| Pro KLT | Pro ULT | | Performanz durch Parallelität | Performanz durch geringen Overhead | | Nutzung von Mehrprozessor/Mehrkernarchitektur | Thread Management ohne Systemaufrufe | | ein blockierender Systemaufruf in einem Thread blockiert nicht auch gleichzeitig alle anderen Threads des gleichen Prozesses | Thread Umschaltung ohne Mitwirkung des Betriebssystems | | | Individualität: anwendungsindividuelle Thread Schedulingstrategien möglich | | | Portabilität |
es gibt Work-Arounds: alle gefählrichen Systemaufrufe einpacken (in Pakete)
Wahl zwischen ULT- und KLT hängt ab von:
- Vorraussetzung: Prozessmodell des Betriebssystems Multithread Modell?
- Anwendungsprofil: E/A-Profil, Parallelität, Portabilität, Individualität
Scheduling
Das Problem
Anzahl der Aktivitäten >> Anzahl der Prozessoren
- nicht alle können gleichzeitig arbeiten
- eine Auswahl muss getroffen werden
- Auswahlstrategie: Schedunling-Strategie/Algorithmus
- die Betriebssystem Komponente Scheduler
- Ziel: Effizientes Ressourcenmanagement
Threads können
- aktiv sein (besitzt einen Prozessor)
- rechenbereit sein (Bsp. hätte gerne einen Prozessor)
- kurzfristig warten (Bsp. benötigt keinen Prozesoor aber Arbeitsspeicher)
- langfristig warten (Bsp. benötigt länger keinen Prozessor/Arbeitsspeicher)
Folge: effizientes Ressourcenmanagement benötigt präzise Informationen über Threadzustände.
Aufgabe der Zustandsmodelle
Beschreibung:
- des Ablaufzustands von Threads (aktiv/bereit/wartend)
- der mögliche Zustandsübergänge (z.B. bereit->aktiv)
Nutzung
- jeder Thread ist zu jedem Zeitpunkt in genau einem dieser Zustände
- jeder Thread wechselt seinen Zustand gemäß der im Modell definierten Zustandsübergänge, hervorgerufen durch z.B. Zuteilung eines Prozessors
- Ressourcenmanagement: nutz Zustand als Informationsquelle für Entscheidungen
Beschreibungsmittel: endliche deterministische Automaten
- Menge der annehmbaren Zustände ist endlich
- Folgezustand ist immer eindeutig bestimmt