Kapitel 6: Betriebssysteme - Security Engineering Group | TU

Werbung
Grundlagen der Informatik III
WS 2009 / 2010
[Folien basierend auf VL von Prof. Eckert, WS 07/08,
und von Prof. Fellner WS 08/09]
Prof. Dr. rer. nat. Frederik Armknecht
Sascha Müller
Daniel Mäurer
Fachbereich Informatik / CASED
Mornewegstraße 30
64293 Darmstadt
Gliederung der Vorlesung GdI 3
1. Einführung
2. Assemblerprogrammierung
3. Leistungsbewertung
4. Speicherhierarchie
5. Assembler, Binder, Lader
6. Betriebssysteme und Ein-/Ausgabe
(Grundlagen)
7. Rechnernetze (Grundlagen)
8. Compiler (Grundlagen)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 2
Gliederung dieses Kapitels
6.1 Einführung
6.2 Betriebssystemstruktur
6.3 Varianten von Betriebssystemen
6.4 Interrupt und Systemaufruf
6.5 Prozess- und Prozessorverwaltung
6.6 Scheduling
6.7 Strategien zur virtuellen Speicherverwaltung
6.8 Dateien und Dateisystem
6.9 Ein-Ausgabe (I/O-Subsystem)
6.10 Busse (spezielle E/A-Geräte)
6.11 Synchronisation
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 3
6.1 Einführung
(Tanenbaum, Modern Operating Systems, 3e, Pearson)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 4
6.1 Einführung
Einordnung eines Betriebssystems in ein Rechensystem
• Ein Rechnersystem besteht aus
• Hardware, System- und Anwendungsprogrammen
anwendungsunabhängige Systemprogramme (z.B. KommandoInterpreter (Shell), Compiler, Editoren,
Windows) im „user mode“
Betriebssystem (kernel/supervisor mode)
Befehlssatz-Architektur (ca. 50 bis 300
Instruktionen)
Zu Funktionseinheiten zusammengefasste,
physikalische Bauteile (z.B. CPU-Register, ALU)
Integrierte Schaltungen etc.
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 5
6.1 Einführung
Definition Betriebssystem (operating system)
(nach DIN 44300)
Die Programme eines digitalen Rechensystems, die zusammen mit den
Eigenschaften dieser Rechenanlage die Basis der möglichen Betriebsarten des
digitalen Rechensystems bilden, und die insbesondere die Abwicklung von
Programmen steuern und überwachen.

•
•
•
•
Aufgaben eines Betriebssystems
Abstraktion, bieten einer einfach zu nutzende Schnittstellen
Strategien zur Verwaltung gemeinsamer Ressourcen
nach festen Qualitätskriterien, Beispiele?
Dienste für Anwender und Anwendungsprogramme, Beispiele?
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 6
6.1 Einführung
BS-Aufgaben am Beispiel Windows 2000
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 7
6.1 Einführung
BS-Aufgaben am Beispiel Unix/Linux
Betriebssystemkern
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 8
6.1 Einführung
Bem.: Heutige Betriebssysteme sind historisch ‚gewachsen‘
Evolutionäre Weiterentwicklung, sehr komplexe Softwaresysteme
Komplexität von BS gemessen in Source Lines of Code (SLOC)
Werte unterschiedlicher Microsoft Windows Betriebssysteme:
Year
Operating System
SLOC (Million)
1995
Windows NT
4
1997
Windows 95
15
1998
Windows NT 4.0
16
1999
Windows 98
18
2001
Windows 2000
35
2002
Windows XP
40
2007
Windows Vista
50
Richtwert (Erfahrung): 5-50 Bugs pro 1000 Lines of Code!
Strukturiertes Design ist unabdingbar, sonst „a big mess“ (Tanenbaum)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 9
6.2 Betriebssystemstruktur
Betriebssystem ist ein großes und komplexes System
• modularisiert in Komponenten und Subsysteme
• meist in C, C++ geschrieben (früher komplett in Assembler, heute nur noch
einige Gerätetreiber und Teile des BS-Kerns)
Kern („kernel“) umfasst die kritischen Funktionen des BS
Systemprogramme werden nach Bedarf geladen:
• z.B. Linker, Debugger, Kommandointerpreter (Shell), ...
Daemons: Hilfsprozesse
• erfüllen eine Service-Funktion,
• durch Ereignisse aufgeweckt
(„Datei zum Drucken eingetroffen“)
• Beispiele aus Unix:
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 10
6.2.1 Monolithische Systeme
Kapselung aller Betriebssystemdienste in einem große Kern
• idR Prozedur-orientiert, d.h. Systemdienste sind Prozeduren,
Aufruf des Dienstes (Systemcall) entspricht Prozeduraufruf
• z.B. UNIX/Linux: Module als Strukturierungshilfsmittel
Anwendung
Anwendung
Legende
System-Schnittstelle
BS-Kern
Prozess im
Benutzermodus
Systemprozedur
Systemaufruf
Nutzungsabhängigkeit
Hardware
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 11
6.2.1 Monolithische Systeme
Trennung zwischen Benutzerprogrammen und BS:
• Verschiedene Betriebsmodi:
• Benutzer- und Systemodus, dual-mode operation
• Schutz des BS vor fehlerhaften User-level Zugriffen!
• Modus wird in der Hardware durch 1 Bit festgehalten
• (1) System-Modus (engl. kernel mode, supervisor mode):
• Privilegierte Befehle sind verfügbar, u.a.
• Zugriff auf Hardware nur mit privilegierten Befehlen möglich
• Dienste des Betriebssystemkerns werden im Systemmodus
ausgeführt,
• beim Aufruf (system call): Moduswechsel
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 12
6.2.1 Monolithische Systeme
 Benutzer-Modus (engl. user mode): Benutzerprozesse
• In diesem Modus sind nur nicht privilegierte Befehle verfügbar,
z.B. Zugriff auf Prozessadressraum und unkritische Register
• Ausführung eines privilegierten Befehls führt zu einer
Unterbrechung (Interrupt)
• Aufruf eines Systemdienstes erfolgt über Systemcalls und
• führt zu einer Unterbrechung mit kontrolliertem Einsprung in das
BS
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 13
6.2.2 Virtuelle Maschine
• Unabhängigkeit und Isolation von Prozessen konsequent fortgeführt:
Illusion: jedem Prozess steht der gesamte Rechner allein zur
Verfügung
• unterschiedliche Betriebssysteme gleichzeitig auf einer vorhandenen
Hardware-Konfiguration
• z.B. VMware: Linux neben Windows
 Bem. Java Virtual Machine Konzept (JVM) rührt auch hier her
 Vorteil: vollständige Isolation der Benutzerprozesse (Schutz)
 Nachteil: schwierige gemeinsame Nutzung von Ressourcen, evtl.
Geschwindigkeit
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 14
6.2.2 Virtuelle Maschine
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 15
6.2.3 Client-Server Architektur mit Mikrokern
Zusammenfassung verwandter Systemdienste zu Diensteklassen
• Diensteklassen werden mit Servern (Serverprozessen) realisiert
• Clients (Clientprozesse) nutzen Dienste
• Kommunikation zwischen Client und Server ist notwendig:
klassisches Konzept hierfür: Nachrichtenaustausch
Mikrokern: Prinzip:
•Trennung von Strategie und Mechanismus
• Vorteil?
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 16
6.3 Varianten von Betriebssystemen
Mainframe-Betriebssysteme: Großrechner
• E/A-Kapazität ein wesentlicher Unterschied zum PC (z.B. tausende
von Festplatten und tausende von GB Daten-Kapazität)
• viele nebenläufige Prozesse mit viel Ein-/Ausgabe
Server-Betriebssysteme:
• Server-Rechner sind große PCs, Workstations oder Mainframes
• gleichzeitige Bedienung mehrerer Nutzer über ein Netzwerk zur
gemeinsamen Nutzung von Hard- und Software-Ressourcen, ServerFarmen sind heute Usus
• z.B. Datenbankserver, Web-Server
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 17
6.3 Varianten von Betriebssystemen
 Mehrprozessor-Betriebssysteme:
