Zusammenfassung Betriebssysteme

Werbung
Betriebssysteme, Prof. Dr. Odej Kao, Zusammenfassung von Florian Schoppmann
Das Copyright für die dieser Zusammenfassung zugrunde liegenden Vorlesungsunterlagen (Skripte, Folien, etc.) liegt beim Dozenten.
Darüber hinaus bin ich, Florian Schoppmann, alleiniger Autor dieses Dokuments und der genannte Dozent ist in keiner Weise verantwortlich.
Etwaige Inkorrektheiten sind mit sehr großer Wahrscheinlichkeit erst durch meine Zusammenfassung/Interpretation entstanden.
Zusammenfassung
Betriebssysteme
1. Einführung
1.1 Aufgabenbereiche eines Betriebssystems
Grobe Aufteilung:
ˆ Bereitstellung von Hilfsmitteln für Benutzerprogramme
ˆ Vernachlässigung der genauen Benutzerkenntnis von HWEigenschaften und spezieller SWKomponenten, wie z.B. Gerätetreiber
ˆ Koordination und Vergabe der zur Verfügung
stehenden Betriebsmittel an mehrere, gleichzeitig arbeitende Benutzer
Einzelaufgaben: Unterbrechungsverarbeitung, Verteilung (Prozessumschaltung), Betriebsmittelverwaltung, Programmallokation, Dateiverwaltung,
Auftragsteuerung (Scheduling), Zuverlässigkeit
1.2 Geschichte der Betriebssysteme
Schlüsseltechniken:
ˆ Multiprogramming (mehrere Applikationen im
Speicher), Hardwarespeicherschutz
ˆ Time Sharing (1962, MIT)
ˆ Spooling (Simultaneous Peripheral Operation
On Line)
ˆ Virtualisierung
1.3 Unterschiedliche Arten von Betriebssystemen
Eigenschaft
Netzwerk-BS
Verteiltes BS
Verhalten wie
eine virtuelle
CPU?
Gleiches BS
für alle
Knoten?
Nein
Ja
Multiprozessor
Ja
Nein
Ja
Ja
Anzahl Kopien
des BS
Realisierung
der Kommunikation?
Gemeinsame
Netzwerkprotokolle
Nur eine
Prozesswarteschlange?
n
n
1
Gemeinsame
Dateien
Ja
Nachrichten
Ja
Gemeinsamer
Speicher
Nein
Nein
Nein
Ja
Verteilte Betriebssysteme: Netzwerk von Rechnern,
bleiben dem Benutzer verborgen, Betriebssystem
bestimmt, wo Programme ausgeführt werden und
wo die benötigten Daten liegen, Benutzer hat den
Eindruck einer einheitlichen Computerressource
Anwendungsgebiete: PCs, Echtzeit-Systeme, eingebettete Systeme und PDAs, Chipkarten
1.4 Strukturen der Betriebssysteme
Monolithische Systeme Alle Funktionen werden zu
einem Objektcode kompiliert, jede Funktion
kann jede andere Funktion aufrufen
Geschichtete Systeme Verallgemeinerung
des
Strukturmodells für monolithische BS, nur
Funktionen der nächsthöheren Schicht aufrufbar
Virtuelle Maschinen Tatsächliche Ausführung von
Systemaufrufen auf der realen HW durch Monitor auf HW-Ebene
Exokern Jeder Benutzer bekommt eine Kopie des
darunter liegenden Computers, aber mit jeweils einem (statisch festgelegten) Teil der
Ressourcen
Client-Server-Systeme mit Mikrokern
Kommunikation zwischen Funktionen im
Kern und Benutzerraum nach Client-ServerModell durch Nachrichten
Mechanismus: Wie wird eine Aufgabe prinzipiell
gelöst?
Policy: Was wird dabei konkret realisiert?
Wünschenswert: Genereller Mechanismus, so dass
eine Veränderung der Policies durch Anpassung von
Parametern umgesetzt werden kann
1
! Zusätzliche Übergänge
" Swap-Out: der Prozess (blockiert, bereit) wird ausgelagert
bzw. Hauptspeicher wird erst gar nicht zugeteilt
" Swap-In: Der Prozess wird aus dem sekundären Speicher in
den Hauptspeicher übertragen
Betriebssysteme, Prof. Dr. Odej Kao, Zusammenfassung von Florian Schoppmann
O. Kao
Betriebssysteme
2-15
Das Copyright für die dieser Zusammenfassung zugrunde liegenden Vorlesungsunterlagen (Skripte, Folien, etc.) liegt beim Dozenten.
Darüber hinaus bin ich, Florian Schoppmann, alleiniger Autor dieses Dokuments und der genannte Dozent ist in keiner Weise verantwortlich.
Erweitertes Zustandsmodell
Etwaige Inkorrektheiten sind mit sehr großer Wahrscheinlichkeit erst durch meine Zusammenfassung/Interpretation
entstanden.
(Grafische Darstellung)
Prozess Umschalten
1.5 Fallstudie: Aufbau von Windows
NT/2000
Initiiert
Add
Bereit
Resign
Laufend
verwendete Modelle:
Assign
Retire
ˆ (halbwegs) Client/Server Modell für die BeRe
ad
y
reitstellung verschiedener BetriebssystemumSwap-out
Swap-in
Beendet
gebungen und Anwendungsprogramme
Blockiert
Bereit
ˆ Objektmodell für Resourcen (Zugriff über
Suspendiert
Swap-out
Swap-in
Handles)
Blockiert
Prozess
Prozess
ˆ Symmetrisches
Multiprocessingmit
gemeinsa- unterscheiden
• Die
meisten Prozessoren
aus Sicherheitsgründen
Suspendiert
Erzeugen
Beenden
mem Speicherzugriff
zwischen
O. Kao
Block
Moduswechsel
(Mode Switching)
Betriebssysteme
2-16
! Systemmodus (Kernmodus): Das BS besitzt die CPU und hat
2.3 Grundoperationen mit Prozessen
1.6 Fallstudie: Aufbau
von Linux
uneingeschränkten
Zugriff auf alle Ressourcen
unterzugeordnet,
UNIX: Systemaufruf ist
ˆ Schichtenbasiertes
System
! Benutzermodus:
Prozessor istProzesserzeugung
einer Anwendung
fork(),
Kindprozess
ruft
ˆ Monolithischer Kern
mit Modulen
kritische
Zugriffe können gesteuert/gesperrt werdenexecve() auf, um das
Speicherabbild zu wechseln
ˆ Kernaufgaben: Prozessverwaltung, Speicher! Aktueller Modus wird im Programmstatuswort
festgehalten
˜
unter
Windows
:
Systemaufruf
ist
verwaltung, Dateisystem, Ein-und Ausgabe,
CreateProcess()
Systemaufrufschnittstelle, . . .
Vaterprozess und Kindprozesse bilden unter UNIX
eine Familie, d. h. Signale werden an alle Prozesse
2. Prozesse
in der Familie verteilt und jeder Prozess entscheidet
2.1 Prozesse als zentrales Konzept
über Annahme und Verwertung
Definiert durch Adressraum, Programm, Akti”
vitätsträger“ (bspw. Thread)
Dispatcher: BS-Komponente zur Verwaltung des
realen Prozessors, verdrängt Prozesse und lädt neuO. Kao
er
Zusammenarbeit mit dem Scheduler, der für die
Auswahl des nächsten Prozesses zuständig ist
Prozessumschaltung: Sicherung des alten Kontextes, Aktualisierung des PCBs und Einordnung in
Warteschlange, Laden des Kontextes des neuen
Prozesses, Aktualisierung des PCBs und der Speicherinformationen, Aktualisierung des Kontextes
Betriebssysteme
2-29
durch Anpassung aller Verknüpfungen
Umschalttechniken: direkter Sprung (Einprogrammierung im Quellcode, z. B. bei Echtzeitsystemen),
automatisches Umschalten
Moduswechsel
Leerlaufprozess zur einfachen behandlung des Falls,
(Mode Switching)
in dem alle Prozesse im ready-Zustand sind
Prozesskontrollblock:
(PCB),
Datenstruktur,
enthält: PID, Zustandsinformationen (Registerwerte, Befehlszähler, Programmstatuswort),
Kontrollinformationen (laufend, blockiert, . . . ,
Eltern-Kind-Relationen, . . . )
• Übergang Benutzermodus →
Effiziente Organisation: Aufspaltung in Teil- (verSystemmodus
z.B. durch
kettete) Listen mit
identischen Attributen
(z. B.
Unterbrechung
laufend, blockiert)
! Sicherung des Kontextes des
laufenden
Prozesses, vor allem
2.2 Ausführung von
Prozessen
der Informationen, die durch
Multiprogrammierung:
Annahme:
Ein Prozess vereine
Unterbrechungsbringt Anteil p seiner
Zeit
mit
Warten
auf E/Abehandlung verändert
werden
Operationen.
können
Wkt., dass n Prozesse gleichzeitig am Warten auf
Sprung zum Anfang der
E/A-Operationen !
sind
UnterbrechungsbehandlungsWenn Ausnutzung der
CPU 1 − pn , dann ist n der
routine
Grad der Multiprogrammierung
! Änderung des Systemmodus
2
! Nach Behandlung der Unterbrechung wird unter Umständen wieder der
alte Prozess ausgeführt (Bei Prozesswechsel kommt immer ein neuer
Prozess zur Ausführung!)
pthread_attr_t attr;
for (i=1;i<=upper;i++
pthread_attr_init(&attr);
sum += i;
/* Aktuelle Attribute */
}
pthread_create(&handle, &attr,
pthread_exit(NULL); /*
runner, argv[1]);von
/* Erzeuge
Betriebssysteme, Prof. Dr. Odej Kao, Zusammenfassung
Florian Schoppmann
beendet sich und überg
Thread
*/
Das Copyright für die dieser Zusammenfassung zugrunde liegenden
Vorlesungsunterlagen
(Skripte, Folien, etc.) liegt beim Dozenten.
Kontrolle an das
Darüber hinaus bin ich, Florian Schoppmann, alleiniger Autor dieses Dokuments und der genannte Dozent ist in keiner Weise verantwortlich.
pthread_join(&handle, NULL); /*
Hauptprogramm
*/
Etwaige Inkorrektheiten sind mit sehr großer Wahrscheinlichkeit erst durch meine Zusammenfassung/Interpretation
entstanden.
Warte bis Thread fertig */
Systemmodus ↔ Benutzermodus, Speicherung printf(“sum=%d\n“,sum);
im
2.5 Beispiel für} Threadbibliotheken:
Programmstatuswort
Pthreads
O. Kao
Betriebssysteme
pthread create
pthread exit
2.4 Thread-Modell
pthread join
pthread cancel
Thread: Keine vollständige Prozesstabelle, selber
pthread detach
virtuelle und reale Adressraum wie der Prozess,
pthread setcancel
• Solaris 2 unterstützt
KL- und UL-Threads, symmetrische
entspricht einem separaten Kontrollfluss
pthread
mutex
initEchtzeitscheduling (Pthread API)
Multiprozessoren (SMP) und
pthread
mutex lock
• Erweiterung:
Leichtgewichtsprozesse
(LWP) als Zwischenstufe
Threadtabelle: enthält: separaten Befehlszähler,
eiSingle- vs. Multi-Threaded
pthread
mutex trylock
zwischen ULund KL-Threads
genen Code-und Datenteil, Register
und Stapel
Prozessmodell
! Zuordnung
UL-Threads
Pool von LWPs (many-to-many)
pthread
mutexzum
unlock
(vollständige Verknüpfungsumgebung), Zustand
!
Jeder
LWP
ist
einem
KL-Thread
zugeordnet (one-to-one)
Single- vs. Multi-Threaded
pthread mutex destroy
Prozessmodell
Übersicht
Prozessmodelle:
! Sind n UL-Threads einem LWP zugeordnet, dann sind n-1 inaktiv (b
Threadbibliothek in Solaris 2
• Zur Prozessausführung benötigte Daten
Single
Threaded
Programm
Statische
Daten
Dynamische
Daten
Laufzeitkeller
Niedrige Adresse
Multi
Threaded
• Zur Prozessausführung benötigte Daten
Single
Threaded
Programm
Statische
Daten
Dynamische
Daten
Laufzeitkeller
Niedrige Adresse
Multi
Threaded
Programm
Hohe Adresse
Statische
Daten
Dynamische
Daten
Stapel
Stapel
1
n
Statische
Daten
Adressraum
Stapel
PCB
Stapel
Thread
Thread
Thread CB
Thread CB
Stapel
Stapel
1
Thread
Adressraum
Thread CB
PCB
Stapel
n
Thread
…
wartend für LWP) und nur 1 UL-Thread aktuell rechnend (oder bere
Thread CB
Beispiel für Realisierung in Solaris:
Stapel
Multi Threaded
Single Threaded
O. Kao
Adressraum
Dynamische
Daten
• Komponenten
• Komponenten
Adressraum
Programm
Hohe Adresse
Betriebssysteme
2-35
Realisierung von
Multithreading
Vorteile durch Threads: Besseres Antwortverhalten
(insb. bei GUIs), effiziente Betriebsmittelteilung,
Realisierung von
Threadgünstiger als Prozesserzeugung, ParalleMultithreading
lität
PCB
PCB
Stapel
…
Stapel
Multi Threaded
Single Threaded
O. Kao
Betriebssysteme
• Verarbeitung startet üblicherweise mit einem einzigen Thread
2-35
! Thread_create(): dynamische Erzeugung weiterer Threads
" Funktionsparameter: auszuführende Prozedur und Startparameter
" Rückgabewert: Threadidentifikator
! Thread_yield(): Freiwillige Abgabe der CPU
" Kein Uhr-Interrupt vorhanden ! Für die Aufteilung der Rechenzeit
zwischen der Threads ist der Entwickler zuständig
• Verarbeitung startet üblicherweise mit einem einzigen Thread
! Thread_create(): dynamische Erzeugung weiterer Threads
" Funktionsparameter: auszuführende Prozedur und Startparameter
" Rückgabewert: Threadidentifikator
! Thread_yield(): Freiwillige Abgabe der CPU
! Synchronisationsaufrufe wie thread_wait() legen eine Ausführungsreihenfolge fest
! Thread_exit() beendet einzelne Threads
• Wichtig
Kernel-Level-Threads ↔ User-Level-Threads
" Kein Uhr-Interrupt vorhanden ! Für die Aufteilung der Rechenzeit
zwischen der Threads ist der Entwickler zuständig
! Synchronisationsaufrufe wie thread_wait() legen eine Ausführungsreihenfolge fest
! Thread_exit() beendet einzelne Threads
! Threads operieren im selben Adressraum ! kein Schutz durch das BS
! Konzepte wie fork() oder der Umgang mit gemeinsamen
Datenstrukturen können zu Problemen führen
! Sorgfältiges und durchdachtes Design notwendig
O. Kao
Betriebssysteme
2-36
Umschaltung bei User-Level-Threads: ohne Prozesskontextwechsel, keine Leerung des Caches,
effizient, eigenes Scheduling −→ Anpassbar an
spezielle Scheduling-Bedürfnisse
Bei
Anforderung
eines
Betriebssmittels:
if Thread muss blockiert werden then
Speicherung der Daten in der Threadtabelle
if Anderer Thread ist ausführbar then
Auswahl dieses Threads
else
Blockierender Systemaufruf
end if
else
BM wird zur Verfügung gestellt
end if
• Wichtig
! Threads operieren im selben Adressraum ! kein Schutz durch das BS
! Konzepte wie fork() oder der Umgang mit gemeinsamen
Datenstrukturen können zu Problemen führen
! Sorgfältiges und durchdachtes Design notwendig
O. Kao
Betriebssysteme
O. Kao
Betriebssysteme
2-36
Nachteile von User-level-Threads: Bei Seitenfehler
wird gesamter Prozess blockiert
Hybride Threadmodelle: UL-Threads benötigen
mind. eines KL-Thread als Träger, Rechenzeit wird
einzelnen Prozessen zugeordnet
many-to-one (nicht geeignet für Parallelrechner),
one-to-one (Aufwand bei Threaderzeugung), manyto-many (flexibel, Kompromiss)
2.6 Zuteilungsverfahren
Typen von Zuteilungsverfahren: Long-term, z. B.
Start eines neuen Prozesses (wie viele Prozesse
sollen nebeneinander laufen?), Medium-term, z. B.
Erstzuweisung von Hauptspeicher (welcher Prozess
wird als nächstes ein-/ausgelagert?), Short-term,
z. B. Zustandswechsel des Prozesses (Verwaltung
von Ereignissen wie Timer, Systemaufrufen)
Schlüsselfaktoren für Scheduling: Länge der CPUNutzung in einem Zyklus, Verwaltungsoverheadfür
E/A z. B. bei Festplatten unabhängig von der
Größe der gelesenen Daten, Schere zwischen Geschwindigkeiten von E/A-Geräten und Prozessorgeschwindigkeit engeht immer weiter auf (−→ Scheduling von E/A-lastigen Prozessen entscheidend für
die Effizienz des Gesamtsystems)
Scheduling-Verfahren: FIFO, LCFS-PR, SJN,
SRTN, PRIO-NP, Round-Robin (siehe KMS)
Multilevel-Feedback-Scheduling: dynamische Anpassung der Zeitscheibenlänge, Stufenweise Prioritätenreduktion für lang laufende Prozesse
3
Betriebssysteme, Prof. Dr. Odej Kao, Zusammenfassung von Florian Schoppmann
Das Copyright für die dieser Zusammenfassung zugrunde liegenden Vorlesungsunterlagen (Skripte, Folien, etc.) liegt beim Dozenten.
Darüber hinausMultilevel-Feedbackbin ich, Florian Schoppmann, alleiniger Autor dieses Dokuments und der genannte Dozent ist in keiner Weise verantwortlich.
Etwaige Inkorrektheiten sind mit sehr großer Wahrscheinlichkeit erst durch meine Zusammenfassung/Interpretation entstanden.
Scheduling
Zugang
Warteschlange 1
Abgang
Zeitscheibe 8 ms
CPU
Hohe
Priorität
3.2 Seitenersetzungsstrategien
Nachschubstrategien: Demand Paging, Pre-Paging
Zugang
Zugang
Zugang
Warteschlange 2
Abgang
Zeitscheibe 16 ms
Warteschlange 3
Abgang
Zeitscheibe 32 ms
CPU
Warteschlange n
FCFS
CPU
O. Kao
Verdrängungsstrategien (Replacement Policies):
Probleme bei Realisierung durch aufwendige Operationen
CPU
Abgang
Geringe
Priorität
Betriebssysteme
2-59
2.7 Prozesse und Scheduling in Linux
Schedulingbeispiel: Solaris 2
Grundprinzipien: Threads über Biliotheken (ohne
• Vier Klassen für prioritätenbasierten Scheduling vorhanden
Kernelunterstützung),
PCBs in doppelt verketteter
! Echtzeit, System, Zeitscheiben (Time Sharing) und Interaktiv
! Jede
Klasse kann über unterschiedliche
Schedulingpolicies
Liste
+ Hash-Liste
von PID −→
PCB und Prioritäten
verfügen
! Klasse Zeitscheiben wird nach Multilevel-Feedback verwaltet
Prozesszustände:
! Klasse Interaktiv benutzt die gleiche Policy wie Zeitscheiben, gewährt
Anwendungen mitTASK
GUI-Ausgabe
höhere Prioritäten
TASK aber
RUNNING,
INTERRUPTIBLE
(durch
! Klasse System umfasst Prozesse, die in Kernmodus laufen, z.B. der
usleep(),
TASK
UNINTERRUPTIBLE
(durch E/AScheduler und
der Paging
Daemon
" Keine
Zeitscheiben
! Prozesse
laufen,beendet,
bis sie blockieren,
die CPU
ZOMBIE
(Prozess
VaterproAufruf),
TASK
freiwillig abgeben oder bis Prozesse höherer Priorität da sind
zess muss
Ergebnis
noch
" Prioritäten
ändern sich
nicht abrufen), TASK STOPPED
! Echtzeitprozesse haben die höchste Priorität aller Klassen
(Prozess
wurde
angehalten,
z. B. durch kill
• Konvertierung der Klassenprioritäten in globale Prioritäten durch BS
-STOP
PID)
• Bei mehrerer Prozessen gleicher Priorität wird nach Round-Robin
vorgegangen
Multilevel-Feedback-Scheduling: RR/FIFO für
O. Kao Betriebssysteme
2-60
Echtzeitprozesse, auf PRIO-P Strategie basierendes Verfahren für normale“ Prozesse
”
2.8 Prozesse und Scheduling in Windows
Hierarchie: Jobs → Processes → Threads → Fibers
(kooperative lightweight“ Threads, deren Schedu”
ling nicht vom Betriebssystem vorgenommen wird)
Working Set: Menge Wi (t, τ ) von Seiten, auf die
ein Prozess i in den letzten τ Einheiten ab dem
Zeitpunkt t zugegriffen hat.
Realisierung: Jeder Eintrag in der Seitentabelle
enthält mind. Referenzbi, Modifikationsbit und ungefähre Zeite des letzten Zugriffs
WSClock-Algorithmus: Modifikation des ClockAlgorithmus
3.3 Speicherverwaltung unter Linux
Virtuelle Speicherbereiche: Grafikspeicher oder
(memory-mapped) Dateien werden in den Adressraum eingeblendet
Gemeinsam genutzter Speicher mit copy-on-write
Speicherbereinigung: Aufruf von kswapd alle 1 s
oder bei Bedarf. Beachtung minimaler Verweildauer im Speicher zur Vermeidung von Thrashing
Speicherverwaltung
3.4Physische
Speicherverwaltung
unter Windows
(Grafische Darstellung)
Arbeitet mit Working-Sets:
System-Priorität für Threads ergibt sich
aus
Win32-Prozesspriorität
und
Win32Threadpriorität
Scheduling: Prioritätenliste mit 32 Prioritäten, RR
für jede Prioritätsstufe
Verbesserungen: Prioritätserhöhung nach Beendigung einer E/A-Operation, temporäre Deaktivierung des Schedulings, wenn Systemthread in kritischem Bereich
3. Speicherverwaltung
3.1 Grundlegendes
Dynamische Speicherallokation, Zugriff auf einen
fehlenden Inhalt löst Interrupt aus
4
O. Kao
Betriebssysteme
3-31
3.5 Leistungsaspekte des virtuellen SpeiPhysische Speicherverwaltung:
chers
Hintergrundprozesse
WSClock bietet den besten Kompromiss zwischen
• Swapper-Thread läuft alle 4 Sekunden und sucht alle Prozesse,
effizienter
Implementierung
und guter
Leistung
deren Threads
für eine bestimmte Zeitspanne
im Leerlauf
waren
! Prozess gefunden ! Auflösung des Stapels, Prozessseiten werden auf
Modellierung
des Seitentausches (3-34): Was soll
Standby oder Modified List geschoben
das
denn?
• Mapped-Page-Writer/Modified-Page-Writer (Hintergrundthreads)
! Periodische Prozesse, die nachsehen, ob genügend freie Seiten
vorhanden sind
! Keine freie Seiten ! Seiten von der Spitze der Modified list holen,
zurück auf die Festplatte schreiben, verschieben in Standby list
• Lagert ein eine Seite aus ! Seite wird in Free list verschoben, es
sei denn, diese wird mit anderen Prozessen geteilt
Betriebssysteme, Prof. Dr. Odej Kao, Zusammenfassung von Florian Schoppmann
Das Copyright für die dieser Zusammenfassung zugrunde liegenden Vorlesungsunterlagen (Skripte, Folien, etc.) liegt beim Dozenten.
Darüber hinaus bin ich, Florian Schoppmann, alleiniger Autor dieses Dokuments und der genannte Dozent ist in keiner Weise verantwortlich.
Etwaige Inkorrektheiten sind mit sehr großer Wahrscheinlichkeit erst durch meine Zusammenfassung/Interpretation entstanden.
Thrashing: Überlastphänomen, ähnlich Stau im
Straßenverkehr. Der Koordinationsaufwand wächst
überproportional an.
Zur Verhinderung des Thrashing muss der Multiprogramminggrad nmax begrenzt werden:
indirekte Strategie Für jeden Prozess wird individuell eine sinnvolle Kachelanzahl festgestelt,
und der Multiprogramminggrad begrenzt
direkte Strategie Anhand von Messungen der globalen Seitentauschaktivität wird ein optimaler Wert für nmax berechnet, bspw. max.
Prozessanzahl so bestimmen, dass die durchschnittliche Zeit zwischen Seitenfehlern nicht
größer ist als die Seitentransferzeit
Konzepte: Syncrhone ↔ asynchrone Übertragungen, Pufferung, gemeinsame/exklusive Nutzung
Paging Deamon: Technik zur Sicherung eines ausreichenden Vorrats an freien Kacheln für schnelle
Reaktion auf weitere Speicheranforderungen
4. Interruptcontroller informieren und Behandlung weiterer Unterbrechungen veranlassen
4. Ein- und Ausgabe
6. Aufruf der Unterbrechungsroutine (Informationen aus den E/A-Geräten auslesen und notwendige Operationen durchführen)
4.1 Klassifikation und Grundaufgaben
Klassifikation:
Zeichenorientierte Geräte: Nicht adressierbar, keine Suchoperation. Beispiele: Tastur, Maus,
Netzwerkkarten
Blockorientierte Geräte: Ein Block kann unabhängig von anderen Blöcken gelesen oder
geschrieben werden. Beispiele: Festplatten,
CD-ROMs, . . .
Schichtenaufbau: Hardware → Unterbrechungsbehandlung → Gerätetreiber: Direkte Ansteuerung der spezifischen Geräte → Geräteunabhängige
E/A-Systemsoftware → E/A-Software in Anwendungen: Systemaufrufe für die E/A
Unterbrechungsbehandlung:
1. Sicherung aller Register
2. Erzeugen des Kontextes für die Unterbrechungsroutine
3. Initialisierung von MMU, TLB, Speichertabellen, . . . und Anlegen neuer Speicherbereiche
5. Kopieren der gesicherten Register in die Prozesstabelle
7. Auswahl des nächsten auszuführenden Prozesses
8. Initialisierung/Wiederherstellung des Kontextes, Laden der Prozessregister
9. Verarbeitung mit neuem Prozess fortsetzen
4.3 Gerätetreiber
Abstrakte Geräte zur Repräsentation in der Systemsoftware: Device Control Block, Mindestmenge
von Funktionen (open/close, read/write), Gerätetreiber
Grundaufgaben: Steuern des Gerätes (z. B.
Lesekopf positionieren), Datentransport von
CPU/Speicher zum Gerät und umgekehrt
Transportauftrag: Positionierung der zu übertragenden Daten, Spezifikation der Parameter
(Richtung, Länge der Daten), Rückmeldung:
Status-/Fehlersignale
4.2 Schlüsselkonzepte von E/A-Software
Anforderungen:
Geräteunabhängigkeit,
Einheitliches Benennungsschema, Fehlerbehandlung
möglichst nah an der Hardware (z. B. automatische
Fehlerkorrektur bei CD-ROMs)
Treiber als Betriebssystem-Bestandteil/Modul ↔
Benutzerprozess (Geräteserver)
Code ist reentrant, wenn er von mehreren Programmen gleichzeitig verwendet werden kann
4.4 Geräteunabhängige E/A-Software
Pufferung: Keine Pufferung, Pufferung im Benutzerraum (Nachteil: Sperrung gegen Auslagerung
nötig), Pufferung im Kernraum (Nachteil: Sicherung gegen Überlauf nötig, Benachrichtigung an
Benutzerprozess), Wechselpuffer
Prozesskoordination (z. B. für CD-Brenner)
Spooling: Simultaneous Peripheral Operations Online
5
Betriebssysteme, Prof. Dr. Odej Kao, Zusammenfassung von Florian Schoppmann
Das Copyright für die dieser Zusammenfassung zugrunde liegenden Vorlesungsunterlagen (Skripte, Folien, etc.) liegt beim Dozenten.
Darüber hinaus bin ich, Florian Schoppmann, alleiniger Autor dieses Dokuments und der genannte Dozent ist in keiner Weise verantwortlich.
Etwaige Inkorrektheiten sind mit sehr großer Wahrscheinlichkeit erst durch meine Zusammenfassung/Interpretation entstanden.
4.5 Beispiel für blockorientierteGeräte:
Festplatten
Vorgehensweise Treiber blockieren nach Auftrag /
Deblockieren nach Unterbrechung Fertig“ führt zu
”
langen Zeiten zwischen zwei Aufträgen (Totzeit)
Bedienzeit als Summe von: Armpositionierzeit,
Latenzzeit
(Drehwartezeit),
Schreib/Lesezeit
(Tatsächliche Ausführungszeit), Transferzeit
Totzeitreduzierung (Latency Hiding): Überlappung
der Aktivitäten Durchführung des aktuellen Auf”
trags“ und Vorbereitung des nächsten Auftrags“
”
Wie genau soll das funktionieren?
Low-Level- (Anlegen von Spuren, Sektoren und
Lücken) ↔ High-Level-Formatierung (Anlegen eines leeren Dateisystems für jede Partition)
RAIDs: (Redundant Array of Inexepensive/Independent Disks) Level:
0. Virtuelle Festplatte wird in Strips unterteilt,
Parallelität beim Lesen/Schreiben eines sich
über mehrere Strips erstreckenden Blocks, keine Redundanz
1. Alle Platten doppelt vorhanden
2. Aufteilung von Wörtern oder Bytes
3. Wie Level 2, jedoch Speicherung der ParityDaten auf einer Platte
4. Wie Level 2 und 3, jedoch mit (größeren)
Strips, Parity-Platte als Flaschenhals beim
Schreiben
5. Ähnlich Level 4, bei Verteilung der ParityStrips über alle Platten zur Eliminierung des
Falschenhals
4.6 Strategien für Plattentreiber
Random Abarbeitung in zufälliger Reihenfolge
FIFS First Come First Serve
Prioritäten Abarbeitung gemäß Prioritäten
SSTF Shortest Seek Time First (Armpositionsierungszeit), Minimierung der Anzahl der Armbewegungen, Bei stark belasteten Platten tendiert der Arm zu den mittleren Sektoren
SCAN Fahrstuhlstratgie, Lokalität von Anfragen
nicht ausreichend berücksichtigt
SCAN-C Zyklische SCAN-Strategie, da nach jedem Durchlauf Rücksprung auf Zylinder 0
4.7 Effizienzbetrachtungen
FCFS: Im Mittel Überfahren von 13 der Spuren
SCAN, SCAN-C, SSTF: Vorteile in Hochlastsituationen, im Grenzfall Sprung um nur eine Spur
SCAN und SSTF benachteiligen die Randspuren
SSTF: im Mittel die beste Leistung, Verhungern
von Aufträgen möglich
6
Plattencache: unabhängig vom BetriebssystemCache
5. Dateisysteme
5.1 Organisation von Dateisystemen und
Dateiattribute
Eigenschaften per Definition: Persistente Speicherung großer Informationsmengen. Abstraktion der
Details für die Datenablage, Gleichzeitiger Zugriff
auf die Daten durch mehrere Prozesse möglich,
Schutzmechanismus für den Datenzugriff
Typische Strukturierung von Dateien: Folge von
Bytes (Interpretation beim Einlesen durch Anwendung), Folge von Datensätzen, Hierarchisch
5.2 Zugriffsarten
Sequentiell, wahlfrei (random access), Index-basiert
Indexstrukturen: B-Bäume, Index-Sequential Access Method, invertierte Liste
5.3 Grundlegende Operationen für Dateiund Verzeichnisverwaltung
selbsterklärend
5.4 Layout eines Dateisystems
Sektor 0 einer Festplatte: Master Boot Record zur
Lokalisierung der Partitionstabelle und/oder aktiven Partition
Zwei-Phasen-Realisierung: 1. Abbildung Dateien →
nummerierte Blöcke fester Länge 2. Abbildung Datenblöcke → Geometrie des Speichermediums
5.5 Zuordnung Dateien → Datenblöcke
Einfachste Möglichkeit: Zusammenhängende Abbildung. Jedoch mit Nachteil: Fragmentierung
Betriebssysteme, Prof. Dr. Odej Kao, Zusammenfassung von Florian Schoppmann
Das Copyright für die dieser Zusammenfassung zugrunde liegenden Vorlesungsunterlagen (Skripte, Folien, etc.) liegt beim Dozenten.
Darüber hinaus bin ich, Florian Schoppmann, alleiniger Autor dieses Dokuments und der genannte Dozent ist in keiner Weise verantwortlich.
Etwaige Inkorrektheiten sind mit sehr großer Wahrscheinlichkeit erst durch meine Zusammenfassung/Interpretation entstanden.
Belegung durch verkettete Listen:
interne Verkettung Jeder Block enthält Zeiger auf
nächsten Block. Nachteil: Nur sequentieller
Zugriff möglich, wenig robust: Ein Dateiverlust bei Zerstörung nur eines Blockes
externe Verkettung Externe
Allokationstabelle
(File Allocation Table, FAT)
Indexblöcke Jeder Datei wird ein Indexblock zugeordnet, für große Dateien mehrstufige Indexblöcke. Vorteile: Tabelle zur Speicherung der
verketteten Liste aller Dateiblöcke wächst linear mit Festplattengröße, Arbeitsspeicherbedarf beim Zugriff ist ausschließlich proportional zur maximalen Anzahl gleichzeitig geöffneter Dateien
5.9 NTFS Dateisystem
Optimierungen: Trennung des Dateinamens (von
variabler Länge) von den übrigen Datei-/I-NodeAttributen
Verwendung von Kryptografie: Symmetrische ↔
Asymmetrische Verschlüsselung, Digitale Signaturen, Hashing mit Einwegfunktionen
Grundeigenschaften: Clustergröße unabhängig von
Datenträgergröße, Alle Daten (auch Meta-Daten)
als Dateien, Verschlüsselung, Komprimierung,
mehrere Datenströme
6. Sicherheit
6.1 Grundlagen der Sicherheit
Sicherheitsanforderungen: Datenvertraulichkeit, -integrität, Systemverfügbarkeit, Datenschutz
5.6 Verwaltung des Plattenspeichers
6.2 Benutzer-Authentifizierung
Verwaltung freier Blöcke: Verkettete Listen (sinnvoll: Nutzung der freien Blöcke zur Speicherung) ↔
Bitmaps
5.7 Leistungsaspekte: Caching, Backup,
Konsistenz, . . .
Caches: Write Through, Careful write: Schreiben nach einer vorgegebenen Maximalverzögerung,
Lazy write: Alles wir vorerst im Cache behalten
Optimierungen: Vorauslesen von Blöcken, virtuelle
Festplatten (RAM-Disks), Optimierung der Blockanordnung
Konsistenzüberprüfung: Abgleich freier Blöcke vs.
belegter Blöcke, Block in Freiliste vermisst/doppelt
vorhanden, kritisch: Block kommt in mehreren Dateien vor
5.8 Log-basierte Dateisysteme
Motivation: CPU-Geschwindigkeit wächst schneller
als Festplattenzugriffszeiten. Caches werden wichtiger und damit die Behandlung von Konsistenzproblemen
Optimierung: Schreiben eines temporären Logs, das
später erst aufgeräumt wird, d. h. die tatsächlichen
Änderungen an Dateien vorgenommen werden
Authentifizierung durch: Geheimnis“ des Benut”
zers, z. B. Passwort, biometrische Daten, Zusätzliche Hardware (z. B. Chipkarten, herklömmlicher
Schlüssel)
Passwortsicherheit in UNIX: Passwortdatei mit je
einer Zeile mit Attributen und verschlüsseltem
Passwort je Benutzer. Aktuelle Version: Separate Speicherung der verschlüselten Passwörter in
Shadow-Datei
Verbesserung der Passwortsicherheit: Verzögerungsstrategien, Verwendung schwer zu ermittelnder Passwörter, Einmal-Passwörter, ChallengeResponse-Verfahren (Erweiterung davon: SmartCards mit kleiner CPU)
6.3 Angriffe von innerhalb des Systems
Login-Spoofing: Programm bildet PasswortEingabebilschirm exakt nach. Abhilfe: Bspw.
Tastenkomnination, die nicht vom Benutzerprogramm abgefangen werden kann
Buffer-Overflow: Überschreibung der Rücksprungsadresse durch überlange Eingaben
7
ein eingeschleustes Programm
! Bei Funktionsaufrufen wird die Rücksprungadresse und zu übergebende
Parameter auf den Stapel gelegt
! Für bestimmte Parameter – z.B. einen Dateinamen – wird Speicherplatz
gemäß der Definition des Strings reserviert
Betriebssysteme, Prof. Dr. Odej Kao, Zusammenfassung von Florian Schoppmann
! WirdDas
diese
Grenze durch einen extralangen Namen überschritten, so wird
Copyright für die dieser Zusammenfassung zugrunde liegenden Vorlesungsunterlagen (Skripte, Folien, etc.) liegt beim Dozenten.
die Rücksprungadresse
überschrieben und somit abgeändert
Darüber hinaus bin ich, Florian Schoppmann, alleiniger Autor dieses Dokuments und der genannte Dozent ist in keiner Weise verantwortlich.
" Etwaige
Sprung Inkorrektheiten
in fremden/gesperrten
Adressraum
! Absturz erst durch meine Zusammenfassung/Interpretation entstanden.
sind mit sehr
großer Wahrscheinlichkeit
" Pufferinhalt = Programm, das ausgeführt wird ! Großer Schaden
6.5 Schutzmechanismen
• Einführung des Domänenkonzepts (domain)
! Domäne = Menge von Paaren (Objekt, Rechte)
! Jedes Paar spezifiziert ein eindeutig identifiziertes Objekt (HW, Prozesse,
Dateien, Semaphore, …)
und dieBetriebssysteme
darauf ausführbaren Operationen
O. Kao
! Recht = Erlaubnis zur Ausführung einer Operation
! Domäne kann einem Benutzer entsprechen, aber auch allgemeiner Natur
sein
! Ein Prozess läuft zu jedem Zeitpunkt in einer einzigen Schutzdomäne
! Domänenwechsel ist möglich, die dazugehörigen Regel sind hochgradig
vom aktuellen System abhängig
6.4 Angriffe von außerhalb des Systems
nicht klausurrelevant
• Domänenkonzept bei UNIX
! Domäne eines Prozesses wird durch BenutzerID (UID) und GruppenID
6.5 Schutzmechanismen
(GID) festgelegt ! für jede Kombination (UID, GID) lässt sich eine Liste
mit allen benutzbaren Objekten (HW, SW, …) erstellen
! Prozessaufteilung in Benutzer- und Kernteil, die in unterschiedlichen
Domänen laufen ! Systemaufruf verursacht einen Domänenwechsel
Dömane: Menge von Paaren (Objekt, Rechte), je6-21
des Paar spezifiziertO. Kao
einBetriebssysteme
eindeutig identifiziertes
Objekt (HW, Prozesse, Dateien, Semaphore, . . . )
Realisierung
des
und die darauf ausführbaren
Operationen
Domänenkonzepts
Ein Prozess läuft zu jedem Zeitpunkt in einer ein• Konzeptionell:
Modellierung der Übersicht über Domänen und
zigen
Schutzdomäne
zulässige Operationen für verschiedene Ressourcen durch eine Matrix
Domänenkonzept
UNIX:
Festlegung durch
! Ein Objekt pro Spalte,bei
eine Domäne
pro Zeile
! Zellen enthalten – falls vorhanden – die zulässigen Operationen
Benutzer-ID
und Gruppen-ID
! Domänen sind selbst Objekte ! Modellierung des Übergangs von einer
Domäne inRealisierung
eine andere Domäne des
Klassische
Domänenkonzepts
• Matrixdarstellung ineffizient, da zu viele leere Felder vorhanden !
durch
Speicherung
in Matrix:
Speicherung
nur der Spalten
(ACL) oder der Zeilen (Capabilities)
Domain
O. Kao
Betriebssysteme
6-22
Effizientere Speicherung, da in Matrix zu viele leere
Felder vorhanden: Nur die Spalten (Access Control
Lists – ACLs) oder der Zeilen (Capabilities)
Capabilities: (C-Listen)
6.6 Firewalls
bekannt
8
6-16
Herunterladen