• Hochleistungsrechenkapazität durch Verbindung mehrerer CPUs zu einem
einzigen Rechnersystem, je nach Architektur: Parallelrechner,
Multiprozessoren, ...
• Aktuell: Entwicklung von Computer-GRIDs
• PC-Betriebssysteme: idR Ein-Benutzer-Systeme
• z.B. zu Textverarbeitung, Tabellenkalkulation, Internet-Zugriff
• Echtzeit-Betriebssysteme: Einhaltung von Deadlines etc.
• z.B. zur industriellen Prozess-Steuerung
• Eingebettete (embedded) Betriebssysteme:
• realisieren spezielle und keine allgemeinen Funktionen,
• müssen spezielle Größen-, Speicher- und Energie-Beschränkungen erfüllen
• z.B. Mobiltelefone, Smartcards
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 18
6.4 Interrupt und Systemaufruf
6.4.1 Interrupts (Unterbrechungen)
• Heutige BS arbeiten idR Ereignis (event) getrieben
• Auftreten eines Ereignisses wird durch Interrupt angezeigt:
• bei Hardware über Leitungen/Busse,
• bei Software: Systemaufruf
• Effekt: das laufende Programm wird unterbrochen und i.A.
später wieder fortgesetzt
Klassifikation der Unterbrechungsereignisse
• Interne Unterbrechung („trap“ oder „exception“): synchron
wird innerhalb der CPU selbst ausgelöst, z.B. Division durch 0
• Externe Unterbrechung: asynchron
wird ausgelöst durch Signal an Interrupt-Eingang der CPU, z.B. E/A
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 19
6.4 Interrupt und Systemaufruf
• Synchrone Interrupts sind reproduzierbar, asynchrone Interrupts
i.allg. nicht, Konsequenz:
• CPU muss stets auf Auftreten einer asynchronen Unterbrechung
gefasst sein, aber: eine Unterbrechung eines Programms ist nicht
immer gewünscht
• CPU kennt die Programmsemantik (z.B. Unterbrechung ok) nicht:
• deshalb: CPU bietet Konzept, um Unterbrechungen zu sperren
(disable), z.B. für kritische BS-Dienste nützlich
• Maskierbare Unterbrechung:
• Interrupt vorübergehend außer Kraft setzbar, z.B. E/A-Interrupt
• Das kann für gewisse zeitkritische Routinen z. B. in Gerätetreibern
notwendig sein
• Reaktion der CPU auf Unterbrechung: Start eines speziellen,
unterbrechungsabhängigen Programms („Interrupt Handler“)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 20
6.4 Interrupt und Systemaufruf
Allgemeine Vorgehensweise zur Unterbrechungsbehandlung
normale Programmausführung
Interrupt
Behandlung der
Unterbrechung
Fortsetzung der normalen
Programmausführung
Rückkehr vom „Interrupt
Handler“
• Verzahnte Ausführung von „normalen“ Programmen und Unterbrechungsbehandlung: quasi-parallelen Ablauf: Synchronisation erf.
• Transparenzforderung: Unterbrechungsbehandlung hinterlässt
bzgl. des unterbrochenen Programms keine Spuren
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 21
6.4 Interrupt und Systemaufruf
Interrupt-Handling am Beispiel Tastatur
1. Bei Tastendruck wird ein entsprechender Interrupt ausgelöst.
2. Taste wird vom BIOS ausgelesen.
3. Entsprechender ASCII-Wert und Tastencode werden in einen Puffer
geschrieben.
4. Ein weiterer Interrupt wird ausgelöst, wenn die Taste losgelassen
wurde.
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 22
6.4 Interrupt und Systemaufruf
Aktionen des BS beim Auftreten eines Interrupts:
• CPU wechselt in Kernel-Modus
• BS-Kern sucht nach der Routine zur Behandlung des Interrupts:
• Suche im Interrupt-Vektor, der im BS-Kern verwaltet wird
• Interrupt-Handler von Geräten: Bestandteile der Treibersoftware
• Geräte-Nummer dient als Index in den Interrupt-Vektor
• der Interrupt-Vektor:
• enthält Anfangsadressen der Handlerroutinen,
• Tabelle ist idR resident in Bereich niedriger Adressen abgelegt,
• Tabelle: beim Booten mit den Routinen initialisiert
• Ausführung der Handler-Routine:
• Unterbrechungsgrund ermitteln, Behandlung durchführen
• Nach Beendigung: Return-from-Interrupt Befehl
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 23
6.4 Interrupt und Systemaufruf
Beispiel: Interrupt-Vektor Tabelle des Intel-Pentiums
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 24
6.4 Interrupt und Systemaufruf
6.4.2 Systemaufruf (engl. system call)
• Konzeptuell analog zu Interrupt, aber: Software-Unterbrechung
• System call: Schnittstelle zwischen Prozessen und BS
• meist als Assembler-Anweisung verfügbar bzw. nutzbar
• In der Regel aber nicht direkt, sondern über Routinen des
Laufzeitsystems der Programmiersprache nutzbar gemacht
• Laufzeitsystem (runtime system):
Menge von Bibliotheksfunktionen, vom Compiler automatisch
zum Programm hinzu gebunden
• z.B. Unix: Systemaufrufe direkt aus C, C++ Programmen,
Windows: Aufruf über Win32 API (Application Programmer
Interface)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 25
6.4 Interrupt und Systemaufruf
Aufgabe: Transfer der Kontrolle an BS und Datentransfer,
z.B. read-Operation auf Dateien,
Parameter: Datei, Zeiger auf Buffer, Byteanzahl
Ablauf eines Syscalls:
Analogie zum klassischen Prozeduraufruf,
• Zu übergebene Parameter: über Stack, Register, Pointer
• Nummer des Systemaufrufs (Dienstnummer): idR in ein Register
geschrieben
• Kontrolltransfer an den BS-Kern über eine Trap-Instruktion
• Dienstnummer: Index in Dispatch-Tabelle (vgl. Interrupt-Vektor)
• Nach Beendigung des Dienstes:
• Kontroll- und Modus-Wechsel zurück zum Aufrufer des Syscalls,
• ggf. Blockieren des aufrufenden Prozesses, z.B. Prozess wartet
auf Eingabe
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 26
Beispiel: SysCall read (fd, buffer, nbytes) (Unix/Linux)
(5-6) Sys call read
durch Bibliotheksfunktion,
Trap-Befehl
(6)
Kern-Einsprung
mit ModusWechsel
(1-4) BenutzerProgramm:
Aufruf der
Bibliotheksfunktion read
mit Parameterübergabe
auf Stack etc.
(8-9) Ausführung des
read-Systemdienstes,
Return mit Modus-Wechsel
(7) Auswahl des Systemdienstes anhand der Dienstnummer im Register
Fachbereich
Dr. Frederik
Armknecht | 27Systeme (GRIS) | Prof. Dr. D. Fellner | 27
Fachbereich Informatik
Informatik || Prof.
Fachgebiet
Graphisch-Interaktive
Beispiel: Unix-Syscalls für Prozessmanagement
s ist Fehlercode,
pid ist Prozess ID
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 28
6.5 Prozess- und Prozessorverwaltung
Ziel: Konzepte, Datenstrukturen, Strategien zur Verwaltung
nebenläufiger Aktivitäten
Benötigt werden:
• Konzepte zur Virtualisierung der CPU
Lösung: Thread-, Prozess-Konzept
• Konzepte, um Informationen zu speichern
Lösung: Prozess-individueller Adressraum
• Datenstrukturen zur Verwaltung von Prozessen/Threads:
Lösung: Deskriptoren, Tabellen, Warteschlangen, etc.
• Operationen zur Verwaltung von Prozessen/Threads
Lösung: Scheduling, Prozess-Erzeugung etc.
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 29
6.5.1 Prozesskonzept
Ein Prozess ist eindeutig identifizierbarer Ablauf eines Programms,
d.h. ein Prozess ist ein Programm in Ausführung:
• jeder Prozess besitzt einen eigenen Adressraum,
• ein Prozess durchläuft unterschiedliche Zustände,
z.B. rechnend, wartend auf E/A , wartend auf CPU
Pseudoparallele Prozessausführung (Multiprogramming, multitasking):
• CPU wechselt zwischen der Ausführung verschiedener Programme
• Scheduling-Strategien erforderlich
(a) Multiprogrammierung
von 4
Programmen
(b) Konzeptmodell von 4 unabhängigen, sequentiellen Prozessen
Fachbereich
Dr. Frederik
Armknecht | 30Systeme (GRIS) | Prof. Dr. D. Fellner | 30
Fachbereich Informatik
Informatik || Prof.
Fachgebiet
Graphisch-Interaktive
(c) zu jedem Zeitpunkt
nur ein Programm aktiv
6.5.1 Prozesskonzept
Dienste des Betriebssystems zur Prozessverwaltung:
• Prozess-Erzeugung und Starten (z.B. fork)
• Prozess-Terminierung, Auflösung (z.B. kill, exit)
• Strategien zur CPU-Zuteilung (scheduling)
• Prozessor-Anbindung (dispatching) (z.B. resume, sleep, wakeup)
Erzeugung von Prozessen: u.a.
• bei Systeminitialisierung,
• durch Benutzeranfrage
Terminierung von Prozessen: u.a.
• normaler Ausgang oder Fehlerausgang (freiwillig)
• Fataler Fehlerausgang (unfreiwillig)
• Abschuss durch einen anderen Prozess (unfreiwillig)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 31
Beispiel: Zustandsübergangsdiagramm für Prozesse
Legende
Blau: Zustand
Schwarz: Übergang
9
Zombie
Prozess im Benutzermodus
1
Systemaufruf
return
return
2 im Kernelmodus
exit
sleep
unterbrochen
7
rechenbereit
im Speicher
wake up
4
wartend 3
genug Speicher
im Speicher
fork
swap out
swap in
8
swap out
erzeugt
5
6 zu wenig Speicher
wake up
wartend,
rechenbereit,
geswappt
geswappt
Fachbereich
Dr. Frederik
Armknecht | 32Systeme (GRIS) | Prof. Dr. D. Fellner | 32
Fachbereich Informatik
Informatik || Prof.
Fachgebiet
Graphisch-Interaktive
6.5.1 Prozesskonzept
Prozesserzeugung
Alle Prozesse, die nicht zur Boot-Zeit erzeugt werden, entstehen, indem
ein laufender Prozess, z.B.
• laufender Benutzerprozess,
• von Tastatur oder Maus aufgerufener Systemprozess oder
• Batch-Manager-Prozess,
einen Prozesserzeugungsdienst aufruft.
Dieser teilt dem Betriebssystem direkt oder indirekt mit, welches Programm
im neuen Prozess auszuführen ist.
Erzeugung neuer Prozesse
• in Unix mit fork
• in Windows mit CreateProcess
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 33
6.5.1 Prozesskonzept
Beispiel: Prozesserzeugung unter Unix: fork
• erzeugt exakten Klon des aufrufenden Prozesses.
• Kindprozess „erbt“ vom Vater-/Mutterprozess das Speicherabbild
(memory image – copy on write), die offenen Dateien, ….
• idR führt Kindprozess dann z.B. execve, um Speicherabbild zu ändern
und neues Programm auszuführen.
Beispiel:
• Benutzer tippt Kommando in Shell ein, z.B. sort,
• Shell erzeugt Kindprozess („forks off child process“),
• Kindprozess führt sort aus.
Dieser zweistufige Vorgang ermöglicht dem Kindprozess nach fork aber
vor execve die Manipulation seiner Datei-Deskriptoren, um Standard-Input
(stdin), Standard-Output (stdout) und Standard-Error (stderr) umzulenken.
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 34
6.5.1 Prozesskonzept
Beispiel: Prozesserzeugung unter Windows
• Ein Win32 Funktionsaufruf, CreateProcess, behandelt beides:
Prozesserzeugung und Laden des korrekten Programms
• Aufruf hat 10 Parameter, u.a.
• das auszuführende Programm,
• die Kommandozeilenparameter zur Versorgung des Programms,
• verschiedene Sicherheitsattribute, …
• Win32 hat zusätzlich etwa 100 weitere Funktionen zur Verwaltung und
Synchronisation von Prozessen und verwandten Aufgaben.
• Nach der Prozesserzeugung haben in Unix und Windows
• Vater-/Mutter- und Kindprozess jeweils eigene Adressräume.
• Änderungen im eigenen Adressraum sind nicht sichtbar für den jeweils
anderen.
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 35
6.5.1 Prozesskonzept
Prozesshierarchien: Entstehen durch Prozesserzeugung
 In Unix bilden Prozess mit allen Kind- und Kindeskindprozessen eine
Prozessgruppe (process group).
Z.B. wenn Benutzer Signal von Tastatur sendet, wird das zu allen
Mitgliedern der mit der Tastatur assoziierten Prozessgruppe übermittelt.
• Jeder Prozess kann Signal aufnehmen oder ignorieren.
 Initialisierung von Unix durch Starten des Prozesses init:
• Init liest beim Start eine Datei mit der Anzahl der Terminals und
• erzeugt (forks off) einen neuen Kindprozess pro Terminal.
• Diese warten auf einen Login-Vorgang.
• Bei erfolgreichem Login: Starten von Shells, GUI-Prozess, …
• Shells bearbeiten Kommandos, z.B. zur Prozesserzeugung
• Alle Prozesse zu einem einzigen Baum mit init als Wurzel.
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 36
6.5.1 Einfaches Multiprogramming Modell
 Oft wichtiges Ziel von Multiprogramming:
Maximierung der CPU Auslastung
 Beobachtung: Prozesse blockieren oft aufgrund von I/O Operationen
 Frage: Welches Multiprogramming Level (=Anzahl an parallelen
Prozessen) wird benötigt, um bei gegebener Blockierungswahrscheinlichkeit der Prozesse eine bestimmte CPU Auslastung zu
erzielen?
 Einfaches Modell:
 p: Wahrscheinlichkeit, dass ein gegebener Prozess blockiert
 n: Anzahl Prozesse
 pn: Wahrscheinlichkeit, dass alle Prozesse gleichzeitig blockieren
 (1 - pn): durchschnittliche CPU Auslastung
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 37
6.5.1 Einfaches Multiprogramming Modell
Aussage des Modells? Beschränkungen?
Degree of multiprogramming
(Tanenbaum, Modern Operating Systems, 3e, Pearson)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 38
6.5.2 Datenstrukturen zur Prozessverwaltung
Prozesskontrollblock (Prozessdeskriptor): PCB
• Beschreibt den Kontext eines Prozesses; enthält i.d.R. folgende
Informationen:
• eindeutiger Name, z.B. fortlaufende Nummerierung des
Prozesses (z.B. pid in UNIX)
• Name des Benutzers, dem der Prozess zugeordnet ist, Namen
der zugeordneten Gruppen
• Prozesszustand (wartend, rechnend, rechenwillig, ...)
• Spezifikation des Ereignisses, auf das der Prozess wartet (z.B.
warten auf Eingabe von Tastatur (E/A-Auftrag))
• Scheduling Informationen: z.B. Ablaufpriorität, bereits verbrauchte
CPU-Zeit
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 39
6.5.2 Datenstrukturen zur Prozessverwaltung
PCB-Bestandteile: Forts.
• Registerinhalte, wie Programm-Zähler (PC), Stackpointer, etc.
• Accounting-Information: verbrauchte Ressourcen etc.
• Prozesshierarchie: Vaterprozess, Kind-Prozesse
• Informationen für das Speichermanagement
• Informationen für die Dateiverwaltung: u. a. Home-Verzeichnis
• Liste der zugeordneten E/A-Geräte
PCB-Information
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 40
6.5.2 Datenstrukturen zur Prozessverwaltung
Prozess-Image im Speicher
• der PCB eines Prozesses
gehört zum Prozessadressraum
• zur Prozessverwaltung müssen
Teile des PCB in dem
Hauptspeicher eingelagert sein
• ein Verweis auf den PCB eines
Prozesses wird in der
systemglobalen Prozesstabelle
des BS verwaltet
PCB i
PCB j
Stack-Bereich i
Stack-Bereich j
Privater ProzessBereich:
Code, Daten
Privater ProzessBereich:
Code, Daten
Shared Bereich
Shared Bereich
Prozess i
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 41
Prozess j
6.5.2 Datenstrukturen zur Prozessverwaltung
Prozesstabelle:
• enthält Verweise auf die PCBs existierender Prozesse
• idR als Tabelle fester Länge organisiert, d.h. die maximale Prozessanzahl
ist durch Systemparameter festgelegt
• Suchen nach PCB-Verweisen: anhand der Prozess-ID (pid)
• Suchalgorithmen: Hashing, Suchbäume etc.
pid=2
PCB0
PID
PCB1
Zustand
Registerinhalte
PCB2
Prozess-Tabelle
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 42
Schedulinginfo
...
6.5.2 Datenstrukturen zur Prozessverwaltung
Prozess-Warteschlangen:
Zur Prozess-Verwaltung führt das BS unterschiedliche Warteschlangen.
Die wichtigsten sind:
• Ready-Queue(s) für rechenbereite Prozesse
• Warteschlangen für verschiedene Ereignisse
•blockierte Prozesse
•i.d.R. jeweils eine eigene Warteschlange für E/A-Geräte
(z.B. Platte, Terminal)
•Verwaltung der Prozesse z.B. durch verkettete Listen der PCBs
• oder wie beispielsweise in Linux (ab 2.6): Rot-Schwarz-Bäume, die
nach Zeit geordnet sind
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 43
6.5.3 Thread-Konzept (lightweight Process)
Bislang betrachtet:
• Sequentieller Prozess mit virtuellem Adressraum und
• einem Kontrollfluss (Thread of control)
• Multi-threaded Prozess:
• Prozess mit mehreren, parallelen Kontrollflüssen, d.h.
• multi-threaded Prozess kann parallele Aktivitäten ausführen
Charakteristika: ein Thread besitzt:
• eine eigene Identität: Thread-ID,
• einen eigenen Programmzähler,
• einen eigenen Stack, eigenes Registerset und
• einen eigenen Zustand (blockiert, rechenbereit, rechnend etc.)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 44
6.5.3 Thread-Konzept
Threads des gleichen Prozesses: teilen sich den gemeinsamen
Prozessadressraum, nutzen gemeinsame Ressourcen
Konsequenz: jeder Thread kann auf jede Speicheradresse zugreifen,
z.B. auch auf den Stack anderer Threads des Prozesses
Adressraum
Thread
...
Single-threaded Prozess
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 45
Adressraum
Thread
...
Thread
...
Thread
...
Multi-threaded Prozess
6.5.3 Thread-Konzept
• Multi-threading: effiziente Kooperation zwischen Threads möglich
• Threads greifen auf globale Variablen des Prozesses gemeinsam zu:
Synchronisationskonzepte erforderlich!
Informationen pro Prozess
Thread-Beschreibung:
durch
Thread Control Block
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 46
Informationen
pro Thread
Programzähler
Stack
Register-Set
Kind-Threads
Zustand
Programzähler
Adressraum
Stack
globale
Variablen
Register-Set
geöffnete
Dateien
Kind-Threads
Kind-Prozesse
Zustand
Timer
Signale
Semaphore
Accounting Informationen
Zustand
6.5.3 Thread-Konzept
Vorteile des Thread-Konzepts
• Pro Prozess viele parallele Aktivitäten, aber einige sind von Zeit zu
Zeit blockiert.
• Durch Zerlegung des Prozesses in quasi-parallel ausführbare
Ausführungsstränge: vereinfachtes Programmiermodell
• Gemeinsame Nutzung von Daten: sehr schneller Datenaustausch,
kein Versenden von Nachrichten notwendig
• Threads sind schneller zu erzeugen und zu terminieren als Prozesse
(z.B. um Faktor 100).
• Performanz-Steigerung durch Threads:
• Z.B. umfangreiche Berechnungen und umfangreiche Ein-/Ausgabe
kann überlappend abgearbeitet werden.
• Echte Parallelität auf Mehrprozessor-Rechnern
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 47
6.5.3 Thread-Konzept
(Tanenbaum, Modern Operating Systems, 3e, Pearson)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 48
6.5.3 Thread-Konzept
(am Beispiel einer Textverarbeitungssoftware)
 Beispiel: Text-Verarbeitungsprogramm mit 3 Threads
Interaktiver Thread:
wartet auf Eingaben
von Tastatur und Maus
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 49
Thread zur
Reformatierung
(Neuberechnung) des
Textes im Hintergrund
nach Eingaben und
zur Darstellung auf
Bildschirm
Thread zum Anlegen
von Sicherungskopien
im Hintergrund
6.5.3 Thread-Konzept
(am Beispiel eines Webservers)
•
•
•
•
Dispatcher-Thread: Annahme von Anfragen aus dem Netz
Weiterleitung an einen Worker-Thread
Worker prüft, ob Anfrage aus Cache erfüllbar, falls nicht:
Lese-Anfrage an Platte, Worker wird blockiert, bis Antwort vorliegt
worker
Cache von
Web-Seiten
BS-Kern
Netzverbindung
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 50
while(TRUE){
getNextRequest(&buf);
handoffWork(&buf);
}
while(TRUE){
waitForWork(&buf);
lookForPagInCache(&buf,&page);
if(pageNotInCache(&page)){
readPageFromDisk(&buf,&page);
}
returnPage(&page)
}
Dispatcher
Worker
6.5.3 Thread-Konzept
Kernel
Space
Kern
User-level Threads
Fachbereich
Dr. Frederik
Armknecht | 51Systeme (GRIS) | Prof. Dr. D. Fellner | 51
Fachbereich Informatik
Informatik || Prof.
Fachgebiet
Graphisch-Interaktive
Thread3
Thread2
Thread1
User Space
Laufzeitsystem
Thread-Verwaltung
Kernel
Space
Thread3
Thread2
Thread1
User Space
Thread Implementierung
Ansätze:
• in User Space über Thread-Pakete, Bibliotheken
• Kern-integriert: d.h. BS-Kern bietet Thread-Konzept
• Kombination
Kern
Thread-Verwaltung
Kernel-level Threads
6.5.3 Thread-Konzept
User-level Threads:
• Kern besitzt keine Kenntnis über Threads
• Kern verwaltet nur Prozesse (Scheduling, Signale etc.)
• Realisierung der Operationen zur Threadverwaltung mit
Thread-Paket, z.B. für Unix-Systeme pthreads Bibliothek
• Thread-Paket setzt auf beliebigem BS auf,
keine BS-Änderung nötig
• Paket stellt als Laufzeitsystem eine Menge von
Operationen zur Verfügung: create, wait, etc.
• für jeden Prozess wird vom Laufzeitsystem (nicht vom BS-Kern!)
eine Threadtabelle verwaltet
• das Laufzeitsystem bietet Schedulingoperationen für Threads
eines Prozesses, d.h. two-level Scheduling, Vorteil? Nachteil?
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 52
6.5.3 Thread-Konzept
Probleme bei user-level Implementierungen: u.a.
• Implementierung von blockierenden Systemaufrufen:
• alle User-level Threads des Prozesses werden blockiert, keine
Parallelverarbeitung mehr
• Ähnlich: Blockierung aufgrund Page Fault eines Threads
• Scheduling des Kerns greift nicht (z.B. keine Uhrunterbrechung),
• u.U. kann ein Thread alle anderen monopolisieren,
• d.h. Threads müssen CPU freiwillig abgeben
Fazit:
Herausziehen von BS-Diensten aus dem Kern in den User-Level:
• Flexibilität: individuelle Anpassung an Anforderungen der
Anwendung (z.B. individuelles Scheduling ihrer Threads)
• keine globale Strategie (Fairness etc.)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 53
6.5.3 Thread-Konzept
Kernel Level Implementierung
• Kern verwaltet Threads selber:
• eine Thread-Tabelle für alle Prozesse im Kern
• Thread-Operationen wie –Erzeugung, -Terminierung etc. sind
Kern-Aufrufe: trap in den Kern
• blockierender Aufruf: welche Scheduling-Optionen?
• Effizientes ‚Recycling‘ von Thread Datenstrukturen
Beispiele:
•Linux: Kernel-level Threads
•Windows2000: Kernel-level und User-level Threads
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 54
6.5.3 Thread-Konzept
Hybride Lösung: Kernel + User Threads
(Tanenbaum, Modern Operating Systems, 3e, Pearson)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 55
6.5.4. Kontextwechsel
Aufgabe des Dispatchers: Prozess an CPU binden
• Analog zur Unterbrechung einer CPU, aber größerer Kontext
Bei einem Kontextwechsel ist durchzuführen:
• Retten der Prozessumgebung des aktuellen Prozesses, inkl. PC,
Registerinhalte
• Update des PCB des aktuellen Prozesses um neue Zustandsinformation,
eintragen in Verwaltungsdatenstrukturen (dann: Auswahl eines Prozesses)
• Update des PCB des neuen Prozesses, Update der Datenstrukturen für
Speichermanagement
• Laden des Prozess-Kontexes
Bem.: Kontextwechsel sind teuer (ca. einige 1000 Instruktionen),
Anzahl der „Prozesswechsel“ pro Sekunde sollte klein sein:
• Strategie ist erforderlich: Scheduling
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 56
6.6 Scheduling
Im Alltag: Planen, Organisieren von Abläufen und Ereignissen
• z.B. Stundenplan, Fahrpläne, OP-Einsatzplan, etc.
CPU – Scheduling:
• Strategische Entscheidung treffen: welchen Prozess, wann, wie lange an CPU
zu binden
• Ausnutzen: CPU-Nutzungsbursts wechseln sich mit E/A-Wartephasen ab
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 57
6.6.1 Kriterien beim Scheduling
Wann sind Scheduling-Entscheidungen zu treffen?
• Prozesserzeugung (z.B. fork)
• Prozess (wird) terminiert
• Prozess blockiert (z.B. I/O, Semaphor)
• I/O Interrupt
• Clock Interrupt (bei präemptiven Scheduling)
Kriterien:
• Effizienz: CPU (bzw. allg.: Ressourcen) so gut wie möglich auslasten
• Durchsatz: max. Anzahl ausgeführter „Jobs“ pro Zeiteinheit
• „Turnaround“: min. Verweilzeit für einen einzelnen Prozess
• Antwortzeiten interaktiver Prozesse minimieren
• Fairness
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 58
6.6.1 Kriterien beim Scheduling
Gewichtung der Scheduling-Ziele kann variieren
Batch Systeme
 Durchsatz, Turnaround, CPU Auslastung
Interaktive Systeme
 Antwortzeit, Proportionalität
Echtzeitsysteme
 Vorhersagbarkeit, definierte Anforderungen einhalten
Allgemein
 Fairness
 Einhaltung von Regeln
 Balancierung
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 59
6.6.1 Kriterien beim Scheduling
 Schwierigkeiten:
 Optimierungskriterien beim Scheduling teilweise widersprüchlich
 Optimieren nach Mittelwert oder Extremwert oder Varianz?
 Prozessverhalten („kommt der nächste E/A-Befehl bald?“)
kann vom Scheduler nur vermutet, aber nicht exakt vorhergesehen werden.
 Frage: wie soll man Hypothesen über Verhalten erstellen?
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 60
6.6.1 Kriterien beim Scheduling
Kenngrößen zur Bewertung von Scheduling-Verfahren: u.a.
• mittlere Wartezeit, mittlere Verweilzeit, CPU Auslastung
Gegeben ist eine Strategie S und
• die Ankunftszeiten (Erzeugungszeitpunkte)
a = (a1, ..., an ) der Prozesse Pi,
• und die Bedienzeiten (benötigte Prozessorzeit)
b = (b1, ..., bn ) der Prozesse
• Abgangszeit ci (a,b,S) von Pi
• Verweilzeit vi (a,b,S) = ci (a,b,S) - ai von Pi
• Wartezeit wi (a,b,S) = ci (a,b,S) - ai – bi von Pi
• Mittlere Verweilzeit V(a,b,S) = 1/n Σi=1 vi (a,b,S)
• Mittlere Wartezeit W(a,b,S) = 1/n Σi=1 wi (a,b,S)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 61
6.6.2 Strategie – Klassen
(1) Nicht unterbrechend (non preemptive, run to completion):
• Scheduling nur dann möglich, wenn der rechnende Prozess
blockiert wird oder wenn er terminiert
• einfach zu implementieren, aber Gefahr des Monopolisierens
• Beispiele:
• FCFS (first come first served)
• Shortest Jobs First
• Nicht unterbrechende Strategie: z.B. in Microsoft Windows 3.x
(2) Unterbrechende Strategie (preemptive):
• Unterbrechung beim Eintreten von speziellen Ereignissen,
z.B. I/O Interrupt, Clock Interrupt, Blockierung
• Beispiel: Zeitscheiben-Strategie (Round-Robin), Prioritäten
• Präemptive Strategien u.a. in Windows2000, Vista, Unix-Derivate
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 62
6.6.3 Mehr-Schichten Scheduling
Idee: analog zur Speicherhierarchie:
• Anbindung an CPU muss sehr schnell gehen,
• Prozesse müssen vorbereitet sein: eingelagert im Speicher,...
Lösung: Scheduling auf unterschiedlichen Stufen:
• long-, medium-, short-term (CPU-Schedling)
Long-term Scheduling (LTS): nicht immer vorhanden
• Auswahl rechenwilliger neuer Aufträge, meist Jobs aus dem
Hintergrundbetrieb (batch) und Einlagerung in den Hauptspeicher
• Einfügen der Prozesse in die Ready-Queue
• LTS wird relativ selten aufgerufen, u.U. erst nach Minuten
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 63
6.6.3 Mehr-Schichten Scheduling
Medium-term Scheduling:
• bei Überlast werden Prozesse auf Hintergrundspeicher
ausgelagert (swap out) und später eingelagert (swap in)
• kann notwendig sein, um Prozessmix zu verbessern,
was ist ein Prozessmix? Was ist guter Mix?
Short-term Scheduling: (CPU-Scheduling)
• Auswahl eines geeigneten Prozesses aus der Ready-Queue
• Warteschlange häufig als FIFO (First in – first out) Warteschlange
realisiert
• häufig aufgerufen: mind. einmal alle 10 – 100 Millisekunden
• CPU-Scheduler ist zeitkritisch: Beispiel:
• Scheduler benötige 1 ms für Auswahlentscheidung,
• Prozess erhält 10 ms Rechenzeit, dann verschlingt
Scheduling allein 1/11 = 9 Prozent der CPU-Zeit!
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 64
6.6.3 Mehr-Schichten Scheduling
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 65
6.6.4 Zeitscheibenstrategie (Round Robin)
In heutigen Standardbetriebssystemen:
Kombination aus Zeitscheiben- und Prioritätsbasierten Strategien
• Prozesse erhalten CPU jeweils für eine festgelegte Zeitdauer
(Zeitscheibe) d
• spätestens nach dem Ablauf
Warteraum
von d: CPU wird entzogen
Prozessor
• zyklisches Bedienen
der Prozesse
Ankunft von
• Ready Queue als
zyklische Schlange
Prozessen
realisiert
nicht beendete
Aufträge
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 66
Terminierte
Prozesse
6.6.4 Zeitscheibenstrategie (Round Robin)
Gegeben seien n Prozesse in Warteraum und eine Dauer d
• jeder Prozess muss max (n – 1) * d Zeiteinheiten warten,
bis er wieder an der Reihe ist
• Probleme: Wahl der Dauerlänge
• Dauer zu groß: Effekte?
• Dauer sehr klein, dann process sharing, Probleme?
• Daumenregel: 80 Prozent der benötigten CPU-Zeit sollte
kleiner als d sein.
• Typische Werte für d: 10 bis 100 ms (z.B. 4.3 BSD Unix 10ms)
• Bem.:
Für d = 100ms bei 1MIPS Maschine:
ca. 100.000 Instruktionen pro Zeitdauer d
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 67
6.6.4 Zeitscheibenstrategien: Übersicht
τ
d=1
d=4
τ
Quelle:
W. Stallings
Operating Systems
(Prentice Hall)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 68
6.6.5 Prioritäten - Strategie
Hintergrund
• bei Zeitscheibe implizit: alle Prozesse sind gleich wichtig,
• das ist nicht immer gewünscht (z.B. Systemprozesse)
• Lösung: Prozesse erhalten Priorität
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 69
6.6.5 Prioritäten - Strategie
Statische Prioritätenvergabe:
• jeder Prozess besitzt für die Dauer seiner Existenz eine
feste Priorität
• Problem: Gefahr des Verhungerns (starvation) von
Prozessen mit niedriger Prio
• Gerücht: bei Abschaltung der IBM 7094 am MIT 1973:
Entdeckung eines nicht bearbeiteten, niedrig
prioren Prozesses von 1967
Dynamische Prioritätenvergabe:
• die Prioritäten der Prozesse werden in gewissen
Zeitabständen neu berechnet.
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 70
6.6.5 Prioritäten - Strategie
Kombination: mehrschichtige Warteschlangen (multi-level queues)
• in heutigen BS häufig: Multi-level Feedback Queues, d.h.
• Prozesse werden gemäß ihrer Priorität in Schlange eingeordnet
• Dynamik: Prozesse können zwischen Schlangen wandern.
• Notwendig:
• Schedulingverfahren pro Schlange: meist RR
• Scheduling zwischen Schlangen: meist nach Prioritäten
• Verfahren zur Neuberechnung der Prioritäten mit ggf.
Wechsel der Warteschlange
Beispiel: sowohl Unix-Familie als auch Windows-Familien
verwenden Varianten von Multi-level Feedback Queues
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 71
6.6.5 Prioritäten - Strategie
Beispiel: Scheduling im BSD-Unix Betriebssystem
• 32-schichtiges Warteschlangen Scheduling
• Zeitscheibenstrategie (RR) mit überlagerter dynamischer
Prioritätenvergabe
• Dauer d = 100ms
• Prioritäten von 0 – 127 (0 ist die höchste)
• Prozess mit Priorität PRIO: in Schlange PRIO/4 eingeordnet
• Jede Warteschlange wird mit Zeitscheibenverfahren bedient
• Fortlaufende Neuberechnung der Prioritäten
Neuberechnung der Prioritäten:
• p_cpu: geschätzte CPU-Nutzung des aktiven Prozesses
• alle 10 ms (Uhrunterbrechung, Tick): p_cpu : = p_cpu + 1
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 72
6.6.5 Prioritäten - Strategie
• p_nice vom Benutzer bestimmter Gewichtungsfaktor (-20 ≤ p_nice ≤ 20)
• positiver Wert bedeutet, dass Prozess bereit ist, weniger als den ihm
zustehenden Anteil an Prozessorzeit zu beanspruchen
• USER_PRIO Priorität, die dem Prozess beim Start zugeteilt worden ist.
• nach 4 Uhrunterbrechungen (Ticks) Neu-Berechnung der Prios aller
rechenbereiten Prozesse
p_cpu
u_prio = USER_PRIO +
4
+ 2 p_nice
• damit Prios nicht ständig wachsen, wird p_cpu jede Sekunde angepasst
durch
2load
p_cpu =
* p_cpu + p_nice
2load+1
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 73
6.6.5 Prioritäten - Strategie
• Bem.: load ist eine Abschätzung der CPU-Auslastung
Durchschnitt der rechenbereiten Prozesse über vorangegangenes
1-Minutenintervall
• Problem:
 Prio-Neuberechnung nur für rechenbereite Prozesse
 Passiv wartende Prozesse profitieren davon nicht
• notwendig: Prio-Neuberechnung wartender Prozesse:
 Basis: Variable p_slptime , enthält Schätzung der Wartezeit des
Prozesses in Sekunden
 Beim Aufwecken des Prozesses:
2load p _ slptime
)
* p _ cpu
p _ cpu = (
2load + 1
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 74
6.6.6 Weitere Verfahren
 Guaranteed Scheduling
 Jeder User (jeder Prozess) soll annähernd gleich viel CPU erhalten
 System beobachtet tatsächlichen CPU Verbrauch + steuert entsprechend
 Lottery Scheduling
 Prozesse halten Lose zur Teilnahme an Ressourcen-’Verlosung’
 System führt regelmäßig Lotterie aus
 Div. Ansätze möglich:
 Zuweisung von Losen zu neuen Prozessen
 Tausch von Losen zwischen Prozessen
 Einfach zu implementieren, transparent
 Fair Share Scheduling
 Verteilung von Ressourcen berücksichtigt Prozess-Eigentümer
 Aufteilung so, dass alle Eigentümer gleich (oder entspr. einem Verhältnis)
bedient werden
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 75
6.7 Strategien zur virtuellen Speicherverwaltung
Erinnerung
• Virtuelle Adressräume in Seiten (pages) aufgeteilt
• Hauptspeicher ist in Seitenrahmen (frames) aufgeteilt
• Einlagern von Seiten in die Frames
• Seitentabelle(n) und Adressabbildung (vgl. Kapitel 4)
Jetzt
klären wichtiger strategischer Aufgaben
• Ladestrategie: welche Seite(n) ist/sind zu laden?
• Platzierungsstrategie: welcher Frame ist geeignet?
• Seitenersetzung: welche Seite(n) auslagern?
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 76
6.7 Strategien zur virtuellen Speicherverwaltung
(Wdh. aus Kapitel 4)
Virtual addresses
Vergleich mit Caches
• Blöcke  Seiten (pages)
• Cache-miss  Seitenfehler
(page fault)
• Adressen im Programm:
virtuelle Adressen
• Adressen im Hauptspeicher:
(reale) physikalische Adressen
• Dynamische Zuordnung von
Programmadressen zu
Hauptspeicheradressen durch
Adressabbildung
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 77
Physical addresses
Address translation
Disk addresses
Programm wird in unterschiedliche
Bereiche des Hauptspeichers
geladen: „Relocation“
6.7.1 Ladestrategie
Einzelseitenanforderungs-Strategie (demand paging):
Idee: eine Seite wird genau dann geladen, wenn auf sie zugegriffen wird
und sie noch nicht eingelagert ist
• Hardware-Unterstützung dafür: Valid-Bit für jede Seite
• Demand Paging ist häufigste Strategie in heutigen BS;
Seiten-Pre-Fetching:
Idee: Seiten werden im Voraus geladen, um sie sofort bei Bedarf
verfügbar zu haben
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 78
6.7.1 Ladestrategie
Demand-Paging: Leistungsanalyse
Page Fault Rate 0 <= p <= 1
• if p= 0, keine Page Faults.
• if p= 1, jede Referenz (Zugriff) führt zu einem Page Fault
Fehlerbehandlung kostet Zeit: wesentliche Beiträge dazu
• Behandlung des Interrupts (~ 1 – 100 µs)
• Einlagern der Seite (~ 24 Millisekunden: typische Latenzzeit der
Platte: 8ms, Suche 15ms, Datentransfer 1ms)
• Re-Start des Prozesses (~ 1 – 100 µs)
• Memory access time = ~ 10 – 200 Nanosekunden
Effective Access Time (EAT):
EAT = (1 – p) * memory_access_time + p * (page_fault_overhead
+ [swap_page_out] + swap_page_in + restart)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 79
6.7.1 Ladestrategie
Annahme:
• durchschnittliche Zeit zur Seitenfehler-Behandlung :
sei 25 Millisekunden ( = 25.000 µs = 25.000.000 Nanosek)
• Speicherzugriffszeit liege bei 100 Nanosekunden
• dann gilt für EAT (in Nanosekunden):
EAT = (1 – p) * 100 + p (25 Millisekunden)
= (1 – p) * 100 + p * 25.000.000
= 100 + 24.999.900 * p
D.h. EAT ist direkt proportional von Fehler-Rate p abhängig
• Falls z.B. alle 1000 Zugriffe 1 Fault: EAT = 25 µs
• d.h. Verlangsamung um Faktor 250 durch Demand Paging
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 80
6.7.1 Ladestrategie
Um eine Verlangsamung um weniger als 10% zu erhalten:
• notwendig:
110 > 100 + 25.000.000 * p
10 > 25.000.000 * p
p < 0,0000004
• d.h. um Page-Fault Rate auf akzeptabler Größe zu halten, darf
höchstens ein Page-Fault auf 2.500.000 Zugriffe auftreten!
Fazit:
• gute Seitenersetzungstechniken sind erforderlich
• zusätzliche Maßnahmen zur Reduktion der Zugriffszeiten:
u.a. Nutzung von TLB
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 81
6.7.2 Seitenersetzungsstrategien
FIFO
Verdrängen der ältesten Seite, d.h. Kriterium ist die Zeit, wann die Seite
eingelagert wurde
Beispiel:
Vorteil von FIFO: einfach zu implementieren
 z.B. über FIFO-Queue, Zeitstempel sind nicht erforderlich
 aber wirklich gute Strategie?
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 82
6.7.2 Seitenersetzungsstrategien
• Schlechtes Leistungsverhalten, warum?
Beispiele für ungünstige Szenarien (Charakteristika)?
• FIFO-Anomalie können auftreten: trotz Erhöhen der Anzahl der
Frames steigt die Seiten-Fehler Zahl!
Beispiel für Anomalie:
 Gegeben sei der Referenzstring: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
3 Frames
4 Frames
1
1
4
5
1
1
5
4
2
2
1
3
2
2
1
5
3
3
2
4
3
3
2
4
4
3
9 page faults
Frage: Abänderung? Effizient und effektiv?
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 83
10 page faults
6.7.2 Seitenersetzungsstrategien
Second Chance: FIFO-Variante
• Zugriffbits „r“ einer Seite wird gesetzt, wenn darauf zugegriffen wird.
• Überprüfen des Zugriffsbits der ältesten Seite.
• falls r=0, dann ist die Seite alt und nicht benutzt,
• falls r=1, Seite an das Ende der Seitenliste anhängen
• r-Bit wird gelöscht, Ladezeit der Seite wird aktualisiert
Lade-Zeit der jeweiligen Seite
Page-Fault zum Zeitpunkt 20,
R-Bit von Seite A sei gesetzt
Fachbereich
Dr. Frederik
Armknecht | 84Systeme (GRIS) | Prof. Dr. D. Fellner | 84
Fachbereich Informatik
Informatik || Prof.
Fachgebiet
Graphisch-Interaktive
A wird mit
neuem
Ladezeitpunkt
20 umgehängt
6.7.2 Seitenersetzungsstrategien
Clock Algorithmus
•
effiziente Implementierung des Second Chance Algorithm.
•
Ansatz: Seiten werden in zyklischer Liste verwaltet (Uhr)
•
Der Zeiger der Uhr zeigt auf die älteste Seite.
•
Seitenfehler: Seite unter der Zeigerposition:
• falls r=0, auslagern der Seite, und Zeiger vorrücken.
• Anderenfalls r:=0 und Zeiger vorrücken bis Seite mit r-Bit = 0 gefunden
Worst Case:
• alle r-Bits gesetzt
• alle Seiten erhalten 2-te
Chance
• degeneriert zu FIFO!
Fachbereich Informatik | Fachgebiet Graphisch-Interaktive Systeme (GRIS) | Prof. Dr. D. Fellner | 85
6.7.2 Seitenersetzungsstrategien
LRU (Least recently used)
• Verdrängen der am längsten nicht genutzten Seite,
• im Vergleich zur optimalen Strategie: Blick in die Vergangenheit und nicht in
die Zukunft
Beispiel: 12 Faults (anstelle von 15 Faults bei FIFO)
LRU ist gute Strategie, aber sehr aufwändig exakt zu implementieren, wird
meist nur approximiert
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 86
6.7.2 Seitenersetzungsstrategien
Aging-Verfahren: Approximation von LRU
• Idee: Unterscheidung zwischen aktuellen und lange zurückliegenden
Zugriffen ermöglichen
• r-Bit allein ist dafür aber zu undifferenziert, deshalb wird mit jeder
Seite ein Counter verbunden, meist 8-Bit Counter, initialisiert mit 0
Bei jedem Timerinterrupt: für jede Seite:
• Counter wird um 1 Bit nach rechts geshiftet
• Wert des r-Bits wird zu Counter auf das am weitesten links
stehenden Bit hinzuaddiert
Beim Seitenfehler wird Seite mit kleinstem Counter-Wert zur Ersetzung
ausgewählt
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 87
6.7.2 Seitenersetzungsstrategien
Beispiel: Software-Approximation von LRU mit
• 8 Bit Counter pro Seite und
• r-Bit gesetzt durch Hardware sowie Timerinterrupts
Unterschied zu exaktem LRU? 8-Bit Counter ausreichend?
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 88
6.7.2 Seitenersetzungsstrategien
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 89
6.7.2 Seitenersetzungsstrategien
Beispiel Seitenersetzung unter 4BSD-Unix
• Kombination aus Paging und Swapping
• Paging: teilweise durch BS-Kern und teilweise durch
Systemprozess: Pager-Daemon (Prozessnummer 2)
• Pager-Daemon wird periodisch alle 250 msec gestartet
• Pager-Daemon führt Seitenersetzungen durch:
• falls Anzahl der freien Frames < lotsfree,
• Zurückschreiben von Seiten auf Platte (=> immer mind.
lotsfree freie Frames)
• Bem.: lotsfree i.d.R. ¼ des Arbeitsspeichers
• Globale Seiten-Ersetzungstrategie:
• 2-Hand Clock-Algorithmus auf der Core-Map (=Tabelle mit
einem Eintrag per Frame)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 90
6.7.2 Seitenersetzungsstrategien
Aufteilung des Arbeitsspeichers
(1) nicht auslagerbarer BS-Kern, (2) Frames, (3) Core Map:
nicht auslagerbare Frame-Tabelle: pro Frame ein Eintrag
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 91
6.7.2 Seitenersetzungsstrategien
2-Hand Clock-Algorithmus: 2 Zeiger in Core Map
• Überprüfen der Seite unter vorderem Zeiger:
Zurücksetzen des Zugriffbits (r),
• Überprüfen der Seite unter hinterem Zeiger:
Auslagern, falls r=0
• Nach Prüfung: beide Zeiger vorrücken, bis genügend freie Seiten
(lotsfree)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 92
6.7.2 Seitenersetzungsstrategien
• Swapper-Prozess:
wird gestartet, falls Paging-Rate zu hoch wird und die Anzahl der freien Frames
ständig < lotsfree
• Swapper (PID 0) prüft, ob ein Prozess > 20s untätig war;
der am Längsten untätige Prozess wird ausgelagert
• Auslagerung wird für weitere Prozesse solange wiederholt, bis genügend freier
Speicher verfügbar
• falls keine lange wartenden Prozess gefunden:
• prüfe die vier größten Prozesse
• Auslagern des am längsten untätigen Prozesses
• Swapper prüft regelmässig (nach wenigen Sekunden), ob rechenbereite
Prozesse einzulagern sind
• Auswahlfunktion: gewichtet nach Länge der der Auslagerungszeit, Größe des
Prozesse, Wartezeit etc.
• Swap-in großer Prozesse nur, wenn genügend Speicher vorhanden, da Einlagern
aufwändige Operation
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 93
6.8 Dateien und Dateisystem
6.8.1 Datei-Konzept
Motivation:
• Vielzahl unterschiedlicher Speichermedien: Bänder, Platte etc.
• Abstraktion von physikalischen Speicher-Eigenschaften: Definition
einer logischen Speichereinheit (Datei)
• Notwendigkeit zur langlebigen Datenspeicherung! D.h. Speicherung im
Prozessadressraum ist nicht sinnvoll! Warum?
Lösungsansatz: Datei
• Konzept zur dauerhaften (persistenten) Speicherung
von Daten, Informationen, Programmen auf
• Platten oder anderen externen Speichermedien
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 94
6.8.1 Dateikonzept
Persistente Speicherung: Dateien überdauern das Terminieren
von Prozessen, durch die sie erzeugt wurden
Datei:
Information gespeichert als:
• Folge von Bytes (z.B. Unix)
• oder als Folge von Records
• Benutzer legt Semantik fest
• BS kennt keine Semantik, es verwaltet nur
uninforme, benannte Container
Dateiattribute: Information über Datei: u.a.
• Name, Daten, Erzeugungszeitpunkt, Schutzbits,
• Größe, Zeitpunkt der letzten Änderung,
• Zeitpunkt des letzten Zugriffs, ...
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 95
6.8.1 Dateikonzept
Beispiele für Datei-Attribute
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 96
6.8.1 Dateikonzept
Dateitypen: Klassen von Dateien mit Charakteristika:
• üblicherweise ist die Typ-Identifikation Teil des Dateinamens, das ist die sog.
Datei-Extension
Beispiele: vgl. Tabelle
Sinn der Extension:
• Hinweise für BS über den Typ
der gespeicherten Daten
• z.B. BS kann beim Öffnen
einer .doc Datei die
assoziierte Anwendung
starten, z.B. Word-Prozessor
prn, ps, pdf
mpeg, mov, rm
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 97
6.8.1 Dateikonzept
Beispiele: Datei-Typen unter Unix
(a) ausführbare Datei, Magic Number enthält Infos über Typ
(b) Archiv-Datei
weitere Typen u.a.
• gewöhnliche Dateien:
ASCII oder Binärdatei
• Verzeichnisse
• Zeichenorientierte
Spezialdatei: serielles
E/A-Geräte
• ...
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 98
6.8.1 Dateikonzept
Datei-Strukturierung
• meist hierarchische Struktur (Bäume, Graphen)
Verzeichnis-Datei: Zusammenfassung von Dateien
• Verzeichnis (directory) enthält Verwaltungsinformationen
Aufteilung der Plattenspeicher in Partitionen (Volumes)
• Device-Directory (Volume Table) enthält Informationen
über die Dateien (Verzeichnisse) in der Partition
Typische
DateisystemOrganisation
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 99
6.8.1 Dateikonzept
zwei-stufiges Verzeichnis
Hierarchisches Verzeichnis
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 100
6.8.1 Dateikonzept
Häufiges Benennungs-Schema für Dateien:
• Pfadnamen (z.B. /usr/jim), absolute, relative Namen
• Traversieren des Verzeichnisbaums
Eingesetzte Algorithmen: u.a.
Beispiel: Unix-Verzeichnis-Baum
• Baumsuche
• Traversieren von Bäumen
• Einfügen/Entfernen von Knoten
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 101
6.8.2 Aufgaben des Dateisystems
Bereitstellung von Operationen zur:
• Verwaltung, Speicherung, Benennung
• zur gemeinsamen Nutzung und zum Schutz von Dateien
Systemaufrufe auf Dateien: u.a.
create: Speicher belegen, Verzeichniseintrag anlegen
delete: Eintrag in Verzeichnis ungültig, Speicher freigeben
open: Eintrag in open-file Tabelle des BS-Kerns
close: im System belegter Tabellenplatz wird wieder freigegeben
read: lesen der aktuellen Dateizeigerposition, Aufrufer muss
Datenmenge und Puffer angeben
z.B. int read(int fd, char *puffer, int max_n)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 102
6.8.2 Aufgaben des Dateisystems
File System API-Aufrufe unter Windows und Vergleich mit UNIX
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 103
6.8.3 Dateisystem Implementierung
Speicherung und Verwaltung von Dateien auf Platte
• Repräsentation der Dateien durch Dateideskriptoren
• Realisierung von Dateien durch Blöcke
• Datei-Deskriptor: Datenstruktur pro Datei
• Dateityp, Länge der Datei, Plattenblöcke
Beispiel: 64 Byte inode (Unix)
owner joe, uid
group student, guid
type regular file
perms rwxr-xr-x
accessed Feb 12 1999 3:00 P.M.
modified Feb 11 1999 10:16 A.M.
Adressen der 10 ersten Plattenblöcke
einfach indirekt
zweifach indirekt
dreifach indirekt
Fachbereich Informatik | Fachgebiet Graphisch-Interaktive Systeme (GRIS) | Prof. Dr. D. Fellner | 104
Verweise auf
Plattenblöcke
.
.
.
6.8.3 Dateisystem Implementierung
Wo, wie findet man was auf der Platte?
Dateiverwaltung/-speicherung auf dem Plattenspeicher:
• Inhaltsverzeichnis des Datenträgers (hier Platte)
• Inhaltsverzeichnis (z.B. Superblock unter Unix) befindet sich an fest
definierter Position auf der Platte
 Typisches Plattenlayout: MBR: Master Boot Record
MBR-Code lädt Inhalt des Boot-Blocks der aktiven Partition
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 105
6.8.3 Dateisystem Implementierung
Freispeicherverwaltung:
• Verwaltung aller freien
Speicherbereiche der Platte
• Datenstrukturen: u.a.
(1) verkettete Liste freier Blöcke
(2) Bitmap: Platte mit n Blöcken:
n-Bits zur Verwaltung
Verwaltung der Datenblöcke einer
Datei:
als Zusammenhängende Folge von
Plattenblöcken (Run)
Bsp.: CD-ROM Dateisystem, DVD
Frage: Vorteil/Nachteil?
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 106
6.8.3 Dateisystem Implementierung
Ziel: Fragmentierung vermeiden!
Verkettete Liste:
erstes Wort eines Blockes wird als Verweis auf nächsten Block interpretiert.
Problem?
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 107
6.8.3 Dateisystem Implementierung
Idee: Verzeigerung nicht in jedem Block, sondern in Extra-Tabelle
File Allocation Table (FAT)
(MS-DOS, von Windows-BS, optional auch von Linux unterstützt)
• Pro Plattenblock ein Eintrag in Tabelle
• Eintrag wird über Blocknummer indexiert
• Verzeichnis-Eintrag: Blocknummer des ersten Blocks (z.B. 217)
• FAT-Eintrag verweist auf nächsten Block bzw. Block Cluster
Extra Tabelle
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 108
Beispiel:
FAT-Struktur für
Datei bestehend
aus den Blöcken
217, 618 und 339
6.8.3 Dateisystem Implementierung
File Allocation Table
Vorteil:
• Datenblöcke werden voll ausgenutzt,
• Verkettung der Blöcke erfolgt über FAT
• Random Access auf Blöcke ist möglich; wirklich? Was genau?
Nachteil:
• Tabelle muss vollständig im Speicher gehalten werden
• Beispiel: 20 GB Plattengröße und 1KB Blockgröße:
• Tabelle mit 20 Millionen Einträgen, pro Eintrag mind. 4 Byte
• Tabelle der Größe 60MB bis 80 MB notwendig, resident im HS!
Bem.: FAT wird wegen seiner Einfachheit häufig in mobilen
Datenträgern und eingebetteten Systemen eingesetzt.
Beispiele: USB-Sticks, Digicams, iPods, Disketten
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 109
6.8.3 Dateisystem Implementierung
Ziel: Nicht eine große, sondern viele kleine Tabellen
Index-Block (Tabelle) pro Datei:
• Tabelle: Attribute, Plattenadressen von Dateiblöcken
• erste Blöcke werden direkt in Tabelle gespeichert, direkter Block-Zugriff bei
kleinen Dateien
• größere Dateien über Indirektionsstufen, baumartig
 Beispiel: inode in Unix
• Verzeichnis-Eintrag
der Datei enthält
Adresse des IndexBlocks der Datei
• Zugriff auf j-ten
Block:
mit Index j in den
Index-Block
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 110
6.8.3 Dateisystem Implementierung
Bislang betrachtet: Verwaltung der Blöcke einer Datei
Jetzt: Verwaltung der Dateien eines Verzeichnisses
Implementierung von Verzeichnissen:
• Vor dem Lesen einer Datei: Öffnen notwendig
• BS verwendet den Pfadnamen, um den zur Datei gehörigen Verzeichniseintrag
zu finden.
• Eintrag enthält die Informationen zum Auffinden der benötigten Plattenblöcke der
Datei
Varianten:
• Plattenadresse der gesamten Datei,
falls diese zusammenhängend gespeichert wurde
• die Nummer des ersten Blocks: Verfahren mit verketteten Listen
• Verweis auf den Index-Block, Nummer des i-nodes
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 111
6.8.3 Dateisystem Implementierung
Beispiel: UNIX-Dateisystem
Datenstruktur des UNIX-Kerns
• Prozesslokale Datei-Deskriptor-Tabellen,
• Open-File Tabelle,
• I-Node Tabelle, nur 1 Eintrag für jede Datei
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 112
6.8.3 Dateisystem Implementierung
Plattenlayout:
•
Block 0 enthält meist den Code zum Booten des Systems
•
Block 1: Superblock mit Layout-Informationen:
Anzahl der i-nodes, Anzahl der Plattenblöcke,
Anfang der Liste der freien Blöcke
•
Falls Superblock zerstört: Datei-System nicht lesbar
•
Suchen nach Datei george im Verzeichnis /usr,
mit deren i-node kann das Verzeichnis /george gefunden
•
und in ihm nach mbox gesucht werden
•
die i-node dieser Datei wird in den Speicher gelesen und
dort gehalten, bis die Datei wieder geschlossen wird
•
Zusammenfassung der Schritte der Namensauflösung
•
/usr/george/mbox (siehe nächste Folie)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 113
Beispiel (Unix) : Suche nach Datei /usr/george/mbox
Wurzelverzeichnis
i-node 7
Deskriptor für
/usr
Block 132
/usr
i-node 26
für
/usr/george
Block 406
/usr/george
2
.
..
3
bin
4
dev
5
lib
6
etc
26 george
81
Proj
7
usr
tmp
45
17
src
1
8
Modus
Größe
Uhrzeiten
132
1
.
..
19
bill
30
joe
6
51
Modus
Größe
Uhrzeiten
pat
sam
Lokalisieren des Wurzelverzeichnisses /
(dies steht an fester Stelle auf der Platte)
Suchen nach usr im Wurzelverzeichnis
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 114
406
26
6
.
..
64
Lehre
92
Buch
60 mbox
6.8.4 Dateischutz (protection)
Datei/Verzeichnis als zu schützende Objekte
• Rechte an (Zugriffsoperationen auf) Dateien: idR
lesen (r), schreiben (w), ausführen (x)
Nutzung von Dateien: Benutzer, Prozesse, Benutzergruppe:
• das sind die Subjekte, die Zugriffe ausführen
Notwendig:
• Rechtevergabe: Festlegung: wer darf was wann:
über Zugriffskontrolllisten (ACLs) und/oder Capabilities
• Kontrolle der Berechtigung von Zugriffen ist die
Aufgabe des Dateisystems
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 115
6.8.4 Dateischutz (protection)
Zugriffskontrolllisten, ACL (Access Control List)
• listenartig organisierte Datenstruktur
• jedem Objekt (hier Datei) ist eine ACL zugeordnet
• Jeder Listeneintrag identifiziert: ein Subjekt und die Rechte, die das
Subjekt an dem Objekt besitzt
• Häufig: Wild Cards als Platzhalter verwendbar
z.B. (Joe, *, rw),
(*,stud,r)
• Zugriffskontrolllisten sind Datei-Attribute
z.B. in Unix z.B. in i-node (Dateideskriptor) verwaltet
• Vorteile von ACLs:
• vergebene Rechte sind effizient für Objekte bestimmbar
• Rechterücknahme ist meist effizient realisierbar
• Nachteile: u.a. aufwändig zu kontrollieren
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 116
6.8.4 Dateischutz (protection)
Standard-Unix: einfache Variante einer ACL:
r w x
r w x
r w x
Rechte für alle Anderen
Rechte der Gruppe der Datei
Rechte des Datei-Eigentümers
Dateityp (Datei, Verzeichnis, Gerät)
Dateirechte: in i-node durch BS-Kern verwaltet,
Bem.: i-node liegt im Klartext auf dem Hintergrundspeicher
Datei-Zugriff: zuerst: open-System Call mit Angabe des Zugriffsmodus
Durchlaufen des Pfades (suchen nach i-node)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 117
6.8.4 Dateischutz (protection)
owner joe, uid
group student, guid
type regular file
perms rwxr-xr-x
accessed Feb 12 1999 3:00 P.M.
modified Feb 11 1999 10:16 A.M.
Adressen der 10 ersten Plattenblöcke
einfach indirekt
zweifach indirekt
dreifach indirekt
ACL als Bestandteil der
i-node unter Unix
Verweise auf Plattenblöcke
.
.
.
Unix-i-node
.
.
.
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 118
.
.
.
6.8.4 Dateischutz (protection)
Beispiel ACL-Konzept unter Windows 2000/XP
• differenzierte ACL mit Berechtigungen bzw. Verboten
für einzelne Benutzer, aber auch für Gruppen
• Berechtigungen/Verbote in separater Datenstruktur, dem
Security Descriptor, gespeichert
• Security Descriptoren aber nicht in Datei-Deskriptor sondern
• in globaler Tabelle, der Master File Table (MFT) verwaltet
• Security Descriptor enthält:
• SID = systemweit eindeutige Security ID des
Besitzers des Objekts und der Gruppe
• DACL = Discretionary ACL: Liste von ACEs
• ACE = Access Control Element mit allow/deny
• SACL = System ACL, spezifiziert die Operationen,
deren Nutzungen zu protokollieren sind
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 119
6.8.4 Dateischutz (protection)
Beispiel: Windows 2000/XP
• ACL-Eintrag: ACE: Rechte (Bitfolge),
Berechtigung (Deny, Allow)
Subjekt (user, group, ..)
z.B. Benutzer Cathy hat die Rechte:
read, write
Fachbereich
Dr. Frederik
Armknecht | 120
Fachbereich Informatik
Informatik || Prof.
Fachgebiet
Graphisch-Interaktive
Systeme (GRIS) | Prof. Dr. D. Fellner | 120
6.8.4 Dateischutz (protection)
Zugriffsausweise: Capabilities
• unverfälschtes Ticket: besteht aus Name, Rechten
• Ticket wird vom BS-Kern ausgestellt
• Besitz berechtigt zum Zugriff auf das in dem Ticket
benannte Objekt
• Zeilenweises Implementierung der Zugriffsmatrix
• jedem Subjekt s wird eine Capabilityliste zugeordnet
• Liste enthält Paare: (Objekt_Identifikator, Zugriffsrechte)
Vorteile von Capabilities:
• Einfache Bestimmung der Subjekt – Rechte
• Einfache Zugriffskontrolle: nur noch Ticketkontrolle!
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 121
6.8.4 Dateischutz (protection)
Nachteile:
• Rechterücknahme schwierig, Kopien suchen
• keine Subjekt-Ticket Kopplung, Besitz berechtigt
automatisch zur Wahrnehmung der Rechte
• Objekt -Sicht auf Rechte schwierig: wer darf was!
• in der einfachen Ausprägung ungeeignet für verteilte
Umgebungen, warum?
Heute: Mischformen: ACL und Capabilities in Standard-BS
Beispiel UNIX/Linux (Windows analog)
• Vor Datei-Nutzung: Datei muss geöffnet werden (open)
• Kern prüft anhand der ACL die Berechtigung und
• stellt file-handle (entspricht Capability) für Zugreifer aus
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 122
6.8.4 Dateischutz (protection)
Beispiel: Zugriffskontrolle unter Unix/Linux
Open-System-Call: Angabe des Zwecks op (r, w, x)
Aktionen des Unix Kerns
(1) Laden der i-node der zu öffnenden Datei
(2) Prüfen, ob zugreifender Prozess gemäß der ACL
der Datei zum gewünschten Zugriff op berechtigt ist
(3) Falls o.k. return File – Handle: enthält Information über op
op-Zugriffe auf geöffnete Datei mit File-Handle
Dateisystem führt Zulässigkeitskontrolle durch:
• Kontrolle, ob op-Rechte im Handle vermerkt
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 123
6.9 Ein-Ausgabe (I/O-Subsystem)
6.9.1 BS-Aufgaben:
 Kontrolle der E/A-Geräte, Schutz:
 Datentransfer initiieren, steuern, Daten zwischenpuffern,
 Unterschiedliche Geschwindigkeiten anpassen,
 Uniforme Geräteschnittstelle verfügbar machen
 Abstraktion von den geräteabhängigen Details:
 Befehlssätze der Controller, Fehlerbehandlung,
 Übertragungsgeschwindigkeiten, Blockgrößen etc.
Unterschiedliche Geräte-Charakteristika:
 Zeichenstrom bzw. blockweise Übertragung
 Sequentieller oder wahlfreier Zugriff
 Synchron oder asynchron
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 124
6.9.1 BS-Aufgaben
typische E/A-Geräte
• Busse: Verbindungen zwischen E/A-Geräten, Prozessor, Speicher
• Kommunikation zwischen E/A-Geräten und Prozessor: über
• Protokolle auf dem Bus und
• Unterbrechungen (Interrupts)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 125
Hardware
Software
Aufgabe: Integration einer Vielzahl unterschiedlicher Geräte
weitere BS-Kern Subsysteme
restliches E/A-Subsystem
SCSI
GeräteTreiber
Tastatur
Treiber
Maus
Treiber
SCSI
GeräteController
Tastatur Maus
Contr.
Contr.
SCSI
Geräte
Tastatur
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 126
Maus
...
PCI-Bus Floppy
Treiber
Treiber
ATAPI
Treiber
...
PCI-Bus Floppy
Contr.
Contr.
ATAPI
Contr.
PCI-Bus
...
Floppy
ATAPI
(Platte,
Band)
6.9.1 BS-Aufgaben
Entwurf eines E/A-Systems:
• Charakteristika eines E/A-System sind durch die
zugrundeliegende Technologie bestimmt,
• z.B. Eigenschaften eines Plattenlaufwerks bestimmen, wie die
Platten mit dem Prozessor verbunden werden und mit dem
Betriebssystem interagieren.
• Geräteabhängig müssen unterschiedliche Eigenschaften
wie Zugriffslatenzzeiten oder Durchsatz beachtet werden.
• E/A-Leistungsverhalten ist abhängig von
• technischen Geräte-Charakteristika,
• der Verbindung vom/zum E/A-Gerät,
• der Speicherhierarchie und
• dem Betriebssystem.
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 127
6.9.1 BS-Aufgaben
Aufteilung von EA/-Aufgaben auf Abstraktionsschichten:
• Hardware: Gerät und Controller
• Low-level BS-Schicht: Interrupt-Handling
• Geräte-Treiber, Geräteabhängige Software
• Geräteunabhängige Schicht und I/O-Schnittstelle
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 128
Bearbeitung eines I/O-Auftrages über die verschiedenen
Schichten hinweg:
I/O-Antwort
I/O-Anfrage
Benutzer-Prozess
Geräte-unabhängige
Software
I/O-Aufruf
Naming, Prüfung, ...
Geräte-Treiber
Interrupt-Handler
Treiber aufwecken
wenn I/O beendet
Controller
Gerät
Ausführung der
I/O-Operation
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 129
6.9.2 I/O Hardware
Klassen von Geräten
(1) Speicher (Platten, Bänder)
(2) Übertragungsgeräte: Netzwerkkarten, Modems
(3) Benutzungsschnittstelle: Bildschirm, Tastatur, Maus
Gemeinsame Charakteristika, Konzepte
• Kommunikation zwischen Gerät und Rechner über
Ports (Kommunikationsendpunkte), z.B. seriell
• Bus-Verbindungen mit Bus-Protokollen
• Controller: elektronische Komponenten
• I/O-Befehle kontrollieren die Geräte
• Geräte besitzen Adressen: Nutzung durch I/O-Befehle
oder Memory Mapped I/O
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 130
Plattenstapel
Spuren
(tracks)
Beispiel: Festplatte
•
•
•
•
Platte
(platter)
1–15 Platten
2 beschreibbare Oberflächen
Durchmesser: 1 – 8 inches
Rotationsgeschwindigkeit:
3.600 – 15.000 U/min.
• je 1000 – 5000 Spuren
(konzentrische Kreisscheiben)
• je Spur 64 – 200 Sektoren
(Sektorgröße: 1kB)
Sektoren
(sectors)
Beispiel: 1 GB
eine Spur
1 inch = 2,54 cm
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 131
Beispiel: Festplatte

Zum Lesen oder Schreiben müssen die Lese-/Schreib-Köpfe
(read/write heads) über die korrekte Position gefahren werden.
 Die R/W-Köpfe für jede Oberfläche sind miteinander verbunden und
bewegen sich gemeinsam.
Dreistufiger Zugriff auf Daten der Festplatte:
1. Positionierung des R/W-Kopfes über der richtigen Spur (seek);

Zeitaufwand zur Positionierung: Suchzeit (seek time) (Latenz)
2. Warten, bis der korrekte Sektor unter den R/W-Kopf rotiert ist;

Rotationslatenzzeit, rotational latency/delay
3. Plattenzugriff (disk access): Transferzeit (transfer time)

Zeitbedarf um einen Block von Bits zu transferieren
Platten-Controller: Steuerung der Festplatte und des Transfer
zwischen Festplatte und Hauptspeicher (Dauer: controller time)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 132
Beispiel: Festplatte
Antwortzeit der Festplatte = Warteschlange + Controller- +
Positionierlatenzzeit + Rotationslatenzeit + Transferzeit
1.
Positionierlatenzzeit:
 Summe der Positionierlatenzzeiten für alle möglichen Positionieranfragen /
Anzahl aller möglichen Suchanfragen
 durchschnittliche Positionierlatenzzeiten ca. 8 ms, mit Abweichungen bis zu 33% wegen der Lokalität von Verweisen auf Daten auf der
Festplatte
2.
Rotationslatenzzeit
 durchschnittlicher Wert ist halbe Rotationsdauer, z.B.
 0.5 / (7.200 U/min) = 0.5 / (7.200/60 U/s) = 4,2 ms / 0,5 U
3.
Transferzeit ca. 1 Sektor pro ms (d.h. 5 – 15 MB/s)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 133
6.9.3 Geräte-Controller
Ein E/A-Gerät besteht typischer Weise aus einer
mechanischen und einer elektronischen Komponente
Controller (Adapter): die elektronische Komponenten
• 2 Schnittstellen
(1) zum Gerät z.B. SCASI (Festplatte), VGA (Monitor)
(2) zum Prozessor/Speicher idR über Systembus
• Signale an E/A-Gerät: Auslösen von Aktionen, z.B. Kopf-Position.
• konvertieren sequentieller Bitströme in Datenblöcke
• Durchführung von gerätespezifischen Fehlerbehandlungen
E/A-Controller
E/A-Gerät
Puffer
Steuersignale CPU/
E/A-Daten
z.B. „Ack“, „ReadReq“,
„DataRdy“, „Send“, „Error“ ...
Fachbereich Informatik | Fachgebiet Graphisch-Interaktive Systeme (GRIS) | Prof. Dr.
D. Fellner | 134
Signale
Speicher
6.9.3 Geräte-Controller
Klassen von Controllern:
• Controller für seriellen Port:
• einfacher Geräte-Controller, Chip (oder Bestandteil)
• kontrolliert die Signale auf den Leitungen des Ports
• Kommunikation über serielle Leitungen (Unix: /dev/tty1,
Windows: COM1, COM2 bei RS-232 Terminals)
• Controller für parallele Ports:
• Kommunikation über parallele Busse
• UART (Universal Asychronous Receiver and Transmitter)
• Kombination: serielle Leitung zum Endgerät und
• paralleler Bus zum Speicher
• Direct Memory Access (DMA) Controller
• die meisten Systeme verfügen über DMA
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 135
6.9.3 Geräte-Controller
Kommunikation zwischen E/A-Controller und CPU/Hauptspeicher:
• Verständigung über Beginn eines Sende-/Empfangsvorgangs mit
Hilfe eines Status-Wortes, das in Flags anzeigt, ob Controller
bereit zum Senden oder Empfangen ist
• „Programmierte E/A“, falls CPU in häufigen, regelmäßigen
Abständen Status des E/A-Geräts abfragt.
• Nach Beginn der Übertragung leert bzw. füllt der E/A-Controller
seinen Puffer im Hauptspeicher und kommuniziert gleichzeitig mit
den beteiligten Endgeräten.
• Bei langsamen E/A-Geräten wird CPU dadurch unnötig lange
blockiert.
Lösung: Konzept der „Interrupt“-gesteuerten E/A
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 136
6.9.3 Geräte-Controller
Kommunikation mit Controller über Controller-Register
BS (konkret: die jeweiligen Geräte-Treiber) hat direkten Zugriff auf
Controller-Register
E/A-Gerät
CPU
Register
Puffer
Controller
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 137
BS-Kern
Geräte-Treiber
6.9.3 Geräte-Controller
Interrupt-gesteuerte Kommunikation zwischen Controller, CPU
• CPU besitzt spezielle Leitung: Interrupt-Request line
Kommunikation zw. Controller und CPU:
• Nach jeder Befehlsausführung: CPU prüft den Status der
Interrupt-Leitung
• Sobald bestimmtes Ereignis auftritt (z.B. „Controller bereit zum
Senden“) wird ein spezielles Unterbrechungs-Signal erzeugt
• Falls Signal auf Leitung:
• Interrupt: Sichern des aktuellen Ausführungskontextes,
• Springen zur Interrupthandler-Routine (IR)
• IR: ermittelt den Unterbrechungsgrund, führt die Behandlung durch
und nach Return-from-Interrupt nimmt CPU den Zustand
vor der Unterbrechung wieder auf.
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 138
6.9.3 Geräte-Controller
Interruptgesteuerte
I/O
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 139
6.9.4 Geräte-Treiber (device driver)
Sehr viele unterschiedliche Geräte/Controller mit
spezifischen Eigenschaften
• z.B. Maus: Mausbewegung, Richtung, Entfernung
gedrückte Buttons, etc.
• z.B. Platte: Zylinder, Sektor, Leseschreibkopf, Motor, etc.
• bei einer direkten Zusammenarbeit: BS mit GeräteControllern: BS müsste eine Vielzahl von
unterschiedlichen Geräte Charakteristika beherrschen
Lösung:
• Treiber-Software als geräteabhängige Teile des BS
• Abstrahieren von Unterschieden
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 140
6.9.4 Geräte-Treiber
Treiber sind (heute meist dynamisch ladbare) Kern-Module, die die
gerätespezifischen Details kapseln
• Aufgabe:
• verstecken der Unterschiede verschiedener Controller
• vereinheitlichte Nutzungsschnittstelle für die geräteunabhängige
BS-Schicht
• Funktion
• akzeptiert Befehle aus der hardwareunabhängigen Schicht und
transformiert sie in eine Folge von Controller- Befehlen und
aktiviert den Controller über dessen Register
Beispiel Plattentreiber:
• kennt die Register des Platten-Controllers
• kennt die Controller-Befehle, Parameter etc.
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 141
6.9.4 Geräte-Treiber
Beispiel: Auftrag an Platten-Treiber
Treiber:
• lokalisiert die geforderten Blöcke auf der Platte,
• prüft, ob der Motor läuft,
• positioniert den Schreib-Lesekopf, ...
Nach Beendigung der Controller-Aktivitäten:
• Treiber prüft auf Fehler
• reicht ggf. Blöcke an die höhere Schicht weiter und
• versorgt den ursprünglichen Anfrager mit Statusinformationen
Vorteile der Trennung Treiber – Controller?
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 142
6.9.5 Geräteunabhängige Software
Hauptaufgaben: Scheduling, Pufferung, Kontrolle, Naming
I/O-Scheduling:
• Verwaltung von I/O-Warteschlangen für Geräte
• Neu-Ordnung von Aufträgen,
• Antwortzeiten optimieren
Pufferung: u.a.
• Angleichen unterschiedlicher Bearbeitungsgeschwindigkeiten
(z.B. zwischen Modem und Festplatte)
• Angleichen unterschiedlicher Block-Größen
Kontrolle der Zugriffe auf Geräte
• Beispiele: MS-Dos: keinerlei Schutz,
Unix:
Zugriffsrechte analog zu Dateischutz
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 143
6.9.5 Geräteunabhängige Software
Geräte-Benennung
• Abbildung symbolische Geräte-Namen auf Identifikatoren
• Beispiel UNIX:
• /dev/tty0 identifiziert eine i-node
• die i-node enthält die major device number über die wird der
zuständige Treiber lokalisiert,
• über minor device number in i-node: Gerät identifiziert
Index in Treiber-Tabelle: u.a. I/O-Portadresse oder Memory Mapped
Adresse des Gerät-Controllers
Fehlerbehandlung
• viele Fehler sind Geräte-abhängig, nur von den Treibern bearbeitbar,
wenn nicht bearbeitbar: Treiber meldet Fehler an BS
• kontextabhängige Bearbeitung, Beispiel?
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 144
6.9.5 Geräteunabhängige Software
Beispiel: Ausführung eines blockierenden read-Aufrufs:
oBdA Verwendung eines bereits geöffneten Files
1. Der BS-Code zur Bearbeitung des Aufrufs:
• überprüft die Korrektheit der übergebenen Parameter
• und prüft, ob die Eingaben bereits im Cache vorliegen
Falls ja, dann Daten sofort an Prozess weiterleiten (Ende)
2. Anderenfalls I/O-Zugriff auf ein E/A-Gerät
• Prozess wird aus Bereit-Warteschlange der CPU entfernt
• und in Warteschlange des benötigten Geräts eingeordnet.
• Aufruf an den Geräte-Treiber weiterleiten
3. Treiber:
• Allokation von Speicher im Kern-Bereich für Daten
• Treiber sendet Befehle an den Controller
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 145
6.9.5 Geräteunabhängige Software
4. Controller kommuniziert mit Gerät, um die Operation auszuführen.
5. Falls der Transfer über DMA-Controller abgewickelt wird:
DMA erzeugt Interrupt, wenn Transfer beendet
6. Interrupt-Handler behandelt Interrupt und signalisiert ihn an Treiber
7. Treiber empfängt Signal,
• bestimmt um welchen Aufruf es sich handelt,
• klärt den Status des Aufrufs und
• signalisiert die Beendigung des Aufrufs
8. I/O-Subsystem transferiert Daten in den Adressbereich des
aufrufenden Prozesses
9. Prozess-Blockierung wird beendet, wartet auf CPU
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 146
6.10 Busse (spezielle E/A-Geräte)
Busse sind Kommunikationsverbindungen zwischen mehreren
Teilsystemen, die gemeinsame Leitungen verwenden.
Vorteile:
• Neue Geräte können einfach integriert werden.
• Geräte können zwischen verschiedenen Computersystemen mit
demselben Bus-Typ einfach ausgetauscht werden.
• Kosteneffizient, da ein Satz Verbindungen mehrfach genutzt wird.
Nachteile:
• Bus erzeugt Kommunikations-Flaschenhals (bottleneck), der den
maximalen E/A-Durchsatz beschränkt.
(Hohe Prozessorleistung erfordert hohen E/A-Durchsatz.)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 147
6.10 Busse
 Maximale Bus-Geschwindigkeit durch physikalische Faktoren bestimmt:
 Länge der Busse und Anzahl der angeschlossenen Geräte
 Techniken zur Verbesserung des Bus-Leistungsverhaltens können sich
gegenseitig negativ beeinflussen.
 Beispiel: Möglichkeiten zur Erhöhung der Bus-Geschwindigkeit
 Erhöhung der E/A-Datenraten durch Erhöhung der Bus-Bandbreite
(z.B. durch größere Daten-Blöcke )
 Erhöhung der E/A-Datenrate führt tendenziell zu einer erhöhten
Verzögerung bei den Antwortzeiten!
Bus sollte:
(1) Schnellen Zugriff auf das Medium ermöglichen
(2) Hohe Bandbreite bieten und
(3) Universell sein
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 148
6.10 Busse
Allgemeines Design: Trennung Steuerung, Daten
Ein Bus enthält im allgemeinen
 einen Satz von Steuerleitungen (control lines)
 zur Anforderung/Bestätigung von Signalen
 zur Indikation des Typs an Information in den Datenleitungen
 einen Satz von Daten- und Adressleitungen (data lines)
 für Daten, Kommandos oder Adressen
 Beispiel: Festplatte möchte Daten aus einem Sektor in den
Hauptspeicher schreiben.
 Datenleitungen enthalten die Zieladresse im Hauptspeicher
und den aktuellen Datenwert.
 Steuerleitungen zeigen an, welcher Typ von Information in den
Datenleitungen des Busses zu jedem Zeitpunkt des Transfers
enthalten ist.
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 149
6.10 Busse
 Typische Bus-Transaktion besteht aus zwei Teilen:
 Senden der Adresse und Senden oder Empfangen der Daten
 Definition der Bus-Transaktionen aus Sicht des Prozessors:
 Input-Operation: Transfer von Daten aus einem Gerät zum Hauptspeicher, wo
Prozessor lesen kann.
 Output-Operation: Transfer von Daten aus dem Hauptspeicher, Beispiel:
Control lines
Memory
(1) Steuerleitung enthält
Leseanforderung an Hauptspeicher,
Datenleitung enthält Adresse
(2) Hauptspeicher greift
auf Daten zu.
Data lines
Processor
Disks
Control lines
Memory
Data lines
Processor
Disks
(3)
Hauptspeicher transferiert Daten
über Datenleitungen &
Memory
signalisiert, dass Daten verfügbar sind
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 150
Control lines
Data lines
Disks
Processor
6.10 Busse
Kommunikation auf Bussen:
Busse können synchron oder asynchron arbeiten.
Synchron arbeitende Busse:
 einfacher zu realisieren
 Alle angeschlossenen Komponenten müssen mit der gleichen
Geschwindigkeit arbeiten.
 Da z.B. Prozessor im allgemeinen schneller als Festplatte arbeitet,
müssen Unterschiede durch geschickte Taktung ausgeglichen werden:
 Uhrtakt in den Steuerleitungen
 Verwendung eines festen Kommunikationsprotokolls relativ zum
Uhrtakt.
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 151
6.10 Busse
Asynchron arbeitende Busse:
 Prozessor kann seine Taktperiode an die Geschwindigkeit der Einheit
anpassen, mit der er gerade kommuniziert.
 aufwändigere Realisierung:
 Koordination der Datenübertragung zwischen Sender und Empfänger mit
Handshake Protokoll
(Bei Input: E/A-Gerät/ bei
Output: Hauptspeicher) zeigen
damit an, daß Datenwort bereits
in Datenleitungen
Zusätzliche Steuerleitungen:
Zeigt LeseAnforderung an
Hauptspeicher an
(Adresse zugleich
in Datenleitung).
Zur Bestätigung der
ReadReq- und
DataRdy-Signale
der Gegenstelle
ReadReq
1
3
Data
2
2
4
6
4
Ack
DataRdy
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 152
5
7
6.10 Busse
Beispiel: 7 Schritte zum Lesen eines Wortes aus Hauptspeicher und
Empfangen in einem E/A-Gerät: Start: E/A-Gerät setzt ReadReq-Signal
und stellt Adresse in Datenleitung
1. Sobald Hauptspeicher ReadReq-Signal feststellt, wird Adresse aus
Datenbus gelesen & Ack als Bestätigungssignal gesetzt.
2. E/A-Gerät stellt Ack-Signal fest & gibt ReadReq- und Daten-Leitungen frei.
3. Hauptspeicher sieht ReadReq niedrig & gibt als Bestätigung Ack-Leitung frei.
4. Hauptspeicher stellt Daten in Datenleitung & erhöht DataRdy.
5. E/A-Gerät sieht DataRdy, liest Daten aus Bus & signalisiert Empfang durch
Erhöhen von Ack.
6. Hauptspeicher sieht Ack, erniedrigt DataRdy & gibt Datenleitungen frei.
7. E/A-Gerät sieht Erniedrigung von DataRdy & erniedrigt Ack, wodurch
Fertigstellung der Transaktion signalisiert wird.
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 153
6.10 Busse
Read Req
1
3
Da ta
2
4
6
2
4
A ck
5
7
Da taRdy
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 154
6.10 Busse
Zugriff auf Bus
 Bus ist exklusives Betriebsmittel
 Ohne Steuerung der Zugriffe auf den Bus: Verschiedene Geräte versuchen
„gleichzeitig“ Daten- und Steuerleitungen zu belegen
 Lösung: Bus-Master kontrollieren alle Zugriffe auf den Bus.
• Prozessor ist immer Bus-Master, Hauptspeicher ist immer Slave
• Mehrere Bus-Master erfordern Bus-Arbitration (Zuteilung):
• Fairneß sollte gewährleistet sein („keiner darf verhungern“).
• Bus-Arbitration sollte effizient sein (d.h. wenig Zeit kosten).
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 155
6.10 Busse
Bus-Arbitration: „Daisy Chain“
Ablauf: 1: Request
2. Warten auf Grant
3. Bus belegen, 4. Release
• Subsystem mit höchster Priorität am Anfang der grant-Kette
• Subsystem mit höherer Priorität unterbricht ggf. das grant-Signal.
• Probleme: u.a.
• Geräte „stromabwärts“ können u.U. verhungern.
• Was, wenn ein Gerät vergißt, ein „release“ zu senden?
• Fehleranfälligkeit, da Ausfall eines Geräts andere weiter unten
behindert.
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 156
6.10 Busse (Polling)
• Subsystem, das Bus benutzen möchte, setzt ein Signal auf request•
•
•
•
Leitung.
Bus-Arbiter setzt nacheinander die poll-Leitungen.
Erstes befragtes Subsystem, das eine Anforderung gestellt hat, setzt ein
Signal auf die inhibit-Leitung und nutzt den Bus.
Subsystem gibt danach die inhibit-Leitung wieder frei.
Bus-Arbiter kann im Zyklus fortfahren oder von vorne beginnen.
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 157
6.10 Busse
Bus-Arbitration
Lösung 3: verteilte, prioritätsgesteuerte Arbitration
 Jedes Subsystem hat seine eigene Leitung für request-Signale.
 Subsystem kann so erkennen, ob gegenwärtig request eines anderen
mit höherer Priorität vorliegt.
 Falls dies der Fall ist, wird eigene Anfrage zurückgestellt.
 Preis: zusätzliche Leitungen für request-Signale
Lösung 4: verteilte Arbitration mit Kollisionserkennung
 Jedes Subsystem fordert Bus unabhängig an.
 Mehrfache, gleichzeitige Anfragen resultieren in Kollision.
 Kollision muß entdeckt und aufgelöst werden.
 Beispiel: Ethernet-LAN
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 158
6.11 Synchronisation
Ziel: Wichtigste Synchronisationsprobleme und Lösungen kennen lernen,
Koordinierung von Abläufen
6.11.1 Hintergrund
• in einem Rechnersystem sind zu einem Zeitpunkt idR >> 50 Prozesse
nebenläufig aktiv
• wie bereits gesehen, können Prozesse während ihrer Ausführung
unterbrochen und zu einem späteren Zeitpunkt wieder fortgesetzt
werden: Interleaving der Ausführungen
Problem: Prozesse besitzen häufig Code-Teile, in denen sie auf
gemeinsame Ressourcen (z.B. globale Variablen) lesend/schreibend
zugreifen, d.h.
• Prozesse konkurrieren um gemeinsame Ressourcen: Konflikte!
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 159
Beispiel 1: Gemeinsam genutzte Hardware
Ressource (z.B. Bildschirm)
Prozess 1
boolean c1:=true
while c1 do
Prozess 2
boolean c2:=true
while c2 do
for i=1 step 1 until MAXINT
display (" i " )
do something else
begin ... c1:=false ... end
od
for i=1 step 1 until MAXINT
display (" -i " )
do something
begin ... c2:=false ... end
od
Erwartete Ausgabe?
Mögliche Ausgabe?
Roter Kasten = Kritische Abschnitte, da beide Prozesse auf
den gemeinsam genutzten Bildschirm zugreifen
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 160
Beispiel 2: Gemeinsam genutzte Software
Ressource
integer a,b :=1; // gemeinsame Daten für beide Prozesse
Prozess 1
while true do
Prozess 2
while true do
a = a +1;
b = b +1;
do something else
od
b = b + 2;
a = a + 2;
do something else
od
• Effekt: Inkonsistenz der Daten, irgendwann: a ≠ b
• Fazit: Konzepte zur Synchronisation der kritischen
Abschnitte notwendig: wechselseitiger Ausschluss!
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 161
6.11.2 Kritische Abschnitte (critical regions)
Problem:
• Prozesse arbeiten in kritischen Bereichen ihres Codes
(critical region) auf gemeinsamen Ressourcen
Lösung:
• gemeinsame Ressourcen sind als exklusiv nutzbare Ressourcen zu
betrachten und
• für die Dauer der Nutzung der Ressource ist der wechselseitige
Ausschluss (wA; mutual exclusion) zu gewährleisten
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 162
6.11.2 Kritische Abschnitte
Anforderungen an eine Realisierung des wA:
1. Kritische Abschnitte sind wechselseitig auszuschließen,
2. keine Annahmen über die Reihenfolge der Ausführung der kritischen
Abschnitte,
3. keine Annahmen über die Ausführungszeiten,
4. kein Prozess darf unendlich lange darauf warten müssen, seinen
kritischen Abschnitt betreten zu dürfen
Gewünschtes Verhalten:
Fachbereich Informatik | Fachgebiet Graphisch-Interaktive Systeme (GRIS) | Prof. Dr. D. Fellner | 163
6.11.3 Lösungen für den wA
Hardware- und Software-Konzepte
Hardware-Lösung
• Spezielle atomare Maschinenbefehle:
• Swap: Austausch der Inhalte zweier Worte
z.B. Sun SPARC: compare and swap, Pentium xchg(a.b)
• Test-and-Set (Test-And-Set-Lock (TSL))
z.B. Motorola, Intel 80x86, MIPS R4000
Semantik des TSL-Befehls: TLS RX Lock
• Inhalt von LOCK wird in Register RX geschrieben,
• Wert < > Null wird an Adresse LOCK geschrieben.
• Lesen u. Schreiben von LOCK wird als atomare, unteilbare Operation
ausgeführt.
• Atomarität der LOCK-Zugriffe: CPU sperrt den Speicher-Bus
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 164
6.11.3 Lösungen für den wA
TSL-Befehl zur Realisierung des wA.: enter und leave-Routinen
• Verwenden einer gemeinsamen Variablen flag zur Koordinierung
• Wenn flag = 0, kann jeder Prozess Variable auf 1 setzen und
dann auf gemeinsamen Speicher r oder w zugreifen.
• Nach Beendigung wird flag wieder auf 0 zurück gesetzt.
Beispiel: Pseudo-Lösung in MIPS-Befehlen
flag: .byte 0
enter: tsl $t0, flag
bnez $t0, enter
jr $ra
leave: lw $zero, flag
jr $ra
# in MIPS R2000 nicht!
# flag nach $t0 kopieren und flag auf 1 setzen
# falls flag ≠ 0
# lock ist bereits gesetzt, zurück zur tsl-Abfrage
# Rücksprung zum Aufrufer
# Eintritt in kritischen Abschnitt
# setze flag auf 0
# Rücksprung zum Aufrufer
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 165
6.11.3 Lösungen für den wA
Verwendung der TSL-Instruktion (Forts.):
• vor Betreten des kritischen Abschnitts:
Ausführung von enter
• nach Ende des kritischen Abschnitts:
Ausführung von leave
Bekannte Algorithmen: Peterson-Verfahren (hier nicht behandelt)
Schwierigkeiten:
• ständiges, aktives Warten („busy waiting“)
• keine faire Lösung, Prozess kann in Warteschlange verhungern
• nur für kurze, kritische Abschnitte geeignet
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 166
6.11.3 Lösungen für den wA
Software- Lösungen
Bem.: keine vollständige Auflistung, nur wichtige Konzepte:
Unterbrechungssperre und Semaphore
Unterbrechungssperre
• Operationen: Enable und Disable Interrupt
• Aber: nicht als allgemeine Lösung sinnvoll:
z.B.: beliebiger Benutzer-Prozess schaltet Interrupts ab, und dann?
z.B. bei Multiprozessor-Systemen sinnlose Lösung
• Aber für BS-Code häufig sinnvoll und nützlich:
BS-Kern sperrt Interrupts für wenige Befehle,
z.B. um Listen, Variablen zu aktualisieren
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 167
6.11.3 Lösungen für den wA
Semaphor-Konzept (Signalmast, Telegraph)
• 1965 von E.W. Dijkstra eingeführt, allgemeines Synchronisationskonzept
• idR implementiert eine Semaphore den wA mit
‚passivem‘ Warten der Prozesse, d.h.
• falls die Ressource nicht verfügbar, wird Prozess blockiert
• wartende Prozesse müssen durch andere Prozesse reaktivier werden,
sie prüfen den Status nicht selber
• Bem.: Semaphor auch mit aktivem Warten möglich
Definition: Ein Semaphor s ist ein Datenobjekt mit
• einer lokalen Integer-Variable, die als Zähler verwendet wird,
• mit 2 auf s definierten Operationen: down(s), up(s)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 168
6.11.3 Lösungen für den wA
Bem. Ursprünglich hießen diese Operationen P und V
(aus dem holländischen: P (proberen), V (verhogen))
 Weitere übliche Benennungen: wait, signal
 Um aktives Warten zu vermeiden, werden Prozesse blockiert und in
einer Warteschlange verwaltet
 Sei WL(s) die Warteschlange für das Semaphor s, s_counter deren
Zählvariable, p, q Prozesse
Semantik von down(s):
s_counter:=s_counter-1;
if s_counter <0 then insert p in WL(s) ;
block(p);
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 169
6.11.3 Lösungen für den wA
Semantik von up(s):
s_counter:=s_counter+1;
if s_counter<=0 then delete q aus WL(s);
wakeup (q);
Genutzt werden die BS-Dienste: block, wakeup
block(p):
- entzieht Prozess p die CPU, p im Zustand wartend
- rettet den Ausführungskontext von p und
- stößt den Scheduler an
wakeup(q): - Prozess q von wartend in Zustand rechenwillig
Wichtig: down, up sind unteilbare, atomare Operationen
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 170
6.11.3 Lösungen für den wA
Frage: wie Atomarität von down(s), up(s) garantieren?
Antwort: down, up als system calls anbieten durch BS,
 Uni-Prozessor: Disable Interrupts bei Op-Ausführung
 Multi-Prozessor: z.B. Spin-Lock oder TSL-Befehl
Frage: doch wieder busy waiting!
Was wurde überhaupt gewonnen?
Semantik des Semaphors s:
 Falls s_counter = i, i>0, i Prozesse können im kri.Absch. sein
 Falls s_counter = j, j<0, j Prozesse sind in WL blockiert
 Falls s_counter = 0, keiner wartet, maximal erlaubte
Prozessanzahl ist im k.A.
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 171
6.11.3 Lösungen für den wA
Bem.: Mit Semaphoren: allgemeine Koordinierungsaufgaben
implementierbar, Wechselseitiger Ausschluss ist eine davon
Semaphore zur Realisierung des w.A.:
 Initialisierung s_counter mit 1,
Notation: semaphore wa=1; # wa Name des Semaphors
 Kapselung des kritischen Abschnitts mit down, und up:
Beispiel: Prozess Pi
Bsp.:
....
P1
P2
down(wa);
down(wa)
down(wa)
kritischer Abschnitt
kA
kA
up(wa);
up(wa)
up(wa)
....
obdA Schedule: P1, P2, P3, initial: s_counter = 1
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 172
P3
down(wa)
kA
up(wa)
6.11.3 Lösungen für den wA
Beispiel: 2 Prozesse P1, P2 und zwei Semaphore S, Q
• S und Q beide mit 1 initialisiert
• Ablauf: obdA erst P1
P1: down(S)
jetzt z.B. Interrupt, Scheduler wählt (irgendwann) P2
P2: down(Q)
Prozess P1
down(S)
P1: down(Q) und nun ?
down(S)
down(Q)
Low-level Konzept!
...
Vorsicht beim Einsatz!
up(S)
Deadlockgefahr!
up(Q)
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 173
Prozess P2
down(Q)
down(S)
...
up(Q)
up(s)
6.11.3 Lösungen für den wA
Bemerkungen:
• eingeführte Semaphore wird als zählendes
Semaphor bezeichnet (counting), da s_counter
beliebige Integer Werte annehmen kann
Binäres Semaphor, Mutex häufig verwendete Variante
• s_counter nimmt nur die Werte 0,1 an
• Mutex: vereinfachtes binäres Semaphor,
Variable mit 2 Zuständen: locked, unlocked
Mutex ist einfach (z.B. im
user-level bei Thread
Biblioth.)
zu implementieren, falls
TSL-Befehl verfügbar ist
Fachbereich Informatik | Fachgebiet Graphisch-Interaktive Systeme (GRIS) | Prof. Dr. D. Fellner | 174
6.11.3 Lösungen für den wA
Semaphore unter Unix
lockf
Sperren eines Dateizugriffs
msem_init
Semaphorinitialisierung zum Speicherzugriff
msem_lock
Sperren eines Semaphors (down)
msem_unlock Entsperren eines Semaphors (up)
msem_remove Entfernen eines Semaphors
semctl
Semaphorkontrolloperation
semget Hole Semaphorwert
semop Semaphoroperation
Semaphore unter Windows: u.a.
CreateSemaphore()
OpenSemaphore()
WaitForSingleObject(Sema,TimeOutVal)
ReleaseSemaphore()
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 175
Erzeugen
Initialisieren
down(s)
up(s)
6.11.4 Allgemeine Synchronisationsprobleme
Klassische Probleme
Erzeuger-, Verbraucher Problem (Bounded Buffer)
• Leser-Schreiber-Problem
• Speisende Philosophen
• Sleeping
Barber
•...
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 176
6.11.4 Allgemeine Synchronisationsprobleme
Beispiel: Erzeuger/Verbraucher-Problem
Problemstellung:
• Erzeuger-Prozess E:
• erzeugt Datenelemente und
• schreibt sie in einen Puffer W.
• Verbraucher-Prozess:
• liest Datenelemente aus dem Puffer W
• und verarbeitet sie.
• Puffer W besitzt endliche, feste Kapazität n,
• Zugriffe auf W müssen w.A. sein
Beispiel aus BS-Umfeld für solche Problemstellungen?
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 177
6.11.4 Allgemeine Synchronisationsprobleme
Lösung mit zählenden Semaphoren möglich
1ter Lösungsversuch: mit semaphore wa=1
Erzeuger E :
while true do
begin
>>produziere<<
down(wa);
>>schreibe nach W<<
up(wa);
end
Probleme? Lösungsansatz?
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 178
Verbraucher V :
while true do
begin
down(wa);
>>entnimmt aus W, falls Element
vorhanden, sonst warten<<
up(wa);
>>verarbeite<<
end
6.11.4 Allgemeine Synchronisationsprobleme
semaphore wa=1,
zusätzliche Semaphoren: leer = N, voll=0
Erzeuger E :
while true do
begin
>>produziere<<
Verbraucher V :
while true do
begin
down(wa);
down(wa);
>>schreibe nach W<<
up(wa);
>>entnimmt aus W, falls Element
vorhanden, sonst warten<<
up(wa);
>>verarbeite<<
end
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 179
end
6.11.4 Allgemeine Synchronisationsprobleme
Erzeuger-Verbraucher-Problem mit 3 Semaphoren
Fachbereich Informatik | Prof. Dr. Frederik Armknecht | 180
Herunterladen