2. Aufgaben von Betriebssystemen

Werbung
Blätter zur Vorlesung
Betriebssysteme
Sommer 2001
Prof. Dr. Peter Schulthess
Oliver Marquardt & Michael Schöttner
Fakultät für Informatik, Verteilte Systeme
Universität Ulm
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
1. Vorschau
1.1

Grundlage für Vorlesungen:
- Systemprogrammierung,
- Verteilte Betriebssysteme,
- und zur Allgemeinbildung ...


Einordnung & Organisation
Praktika & Diplomarbeiten VS:
Verteilte Betriebssysteme & Plurix,
Web-Video, Multimedia,
Telemedizin, Funknetze,
Java Anwendungen im Netz,
Spiele im Netz ...
Vorlesung 3V+Ü, ab 25.04.01:
- Mittwoch, 10-12h, 123 (wöchentlich),
- Donnerstag, 12-14h, H20 (alle 2 Wochen).

Übung im Wechsel mit der Vorlesung:
- Donnerstag, 12-14, H20 (alle 2 Wochen).

Übungsbetreuung:
- O. Marquardt, M. Schöttner, M. Wende.


Sprechstunde: Montag ca. 16 Uhr,
Zimmer 350, o-27 Informatik.
Anrechnung der kombinierten Übungsnote
im Rahmen der Diplomprüfung möglich
(>50%).
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
1.2 Definition
" An operating system is the software that
breathes life into a computer." (Unbekannter
amerikanischer Autor)
" Die Programme eines digitalen Rechensystems, die zusammen mit den Eigenschaften
der Rechenanlage die Grundlage der möglichen Betriebsarten des digitalen Rechen–
systems bilden und insbesondere die
Abwicklung von Programmen steuern und
überwachen" (DIN 66029, (1978))
(-> Interrupts, Multitasking, Operating...)
" Das Betriebssystem macht den Anwendungssystemen die Betriebsmittel zugänglich; insbesondere Verarbeitungsleistung,
Speicher und Kommunikationswege."(P.S.)
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Schema aus "Road Map to A/UX":
Programme
Befehlsinterpreter
System-Call
interface
Kern
Treiber
Treiber
Treiber
Treiber
Hardware
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
1.3
1.
Vorschau
1.1.
1.2.
1.3.
1.4.
2.
Betriebsmittelzuteilung
Bedienerschnittstelle:
Abstraktion von der Hardware
Verzeichnisdienste
Fehlerbehandlung & Zugriffsschutz
Konfigurierung & Startup
Betriebssystem-Klassifizierung
3.1.
3.2.
3.3.
3.4.
4.
Einordnung & Organisation
Definition
Inhalt
Literatur
Aufgaben von Betriebssystemen
2.1.
2.2.
2.3.
2.4.
2.5.
2.6.
3.
Inhalt
Historische Klassifizierung:
Programmierschnittstelle
Vernetzungaspekt
Beispiele von Betriebssystemen
Schnittstellen
4.1.
4.2.
4.3.
4.4.
4.5.
4.6.
4.7.
4.8.
4.9.
4.10.
Schichtung eines Betriebssystems
Bibliotheken (Shared...)
Laufzeitumgebung
Perspektive eines Pascal-Progr.
Betriebsystemaufruf
Subsysteme
Treiberschnittstelle
Miniports
Hardwareschnittstellen
Interrupts
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
5.
Eventmodelle
5.1.
5.2.
5.3.
5.4.
5.5.
5.6.
6.
Hauptspeicher
6.1.
6.2.
6.3.
6.4.
6.5.
7.
Formate (FAT, NTFS, Partitions )
Speichervergabe
Redundanz & Spiegelung
Zugriffsoptimierungen
Caching
Namensdienste
8.1.
8.2.
8.3.
8.4.
8.5.
9.
Systemvariablen
Kellerorganisation
Speichervergabe
Freispeichersammlung
Linker & Lader
Plattenspeicher
7.1.
7.2.
7.3.
7.4.
7.5.
8.
Benutzereingaben
Errors& Exceptions
Event-Schleifen (Macintosh)
Call-Back Routinen (Windows, X-11)
Listeners (JavaOS)
Event-Broker (JavaOS)
Namen & Adressen
Verzeichnisstrukturen
Dateisysteme
Konfigurationsverwaltung
Decknamen
Nebenlaeufigkeit
9.1.
9.2.
9.3.
9.4.
Kontextwechsel
Scheduling & Prioritaeten
Prozesse & Threads
Verklemmungen, Aushungern
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
9.5.
9.6.
Synchrone & asynchrone Aufrufe
Kommunikation zwischen Objekten
10. Synchronisierung
10.1.
10.2.
10.3.
10.4.
10.5.
10.6.
10.7.
10.8.
Lese/ Schreibkonflikt
Test & Set Operationen
Semaphore
Kritische Regionen
Monitore
Rendez-vous
Message Passing
Warteschlangen
11. Virtueller Speicher
11.1.
11.2.
11.3.
11.4.
11.5.
Segmentierung
Speicherdeskriptoren
Ersetzungsalgorithmen
Uebersetzungspuffer
Adressuebersetzung
12. Sicherheitskonzepte
12.1.
12.2.
12.3.
12.4.
12.5.
Protection Rings
Supervisor Betriebsmodus
Zugriffslisten
Deskriptoren & Capabilities
Isolation der Adressraeume
13. Ergänzende Themen
13.1.
13.2.
13.3.
Leistungsbewertung
Modellierung von BS
Virtuelle Maschinen
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
1.4
Literatur
- Traub, Stefan: "Verteilte PC-Betriebssysteme";
Teubner Verlag 1997.
- Custer, Helen: "Inside the Windows NT File
System", Microsoft Press 1994, Redmond
- Custer, Helen: "Inside Windows NT",
Microsoft Press 1994, Redmond
- Hamilton, David; Williams Mickey:
"Windows NT 4 Programmierung für Insider";
Software-Verlag, München 1997
- Andrews, Mark: "C++ Windows NT
Programming", M&T Books, New York 1996
- Davis, Ralph:
"Windows NT Network Programming";
5. Auflage, Addison-Wesley 1996
- Simon, Richard: "Windows 95 Common
Controls & Messages API Bible";
Waite Group Press, Corte Madera, 1996
- Boyce, Jim & al.: "Windwos NT Workstation
4.0 - Advanced technical Refernece"; QUE
Corp. 1996
- Carr, Robert; Shafer, D.: "The Power of
Penpoint", 1991, Addison-Wesley
- Coffin, Stephen: "UNIX The Complete
Reference", 1979/86, McGraw-Hill
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
-
Coulouris, George F.; Dollimore, Jean:
"Distributed Systems, Concepts and Design",
1988, Addison-Wesley
Deitel, H. M.: "Operating Systems",
Second Edition, 1990 Addison-Wesley
Habermann, A.: "Entwurf von Betriebssystemen", 1976, Springer-Verlag
Laun, W.: "Konzepte der Betriebssysteme",
1989, Springer-Verlag
Lister, A.: "Fundamentals of Operating
Systems", Second Edition, 1979/83, Macmillan
Press
Mullender, Sape: "Distributed Systems",
1989 ACM Press
Silberschatz, A.; Peterson, J.; Galvin, P.
"Operating System Concepts",
Third Edition, 1991 Addison-Wesley
Sloman, Morris; Kramer, Jeff:
"Verteilte Systeme und Rechnernetze"
1989, Hanser-Verlag, Prentice-Hall International
Pinkert, James R.; Wear, Larry L.
"Operating Systems; Concepts, Policies, and
Mechanism", 1989, Prentice-Hall International
Richter, Lutz: "Betriebssysteme",
1985, Teubner Stuttgart
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
2. Aufgaben von Betriebssystemen
2.1
Betriebsmittelzuteilung
• Betriebsmittel werden vom System zugeteilt:
- - -
um Doppelbelegungen zu vermeiden,
zwecks Rückgabe beim Programabsturz,
• Zuteilung jeweils an ein "Objekt", z.B. an:
- -
Programm, Prozess, Thread, Instanz, User ...
• Hauptspeicher wird benötigt für:
-
-
Prozeduraktivierungen auf dem Keller,
Puffer für Dateien und Datenpakete,
Codesegmente & Kontrollblöcke,
Heap-Objekte.
• Geräte / Devices:
- - -
entweder nur exklusiv nutzbar (exklusiv),
oder gleichzeitig nutzbar (sharable),
 • Plattenspeicher wird als Dateien vergeben.
• Bei Bedarf wird die CPU zwischen
verschiedenen Threads umgeschaltet.
• Bildschirmoberfläche ist kostbar. Programme
erhalten Fenster auf dem Bildschirm.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
2.2
Bedienerschnittstelle:
• Anzeigen von Fehlersituationen.
• Dialogsteuerung für Anwenderprogramme.
• Dialog zur Systembedienung.
• Navigation im (Datei-)System:
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
2.3
Abstraktion von der Hardware
2.3.1 Für den Anwendungsprogrammierer:
 Ein Subset von Laufzeitroutinen ist allen Unix
Implementierungen gemeinsam:
- creat, open, close, read, write,
- malloc, fork, wait, waitpid,
- socket, bind, printf, scanf ...
 Viele Karten unterstützen Grafikstandard:
- DirectX, OpenGL, QuickDraw.
 Java Programme laufen auf beinahe jedem
Rechner, wenn dort eine Virtuelle Java
Maschine (JVM) vorhanden ist.
2.3.2 Für den Systemprogrammierer:
• Wenn eine "Hardware Abstraktionsschicht"
eingezogen wird, ist es leichter, ein
Betriebssystem auf eine neue Rechnerplattform zu bringen.
• Erhalten bleiben etwa:
- Formate im Dateisystem,
- Protokolle auf dem Netz,
- Algorithmen und Strategien ...
•
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
2.4
Verzeichnisdienste
"Machines use adresses, people prefer names"
• Übersetzung zwischen Namen und Adressen:
• Adressen für:
- Hauptspeicher, Ethernet, Internet, Disksektoren,
E/A-Ports, SCSI-Devices ...
• Suchpfade für Klassen & Bibliotheksmodule.
• Navigation im Namensraum.
• Dateiverzeichnisse:
- Dateinamen auf Diskadressen abbilden,
- Aliases, Shortcuts und Decknamen,
- geschachtelte Unterverzeichnisse.
• Registry in Windows:
- hierarchische Datenbank,
- Schlüssel und Werte.
• Auffinden von Namen im Netz:
- Namen für Benutzer & Dienste,
- Maschinennamen.
• Namen für Objekte:
- Fenster und Dialogelemente,
- Ereignisobjekte,
- Com-Objekte ...
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
2.5 Fehlerbehandlung & Zugriffsschutz
• "Post Mortem" müssen die Betriebsmittel eines Programmes wieder freigegeben werden:
-
Hauptspeicher,
offene Dateien,
Peripheriegeräte,
Bildschirmfenster,
Warteschlangenpositionen ...
• Der Benutzer wünscht eine verständliche
Fehlermeldung:
- kein Hex-Dump,
- kein blauer Bildschirm,
- keine allgemeine Schutzverletzung.
 Schutz:
-
vor unabsichtlicher Beschädigung des System,
vor böswilligen Einbruchsversuchen,
vor Monopolisierung des Systems,
vor Fehlern im Betriebssystem,
vor Hardwaredefekten.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
2.6
Konfigurierung & Startup
• Konfigurierungsbedarf für:
-
Benutzerrechte,
Festplatteneinteilung,
Netzwerkportokolle,
Bildschirmauflösung,
Bios-Einstellungen ...
• Automatische Erkennung von Hardware.
- Plug & Play vs. Plug & Work,
- für Geräte am PCI Bus,
- für ISA Geräte?
• Initialisierung:
- der Hardwarekomponenten,
- des Betriebssystemkernes,
- der Serverdienste.
 Ausschalten des Systems:
-
Dokumente sichern lassen,
Dateipuffer auf Disk schreiben,
Druckerwarteschlange schliessen,
Abmelden am Netz,
Services beenden,
Power down !
 Schlafmodus einleiten.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
3. Betriebssystem-Klassifizierung
3.1
Historische Klassifizierung:
 Monoprogramm-Systeme:
- keine zeitliche Überlappung der Programme,
- einfache Betriebssystemstruktur.
 Multiprogrammierung:
- Mehrere Programme gleichzeitig im Speicher.
- Wartezeiten eines Programmes werden durch
andere Programme genützt.
- Stapelverarbeitung (Batch)
- Teilhaberbetrieb (Time-Sharing).
- Evtl. Multitasking innerhalb eines Programmes.
- Konflikte bei der Betriebsmittelzuteilung
vermeiden.
 Mehrprozessorsysteme
- Mehrere Prozessoren laufen gleichzeitig.
- Arbeiten an verschiedenen Programmen oder an
Unteraufgaben eines einzelnen Programmes
(parallele Tasks/Prozesse).
- Meist gemeinsame Speicherbereiche.
- Synchronisation der Tasks wichtig.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
 Umschalten
des
Programmen:
Prozessors
zwischen
HW
Register
B
Scheduler
E
D
C
B
A
Programme
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
3.2
Programmierschnittstelle
Wie werden die Dienste des Betriebssystems
durch das Programm in Anspruch genommen?
• Betriebsystemaufruf:
Hauptspeicher
Stack
Register
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
3.2.1 Registerbezogen:
• Die Systemdokumentation nennt eine Menge
von Aufrufen, die mit vorgegebener Registerbelegung angesprungen werden müssen.
• Die Resultatwerte werden ebenfalls in
Registern mitgeteilt.
• Eine besondere Instruktion schaltet dann ins
Betriebssystem um:
- in MS-DOS & Windows mit SWI 21,
- in MVS mit Supervisor Call (SVC xx),
- im Macintosh mit A-Trap.
3.2.2 Messages:
• Die Dokumentation nennt für die Systemaufrufe das Format einer Datenstruktur im
Speicher, welche dem Datenaustausch mit
dem Betriebssystem dient.
• Burroughs B1700 verwendet eine Communicate-Instruktion, die einen Message
Pointer an vorgegebener Stelle übergibt.
• Verteilte Betriebssysteme senden Messages
über das Netz.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
3.2.3 Sprachbezogen:
• Die Dokumentation beschreibt Prozedurschnittstellen zum Betriebssystem.
• Übergeben werden Datenstrukturen und
Skalare auf dem Stack.
• Jeweils sprachbezogene Prozedurbeschr.
• Oft ruft das Programm dann sogenannte GlueRoutinen, welche Parameter umkopieren.
3.2.4 Objektorientiert;
• Eine Sammlung von Klassen mit zugehörigen
Methoden werden zur Verfügung gestellt.
• Die Klassen beschreiben Objekte, die von
System verwaltet werden müssen.
• Die Klassen sind auch durch die Anwenderprogramme erweiterbar.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
3.3
Vernetzungmöglichkeit
3.3.1 Keine Datenübertragung im
Betriebssystem
 Nur Anwenderprogramme netzwerkfähig.
• Einzelne Anwenderprogramme kommunizieren ohne Betriebssystemunterstützung:
-
FTP-Dateitransfer,
Kermit Dateiübertragung,
Telnet Terminalemulatoren,
V.24 Terminalemulatoren ...
 Evtl. inkompatible Protokolle
beteiligten Betriebssystemen:
Progr-X
Progr-Y
OS-X
OS-Y
in
den

• Gemeinsame Nutzung der Kommunikations–
kanäle ist schwierig.
• Früher einzige Möglichkeit in einer hetero–
genen Betriebsystemumgebung.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
3.3.2 File Server:
• Dateien auf dem Server erscheinen wie lokale
Dateien.
• Ferne Dateien auf besonderen Volumes.
• Klientendateien sind über das Netz nicht
zugänglich.
• Normalerweise Zugang über Dateinamen.
• Im einfachsten Fall physikalischer Zugang
zum fernen Disksektor.
z.B. File Server
Klienten
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
3.3.3 Verteiltes Dateisystem:
Station 3
Station 1
Station 2
• Jede Station kann Server sein.
• Flexible Zuordnung einzelner Dateien.
• Oft Probleme bei Update-Situationen.
3.3.4 Verteiltes Betriebssystem:
• Verteilung der Prozesse im Netz.
• Im Prinzip Verteilung aller Betriebsmittel auf
die Stationen im Netz.
• Netzweite Konsistenz der Objekte.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
3.4
Beispiele von Betriebssystemen
VMS:
•
•
•
•
•
Für Mainframe-Rechner von Digital Equipment.
Virtueller Speicher.
Hochentwickeltes Dateisystem.
Vernetzung über DecNet.
flexible Anbindung von Unix & Macintosh
Systemen.
MVS:
•
•
•
•
•
•
Für IBM Mainframes.
Ungeeignet für Arbeitsplatzrechner.
Betreung nur durch den Spezialisten.
Variantenreiche Jobkontrollsprache.
Vernetzung über SNA.
SAA als Bedienerempfehlung.
Windows 98 & Windows NT:
•
•
•
•
•
•
•
•
•
Bill Gates, Microsoft Corp.
Betriebssystem für IBM-PCs und dgl.
Rechner der 80xxx-Familie.
C++ Schnittstelle zum Betriebssystem.
Mehrprogrammbetrieb.
32 Bit Adressen.
Vernetzung TCP/IP, Netbeui & Novell Net.
Windows 98 für Klientenstationen.
Windows NT für Workstations und Server.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Unix:
•
•
•
•
•
•
•
•
•
•
Portables Betriebssystem für Workstations.
Auch für Mainframe-Rechner.
Ursprünglich für Pdp11.
Geschrieben in der Sprache C.
Allgemeines Prozesskonzept.
Viele Dienstprogramme, E-Mail.
Standardisierungsgremien.
X-Window als graphische Bedieneroberfläche.
Vernetzung über NFS/TCP/IP ...
Linux: Public Domain Unix (GPL).
OS/2 (IBM):
•
•
•
•
•
•
gedacht als Nachfolger von MS-DOS.
für Rechner der 80xx-Familie.
Mehrprogrammbetrieb.
32 Bit Adressen.
LAN-Manager.
Presentation Manager.
Macintosh OS:
•
•
•
•
•
Xerox-Star -> Lisa -> Macintosh.
halbwegs objektorientiert.
für Arbeitsplatzrechner mit PowerPC CPUs.
für Grafik & DTP.
Erste marktgängige Bedieneroberfläche mit
Desktop Symbolik.
• OS & Toolbox im ROM.
• Vernetzung über AppleTalk & TCP/IP.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Oberon System:
•
•
•
•
•
Wirth & Gutknecht, ETHZ.
kleines Betriebssystem für WS.
Objektorientiert mit Oberon als Sprache.
Automatische Freispeichersammlung.
Single Tasking.
PenPoint:
•
•
•
•
•
•
GO-Corporation
Für Notizbuchrechner mit Griffel.
Notizbuchmetapher.
Handschrifteingabe & Gestures.
Objektorientierte Architektur.
Speicherresidentes Dateisystem.
Plurix:
•
•
•
•
•
experimentelles verteiltes BS aus Ulm.
PC-Cluster mit DSM-Speicher.
Programmierung in Java.
Schnellstart-Option.
Code < 200 KByte.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
4. Perspektive eines Pascal-Progr.
4.1
Einbettung im Hauptspeicher
Codesegmente
Globale Variablen
Keller
Heap
 Beim Laden des Programmes wird festgelegt,
welcher Hauptspeicherbereich dem Programm
zur Verfügung gestellt wird.
 Je nachdem ein grösserer oder kleinerer Heap.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
4.2
Programmcode:
• Die Anweisungen des Programmes liegen als
Codesegmente im Speicher.
• Prozeduren als Codesegmente.
• Die Prozeduren liefern eine natürliche
Segmentierung der Instruktionen.
• Der Programmcode wird nicht verändert.
4.3
•
•
•
•
•
•
Laufzeitkeller (Stack):
Keller für Prozeduraktivierungen.
Statische und dynamische Verkettung.
Direkte und indirekte Rekursion.
Globale Variable oft auch unten im Keller.
Systemaufrufe über den Keller.
Globale Variablen auf Ebene 0.
4.4
Heap:
• Für dynamische Variablen, die nicht an die
Lebensdauer von Prozeduren gebunden sind.
• Für "manuell" aufzubauende D´strukturen.
• Für a priori unbestimmte Datenvolumina.
• Oft als zweiter Keller organisiert.
• Kollisionstest mit Stack zur Laufzeit.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
4.5 Standardprozeduren & Bibliotheken:
•
•
•
•
Systemunabhängig.
Mathematische Funktionen.
Hilfsfunktionen (odd, succ, ...).
E/A Funktionen, z.B.:
 Writeln( txDatei, intWert: len);
xdatei
zahl
len
Filekontrollblock & dergl.
_writeln-Aufruf
-
4.6
•
•
•
•
•
Dateisystem:
Rudimentäre Organisation der Dateinamen.
Reset, Rewrite, Get, Put.
Textdateien mit Zeilenstruktur.
Record-Dateien.
Keine höheren Zugriffsverfahren.
4.7 Bildschirm:
•
•
•
•
Keine Grafik etc.
Standard-Input (& Output).
Pseudo-Textdatei mit Zeilenstruktur.
Keine standardisierten Steuersequenzen.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
5. Betriebssystemorganisation
5.1
Monolithisch
Anwendungen
Dispatcher
OS - Routinen
Hardware
• Sammlung von Routinen, ohne Hierarchie,
Kapselung und Schichtung.
• Folgen von Änderungen und Erweiterungen
sind schwer abzuschätzen.
• Für kleine Systeme, z.B. MS-DOS.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
5.2
Geschichtet
Anwendungen
Dispatcher
OS - Routinen
Treiber
Hardware
• Verschiedene Abstraktionsebenen bzw.
Schnittstellen:
-
Programmierschnittstelle für Anwendung,
"Service-Provision",
Treiberschnittstelle,
Hardwareschnittstellen.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• Auswechselbar sind unter Umständen:
-
Betriebssystemkern: Releasewechsel ...
CPU-Generation: Intel8086 ... Pentium III ...
Hauptplatine:
Bios, Chipsatz, Busse
Prozessortyp: Intel x86, Sun-Sparc, Power PC,
Protokolle: TCP/IP, IPX, AppleTalk
Geräte: Festplatte, Drucker, Grafikkarte ...
• SW-Schichtenmodell:
-
Anwendungsprogramm,
Laufzeitbibliothek,
Pseudotreiber,
OS-Dienste,
Gerätetreiber.
• HW-Schichtenmodell:
-
Busschnittstelle(PCI, EISA, ISA),
Adapterkarte (Grafik, Netz, Sound, ...) ,
Peripheriebus (SCSI, IEEE488, USB, FireWire),
Firmware (z.B. in SCSI-Platte),
elektromechanisches Gerät.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
5.2.1 Beispiel: Oberon System - geschichtet
• Wirth & Gutknecht, 1992
System
Edit
TextFrames
Printer
Net
Backup
SCC
Diskette
MenuViewers
Oberon
Viewers
Texts
Modules
Fonts
Reals
Files
Display
FileDir
Input
Treiber
Kernel
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
5.3 Mikrokern
Anwendungen
OS-Dienste
Mikrokern
Treiber
Hardware
 Zuverlässiger Mikrokern, etwa für:
- Nachrichtenvermittlung & Prozessumschaltung,
- Speicherverwaltung & Security ...
 Dienste im Adressraum der Anwendung:
- Bedieneroberfläche,
- Dateiverwaltungen,
- Vernetzung ...
 Beispiel: Mach
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
5.4
Client / Server
Anw.
Services
Executive
Kern
HAL
Treiber
Hardware
• Zwanglose Erweiterung auf verteiltes System.
• Keine Privilegien für Dienste im User-Mode.
• Validierung der Aufrufsparameter zum Dienst im
Executive:
- gültige Handles,
- ausreichende Zugriffsrechte,
- Prozesspriorität.
 Beispiel: Windows NT
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
5.5
Objektorientiert
Objekte
Methoden
Resources
Hardware
• Abkehr vom Prozessbegriff.
• Daten-Objekte besitzen Resource-Objekte und
rufen deren Methoden.
• Bündelung von Methoden in Klassen.
• "Daten-Objekte" seien in einem Anwendungsprogram programmiert.
• "Resource-Objekte" im Betriebssystem.
• "Familien" von Resource-Objekten, etwa
Zeichensätze oder Devices.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
5.6
"Executive" in Windows NT
 Dienste im sicheren Teil des Systems.
Virtual
memory
LPC
Process
Manager
Security
Monitor
Objekt
Manager
Kernel Mode
E/A
- Dateien
- Cache
- Drivers
- Network
Kern
Hardware Abstraktion
 Security Monitor kooperiert mit Security-SS.
 Object Manager verwaltet OS-Resourcen.
 Prozess Manager für Prozesse & Threads.
 "Local Procedure Calls" für Aufrufe über
getrennte Adressräume hinweg.
 VM für Adressräume und Paging.
 Direkte E/A aus Performance-Gründen.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
5.7
Subsysteme in Windows NT
User Mode
Win32
Klient
Win32
Klient
MS-DOS
Klient
Win32
WoW
Klient
Klient
OS/2
Klient
Posix
Klient
Kernel Mode
LPCs
Virtuelle
DOS Masch.
OS/2
Subsystem
Posix
Subsystem
User Mode
Win32
Subsystem
• Kommunikation mit Subsystemen über den
LPC Manager im Executive.
• Kommunikation zw. Subsystemen über LPC.
• Wechsel zum Kernel-Modus via INT 2e .
• Win32-Subsystem:
- DLLs beim Klienten: User32, Kernel32, GDI32,
- LPC zum W32-Subsystem-Prozess CSRSS.exe.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
5.8 Beispielprogramm OS-Aufruf in NT
DWORD CreateEventDirect(
HANDLE *SemaphoreHandle,
DWORD
DesiredAccess,
UNICODE *ObjectName,
ULONG
ManualReset,
ULONG
InitialState
{ __asm { mov eax, 0x15;
lea edx,[ebp+0x8];
int 0x2e;
}
}
// result handle
// access bits
// name of ev-object
// after use
// initial value)
//# of NtCreateSemapho.
// parameters (skip 2 W)
// _KiSystemService
// end assembly, end CE
void main()
{ HANDLE hEvt;
// the desired handle
DWORD
status;
// status code
DWORD
acc = EVENT_ALL_ACCESS;
// create an event-object via software-interrupt INT 2e :
status = CreateEventDirect(&hEvt, acc, NULL, 1, 1);
if (status!=STATUS_SUCCESS) printf(" error \n");
else printf("success, handle: %x\n", hEvt);
// or create an event-object via kernel32.dll :
hEvt = CreateEventW(NULL, 1, 1, NULL); // W=wide
if (hEvt==NULL) printf(" error \n");
else
printf("success, handle: %x\n", hEvt);
}
// kernel-mode unicode strings
typedef struct _UNICODE_STRING {
USHORT Length;
// used length
USHORT MaximumLength; // max. length of buffer
PWSTR Buffer;
// WCHAR buffer
} UNICODE;
typedef UNICODE * PUNICODE_STRING ;
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
 Im NtOSkernel.exe findet sich eine Funktion
mit einer Signatur wie CreateEventDirect :
NTSTATUS NtCreateSemaphore(
OUT
HANDLE
*SemaphoreHandle,
IN
ACCESS_MASK DesiredAccess,
IN
PUNICODE_STRING ObjectName,
IN
ULONG
ManualReset,
IN
ULONG
InitialState
);
 Diese Funktion NtCreateSemaphore wird
indirekt gerufen:
- über den LPC Manager.
- da in einem anderen Adressraum,
- über einen Software-Interrupt (int 0x2e),
 CreateEventDirect präpariert die Parameter
auf dem User-Stack:
- zusätzlicher Parameter: Funktionsnummer,
- zusätzlicher Parameter: Zeiger auf Stackframe,
 LPC kopiert diese dann in den Kernel-Stack.
 Alternativ wird derselbe Effekt erreicht durch
Aufruf von CreateEventW in Kernel32.dll.
Die DLL übernimmt die Vorbereitung der
Parameter und ist komfortabler zu benutzen.
 Es wird hier nur der NT-Kern, aber kein
Server-Prozess gerufen.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
5.9
LPC Mechanismus
• Prozeduraufruf über Adressraumgrenzen
hinweg wird auf eine Nachrichtenübertragung
abgebildet.
• LPC Varianten:
a) Nachricht an Port-Objekt im Server,
b) Zeiger auf gemeinsamen Speicher senden,
c) "Quick LPC".
 Nachrichtentransport zum Port-Objekt im
Server-Subsystem (Fall a,b):
OpenConnection
Connection
Port
connected
Server
Subsystem
Klient
service reply
service request
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
5.9.1 Quick LPC:
• Komponenten, jeweils pro Klient:
- 64 KB gemeinsamer Speicher,
- eigener Server-Thread,
- ein Event-Paar.
 Executive signalisiert die Events.
 Bewertung:
- schnelle Signalisierung,
- Speicheroverhead für die Threads.
Klient
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Server
Subsystem
Fehler! Textmarke nicht definiert.
5.10 Virtuelle DOS Maschinen
• Eine Virtuelle Dos-Maschine (VDM) bildet eine
reale DOS-Maschine nach:
-
E/A-Port Zugriffe abfangen & emulieren,
Virtuelle Gerätetreiber in der VDM,
E/A-Unterbrechungen weiterreichen,
640 KByte für DOS-Programme,
16 MByte Adressraum für Win16 Programme.
• Pro MS-DOS Programm wird ein NTVDM
Prozess gestartet:
• Für die 16-Bit Windows-Umgebung eine weitere
NTVDM:
- WoW = "Windows on Windows" (16 on 32),
- alle Win16-Thread in einer NTVDM,
- kooperatives Multitasking ...
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Koexistenz von 16- & 32-Bit Applikationen
16-Bit16-Bit
16-Bit
KlientKlient
Klient
Win32
Klient
Krnl386/Gdi/User.exe
Win32
Klient
Thunk-Layer
Kernel32 / Gdi32 / User32 / NTdll / Advapi .dll
Kernel Mode / native NT-Funktionen
 Thunk-Layer besorgt Konvertierungen:
-
Segment:Offset nach Linear 32-Bit Adresse,
(DX,AX)-Register nach EAX-Register,
16-Bit Stack nach 32-Bit Stack,
und umgekehrt,
etc. ...
 Teile der 32-Bit Funktionen sind noch nicht
implementiert und werden als 16-Bit gerufen.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
5.11 Bibliotheken
• Als Arbeitserleichterung für Programmierer.
• Programmierschnittstelle zum System (API).
• Beispiele in Windows:
- "Win32"
- Open GL:
- DirectX:
- ISAPI:
- MAPI:
- TAPI:
- SAPI:
- Pen:
- OLE:
- RPC:
- MIDL:
...
Betriebssystemdienste,
Open Graphics Language,
Multimedia & Spiele,
Internet Service API,
Windows Messaging,
Telephon API,
Sprachverarbeitung etc.,
Stiftbasierte Bedienung,
Open Linking and Embedding,
Remote Procedure Call,
MS Interface Definition Language
 Oft jeweils Versionen für Windows NT und
Windows 95/98 vorhanden:
- gleiche Signatur,
- andere Schnittstelle zum Kern.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
5.11.1 Aufruf einer Biblioheksfunktion
 Konsolenapplikation in C:
#include "windows.h"
int main(int argcount, char* argvec[]){
return MessageBoxA(
NULL, "Boxtext(s)", "Boxtitel", MB_OK);
}
 Zeigt eine MessageBox (ASCII-Variante):
QuickTime™ and a
Photo - JPEG decompressor
are needed to see this picture.
 #include "windows.h":
- includiert rekursiv weitere *.h-Dateien,
- für Signaturen und Typeninformation,
- für "MessageBoxA", "NULL" und "MB-OK" ...
 Compiler erzeugt ein Objektmodul mit einer
Importtabelle für den Linker, u.a.:
- .... External ... __imp__MessageBoxA@16 ...
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
5.11.2 Erzeugungsschritte eines CProgrammes:
*.c
Compiler
*.h
*.obj
Linker
*.lib
*.exe
Lader
*.dll
run
 Dateierweiterungen für Windows.
 Static Library (*.LIB):
- Bindung durch Linkage Editor,
 Dynamic Link Library (*.DLL):
- Bindung zum Ladezeitpunkt,
- Bindung zur Laufzeit.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
5.11.3 Inspektion von Modulen mit Dumpbin
 Dumpbin analysiert *.obj, *.lib, *.dll, *.exe.
 Unsere *.exe Datei enthält eine Importtabelle
für benötigte Bibliotheken, diese werden vom
Lader eingebunden.
C:\>dumpbin linkstatic.exe /imports
... USER32.dll
42428C Import Addr Table
42414C Import Name Table
...
1BE
MessageBoxA
KERNEL32.dll
42417C Import Addr Table
42403C Import Name Table
...
19D
19B
CA
174
7D
51
152
2DF
1AD
1F5
13E
1C2
1B0
124
29E
Betriebssysteme 2000, PS, VS-Informatik, Ulm
HeapDestroy
HeapCreate
GetCommandLineA
GetVersion
ExitProcess
DebugBreak
GetStdHandle
WriteFile
InterlockedDecrement
OutputDebugStringA
GetProcAddress
LoadLibraryA
InterlockedIncrement
GetModuleFileNameA
TerminateProcess ...
Fehler! Textmarke nicht definiert.
5.11.4 Laden einer DLL zur Laufzeit
 = Dynamisches Linken:
#include "windows.h"
int main(int argc, char* argv[]){
HANDLE hLib;
FARPROC hBxProc;
hLib
= LoadLibrary("User32.dll");
hBxProc = GetProcAddress( hLib, "MessageBoxA");
return hBxProc(
NULL, "Boxtext(d)", "Boxtitel", MB_OK);
}
 Vorgehen in 3 Schritten:
- Laden der DLL (User32.dll),
- Suchen der Funktion (MessageBoxA),
- Rufen der Funktion.
 "Deferred Loading":
- für schnelleren Programmstart,
- für selten benötigte Module,
- für zukünftige DLLs.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
5.11.5 Gemeinsame Bibliotheksmodule
 Apple Shared Library Manager für MacOS.
 Dynamic Link Libraries für Windows.
 Laden beim Programmstart oder zur Laufzeit.
 LoadLibrary():
- DLL laden falls erster Benutzer,
- Nutzungszähler der DLL erhöhen,
- Initialisierung/Mitteilung an DLL.
 FreeLibrary():
- DLL freigeben.
 GetProcAddress():
- Zeiger auf Einsprung zurückliefern,
- Signatur der Prozedur beachten,
- in C++ Typecast einfügen.
 DLLs im Win32-Subsystem:
- privates Datensegment pro Prozess oder Thread,
- gemeinsame (shared) Daten auf Wunsch.
- Gemeinsamer Code im gem. Adressteil,
 In Posix eine Gesamtkopie pro Adressraum.
 Bewertung:
+ potentielle Speicherersparnis,
+ kürzere Ladezeiten, falls schon vorhanden,
– unwirksam bei koexistierenden Versionen,
– höherer Verwaltungsaufwand.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
5.12 Windows Miniport Treiber
• Evtl. ein Treiber für NT und Windows 95/98.
• Soll alle Hardwareabhängigkeiten eines
Gerätetyps kapseln:
-
Netzwerkadapter,
WAN-Adapter,
Videoadapter,
SCSI Disk ...
• Hardwareunabhängige Funktionen finden sich
in einer darüberliegenden Schicht.
• Zum Beispiel NT-Netzarchitektur:
File
Naming
MUP
Network
Redirectors
NT
MPR
NetWare
NFS
TDI - Transport Driver Interface
Transport
Protocols
NetBEUI
TCP/IP
NWLink
NDIS - Network Device Interface Specification
Miniport
Drivers
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Ethernet
Token Ring
• • •
Fehler! Textmarke nicht definiert.
5.12.1 Miniport-Funktionen für
Netzwerkadapter:
• Werden von NDIS-Treiber gerufen.
• Datentransfer:
-
MiniportSend
MiniportSendPackets
MiniportTransferData
MiniportReceivePacket
• Interrupt-Behandlung:
-
MiniportISR (sofort)
MiniportHandleInterrupt (gelegentlich)
MiniportDisableInterrupt
MiniportEnableInterrupt
• Treiber- und Adaptersteuerung:
-
DriverEntry
MiniportHalt
MiniportReset
MiniportInitialize
MiniportReconfigure
MiniportSetInformation
MiniportCheckForHang
MiniportQueryInformation
MiniportAllocateMemoryComplete
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
5.12.2 Miniport-Funktionen für VideoAdapter:
• Werden z.B. von DirectX gerufen.
• Datentransfer:
- HwVidStartIO,
- SvgaHwIoPortXxx.
• Interrupt-Behandlung & Polling:
- HwVidInterrupt,
- HwVidSynchronizeExecutionCallback,
- HwVidTimer.
• Treiber- und Adaptersteuerung:
-
DriverEntry,
HwVidInitialize,
HwVidResetHw,
HwVidFindAdapter,
HwVidQueryDeviceCallback,
HwVidQueryNamedValueCallback.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
5.12.3 Miniport-Funktionen für SCSIAdapter:
• Wird vom E/A Manager gerufen.
• Datentransfer:
- HwScsiStartIo,
- HwScsiDmaStarted.
• Interrupt-Behandlung & Polling:
-
HwScsiInterrupt,
HwScsiEnableInterruptsCallback,
HwScsiDisableInterruptsCallback,
HwScsiTimer .
• Treiber- und Adaptersteuerung:
-
DriverEntry,
HwScsiInitialize,
HwScsiResetBus,
HwScsiFindAdapter,
HwScsiAdapterState.
 Abfragebetrieb mit Timer möglich (polled).
 Erweiterungen für Magnetbandgeräte.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
6. Interrupts
 Ein Programm wird unterbrochen zugunsten
einer Aufgabe mit höherer Priorität:
 Der Zustand des unterbrochenen Programmes
wird aufgezeichnet und nach Abschluß der
Unterbrechung wiederhergestellt.
 Mit der Ausführung des unterbrochenen
Programmes wird später unmittelbar nach der
Unterbrechungstelle fortgefahren:
Anwenderprogramm
Unterbrechung
Device
Return
Flags
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• Lesen & Schreiben aus externen
Gerätepuffern:
Tastatur, Serielle Datenleitung,
Festplattenkontroller,
Netzwerkkarte,
Strahlrücklauf ...
 Behandlung von internen Fehlersituationen:
Allgemeine Speicherschutzverletzung,
Ungültige Maschineninstruktion,
Paritätsfehler im Hauptspeicher,
Arithmetische Fehlersituation,
Ausgelagerte Speicherseite,
Debugging ...
 Explizite Anforderung von DOS-Diensten:
Assemblerinstruktion INT <intcode>,
DOS-Dienste über INT 21h,
 BIOS-Dienste anfordern:
-
INT
INT
INT
INT
INT
INT
INT
INT
10h
11h
12h
13h
14h
16h
17h
1Ah
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Videokarte
Konfiguration feststellen
RAM-Speichergrösse feststellen
Disketten & Festplatten steuern
Serielle Schnittstelle steuern
Tastatur steuern
Parallelschnittstelle
Uhrzeit, PCI & PCMCIA(PC)
Fehler! Textmarke nicht definiert.
6.1
Maskieren von Interrupts
• Eintrag in Interrupttab. nicht rekursiv rufen!
• Beispiel: Datenpakete vom Netz:
Zerstückelte Nachricht
Paket#1
Rest #1
Paket#2
Interrupt 1
Interrupt 2
 Zu Beginn einer Interrupt-Sequenz sind die
Interrupts automatisch ausgeschlossen.
 Anschliessend wird der Interrupt bestätigt und
nachfolgende Interrupts kommen durch:
- IRET oder POPF beim Rücksprung der Routine,
- EOI-Befehl an den Interrupt-Kontroller.
 Interrupts im Prozessor expizit maskieren:
- CLI löscht Interrupt-Enable Bit im Statusreg.,
- STI setzt das Bit wieder.
 Möglichkeiten der Interruptmaskierung:
- Enable-Bit im CPU-Statusregister,
- Mask-Register im 8259A-Kontroller,
- auch NMI kann maskiert werden an Port $70.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
6.2
Interrupttabelle
• Externe und interne Unterbrechungen wählen
jeweils einen aus 256 Tabelleneinträgen aus:
NMI
255
Slave
Master
8259A
INTR
INTA
Vektor#
CPU
Interner
Interrupt
4* IRQ-Pin#
+ programmierbarer
Offset
IDTR
0
• Index in dieTabelle:
- für interne U. durch CPU-Hardware,
- für externe U. durch Interrupt-Kontroller,
- Ausnahme: NMI direkt auf Eintrag #2.
• Startadresse der Interrupttabelle:
- Real-Mode:
- Protected M.:
ab Speicherstelle 0,
via IDTR-Register.
 Maximal 256 Einträge:
- Real-Mode: jeweils 4 Byte als Segment:Offset,
- Protected: 8 Byte Interrupt-Deskriporen.
 Master bei Port[$20,$21].
 Slave bei Port [$a0,$a1].
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
6.3
Externe Unterbrechungen
• Externe Interrupts von der Hauptplatine:
-
IRQ-0: Timer-Interrupt,
IRQ-1: Tastatur-Interrupt,
IRQ-2: sekundärer Interrupt-Kontroller,
IRQ-8: Echtzeit-Uhr (RTC),
IRQ-13: Koprozessor.
• Externe Interupts vom ISA-Bus:
- IRQ-[3 .. 7, 9 .. 12, 14,15],
- IRQ-[3, 4, 5] für COM1, COM2, LPT1 evtl. im
CMOS-Setup anders zuordnen,
- für Disks, Netzwerkadapter, Soundkarten, SCSIKontroller, Videokarten, Steuerungen, ...
 Interrupts vom PCI-Bus werden durch die
PCI-Bridge auf ISA-Interrupts abgebildet.
 PCI erlaubt "Shared Interrupts".
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
6.4
Interruptkontroller 8259

In-Service Register
Steuerlogik
Interupt-Mask Register
CPU-Bus
Prioritätsgeber
Interrupt-Request Register
Kaskadierungsbus
(CAS0..2)
IRQ0 .. IRQ7
 Nimmt über den Bus IRQs entgegen.
 Veranlasst über den Stift INTR (InteruptRequest) die CPU, einen Interrupt-Zyklus
auszuführen.
 Interrupt Mask Register unterdrückt Interupts.
 Interrupt Request Register speichert pendente
Interrupts.
 Interrupt Service Register enthält Interrupt mit
der höchsten Priorität.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
6.4.1 Kaskadierung:
 Ein Master-Kontroller kann bis zu 8 Slaves
steuern - über CAS0..CAS2.
 Im PC-AT Slave auf IRQ-2.
 In grösseren Systemen evtl.:
- rotierende Priorität,
- automatisches "End-Of-Interrupt",
- anstelle eines expiziten Zurücksetzens.
6.4.2 Verschiedene Einstellungsoptionen:
 PC-Hardwarebuch (Messmer) als Referenz,
 mithilfe von Steuerwörtern (ICWn, OCWn),
 Master oder Slave,
 Abfragemodus,
 Vektoroffset (Default $08 und $70).
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
6.5
Programmbeispiel
 Auslesen der Register im 8953:
-
Master & Slave,
Interrupt Mask Register,
Interrupt Request Register,
Interupt Service Register.
 Maskieren der Tastatur-Unterbrechung.
 Registerzustand in Warteschleife prüfen:
- nur IRQ2 maskieren,
- COM1 & COM2 als "Restrisiko"?
- Taste drücken und anstehenden Interrupt
beobachten.
6.5.1 Ausgabe für InterruptStatus:
c:\InterruptStatus.exe
Master => IMR: 00011000 IRR: 00000000 ISR: 00000000
Slave => IMR: 00000000 IRR: 00000000 ISR: 00000000
Mloop => IMR: 00000010 IRR: 00000000 ISR: 00000000
Mloop => IMR: 00000010 IRR: 00000000 ISR: 00000000
Mloop => IMR: 00000010 IRR: 00000010 ISR: 00000000
Mloop => IMR: 00000010 IRR: 00000010 ISR: 00000000
C:\TP>
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
6.5.2 Programmtext:
Program InterruptStatus; uses Crt;
var oldmask, delay, shft: longint;
procedure writePortBits( name: string; bits: integer );
begin write( name, ': ' );
for shft:=7 downto 0 do
if odd( bits shr shft) then write('1')else write('0')
end;
procedure StatusRprt( ChipName: string; portNo: integer);
begin writeln; write( ChipName, '=> ' );
writePortBits( ' IMR', port[ portNo+1]);
port[portNo]:= $A;
(* readIRR *)
writePortBits( ' IRR', port[portNo]);
port[portNo]:= $B;
(* readISR *)
writePortBits( ' ISR', port[portNo])
end;
begin
StatusRprt( 'Master ', $20 );
StatusRprt( 'Slave ', $a0 );
oldmask := port[ $21];
port[ $21 ] := 2 ; (* mask IRQ2, keyboard *)
for delay:=0 to 1000000 do
if delay mod 50000=0 then StatusRprt('Mloop',$20);
port[ $21] := oldmask ;
end .
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
6.6 Verketten mit Interrupt-Routine
• Eine neue Routine wird eingetragen und ruft
anschliessend die bisherige Routine auf.
• Interrupt-Return (IRET):
- Flags vom Stack herunterholen,
- und ins Flag-Register laden,
- Rücksprungadresse holen.
 Die bisherige Routine erwartet ein Flagwort
auf dem Stack:
- Assemblereinschub "asm pushf end" lädt dieses.
 Das Schlüsselwort "Interrupt" sorgt für ein
"IRET" am Ende der eigenen Prozedur.
Interrupttabelle
Flags
:
Flags
neue Int.routine
IRET
Betriebssysteme 2000, PS, VS-Informatik, Ulm
alte Int.routine
IRET
Fehler! Textmarke nicht definiert.
6.6.1 Programmbeispiel "TimerChain.pas"
• Zählt die Systemuhr mit.
• Prozedurvariable für alten Handler.
• Ausgabe: ca. 1 Punkt pro Sekunde:
......... Done
(*$F+ Force far jumps *)
program TimerChain;
uses Crt, Dos;
var oldHandler : procedure;
ticks
: integer;
procedure MyHandler; Interrupt;
begin ticks := ticks + 1;
if ( ticks mod 18 )=0 then write( ' .' );
asm pushf end; (* simulate flags on stack *)
oldHandler; (* chain to old Handler *)
end;
begin ticks:=0;
GetIntVec( 8 , addr(oldHandler) );
SetIntVec( 8 , addr(MyHandler) );
repeat until ticks=182;
SetIntVec( 8 , addr(oldHandler) );
writeln( 'Done' );
end.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
6.7
Timer-Interrupt
• Alte Int.Routine aufbewahren & ersetzen.
• Prozeduradressen übergeben.
• Interrupt-Kontroller explizit mit EOI auf
Port[$20] zurücksetzen.
(*$F+ Force far jumps *)
program MilliTimer; (* provides a Millisecond timer *)
uses Crt, Dos;
const milliSec = 4772720 div 4000;
var
oldHandler : procedure;
ticks
: real;
procedure SetTimer( Handler: pointer; period: integer);
begin Port[$43] := $34; (* select timer 0, function 2 *)
Port[$40] := period mod 256; (* Low byte *)
Port[$40] := period div 256; (* High byte *)
SetIntVec( 8 , Handler);
end;
procedure MyHandler; Interrupt;
begin ticks := ticks + 1;
port[$20] := $20; (* EOI to 8259 *)
end;
begin ticks:=0;
GetIntVec( 8 , addr( oldHandler ) );
SetTimer( addr( myHandler ), milliSec );
repeat until keypressed;
SetTimer( addr( oldHandler), 0 (* is Maximum*) );
writeln( ticks/1000:8:3, ' sec' );
end.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7. Ereignisse
7.1
Ereigniskonzept
Ereignis

 = Zeitliche und räumliche Fixierung einer
Zustandsänderung
 Räumliche Fixierung erforderlich bei verteilten Systemen (Zeit in VS).
 Zustandsänderung eines Objektes:
-
Herunterfallen eines Groschens,
Explosion einer Sprengladung,
Gatterzustand umschalten,
Variable speichern,
Ein-/Ausgabe,
Interrupt ...
 Ein Ereignis ist eigentlich kein Objekt, wird
aber oft so behandelt.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7.2 Nachricht
Ereignis
Nachricht
= Fernwirkung eines Ereignisses
• Verursachen eines zweiten Ereignisses an einem anderen Ort und Zeitpunkt.
• Transportmechanismus:
-
elektromagnetische Welle,
molekulare Kräfte,
Gravitationsfeld,
Schallwellen ...
 Transport im Rechner:
• Datenpaket auf dem Bus oder im Netz,
• Prozedur- und Methodenaufruf,
• Signal (-> Informationstechnik) ...
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7.3
Objekte
• Allgemein:
- Träger von Zuständen und Attributen,
- Verhalten, Zustandwechsel & Methoden,
- Senden und Empfangen von Nachrichten.
 Objektorientierte Programmierung:
-
Klassen, Instanzen und Methoden,
Vererbung und Schnittstellen,
Modularisierung,
Polymorphie.
 NT-Kernel Objekte:
-
File change notification,
Waitable timers,
Console Input,
Semaphores,
Prozesse,
Threads,
Events,
Mutex,
Files.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7.4
Synchronisierung
 Grundproblem:
- Zu welchem Objekt gehört die Variable?
 Nichtdeterministische Zugriffe vermeiden:
 Erst ein Thema, bei Nebenläufigkeiten:
- durch E/A Geräte,
- durch Multiprozessoren,
- durch prozessorientierte Programme.
 Synchronisierung auf Objekte in NT:
- Vergabe eines temporären Zugriffsrechtes,
- vermeidet Inkonsistenzen.
 Signalisieren von Ereignissen ist einfacher als
Synchronisieren von Prozessen (->Kap. ~20):
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7.5
Signalisierung von Ereignissen
• Anwendung:
-
zur Anzeige einer Unterbrechung,
Fehler- & Ausnahmebehandlung,
Interaktion mit dem "Bediener",
Eingabe und Ausgabe,
zur Synchronisierung.
 zum Beispiel:
- Event erzeugen,
- Child Thread erzeugen,
- warten auf Signal vom Thread:
main
Child Thread
signal
wait
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Ereignis
Fehler! Textmarke nicht definiert.
7.5.1 Programmbeispiel "SignalThread.c":
 Ausgabe über Konsole:
QuickTime™ and a
Photo - JPEG decompressor
are needed to see this picture.
 Programmtext:
#include "stdio.h"
#include "windows.h"
#define nil NULL
DWORD garb;
DWORD loop = 500*1000*1000;
HANDLE
hEvent;
HANDLE
hChild;
DWORD WINAPI Child( LPVOID lpParm ) {
while (loop>0){
--loop;
};
printf("'Child' signalisiert:\n");
SetEvent(hEvent);
return 0;
}
int main(int argc, char* argv[]){
hEvent =CreateEvent( nil, 0, 0, nil );
// defaultSecurity, autoReset, nonsignalled, noname
hChild =CreateThread( nil, 8, &Child, &loop, 0, nil );
// defaultSecurity, stack, procAddr, tParam, noname
printf( "'main' wartet auf Signal.\n" );
result =WaitForSingleObject( hEvent, INFINITE );
printf( "Signal ist angekommen !\n\n" );
}
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7.6
Benutzereingaben
7.6.1 Eingabe-Messages
• Tastatur- und Mauseingaben werden dem Programm meist als Nachricht übergeben:
typedef struct tagMSG {
HWND hwnd;
//
UINT
message; //
WPARAM
wParam; //
LPARAM
lParam;
DWORD
time;
POINT
pt;
} MSG;
respektives Fenster
MessageCode
32 Bit in Win32
// 32 Bit
// Stempel
// Mauskoordinaten
 Tastatureingabe:
message: WM_KEYDOWN
wParam: Non-System Zeichen (ALT off)
lParam: Scan-Code, Repeat, Modifier ...
 Maus-Ereignisse:
- WM_LBUTTONDOWN,
- WM_MBUTTONDOWN,
- WM_RBUTTONDOWN,
 Ca. 1000 weitere WM... Nachrichten und
Unternachrichten.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7.6.2 Grobstruktur einer Benutzereingabe:
NewWClass
WindowFunkt.
NewWindow
GetMessage
Translate
DispatchMessage
MessageLoop in WinMain
 Programmstart über WinMain.
 Fensterklasse
Fenstererzeug.
als
Schablone
für
 Erzeugen von Fenstern mit gemeinsamer oder
separater Fensterfunktion.
 Nachrichten werden in einer zentralen
Nachrichtenschleife entgegengenommen.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7.6.3 Beispielprogramm
"SimpleWindow.c"
• Eintragen unserer Fensterklasse und erzeugen
eines Fensters:
#include <windows.h>
#define WINDOW_CLASS_NAME "SimpleWindowClass"
#define WINDOW_TITLE
"A SimpleWindow"
void NewWindowClass( HINSTANCE hProgram,
WNDPROC CallBackProc)
{ DWORD
res;
WNDCLASS wc;
wc.style
= CS_HREDRAW|CS_VREDRAW;
wc.lpfnWndProc
= CallBackProc;
wc.cbClsExtra = 0;
// class extra data
wc.cbWndExtra = 0;
// window extra data
wc.hInstance
= hProgram;
// associated prog
wc.hIcon
= NULL;
// when minimized
wc.hCursor
= LoadCursor( NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)( COLOR_WINDOW+1);
wc.lpszClassName = WINDOW_CLASS_NAME;
res
= RegisterClass( &wc );
}
void NewWindow(HINSTANCE hProgram)
{ HWND hWnd= CreateWindow(
WINDOW_CLASS_NAME,
WINDOW_TITLE,
WS_OVERLAPPEDWINDOW,
9, 9, 320, 200,// pos & size
NULL,
// no parent window
NULL,
// no menu
hProgram,
// associated prog.
NULL);
// no creation data
ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
}
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• Callback Funktion für unser Fenster und Entry
für das Programm:
LRESULT CALLBACK WndProc(
HWND hWnd, UINT msgCode,
WPARAM wPar, LPARAM lPar )
{ switch (msgCode)
{ case WM_DESTROY:
PostQuitMessage(0); return 0;
default:
return DefWindowProc( hWnd, wmCode, wPar,
lPar);
}
}
int WINAPI WinMain(
HINSTANCE
HINSTANCE
LPSTR
int
hProgram,
hPrevProg,
lpCmdLine,
nCmdShow)
{ MSG msg;
NewWindowClass( hProgram, (WNDPROC) WndProc );
NewWindow( hProgram );
while ( TRUE )
// message loop
{
if ( GetMessage( &msg, NULL, 0, 0) ==WM_QUIT )
return msg.wParam ; // result of WM_QUIT
TranslateMessage( &msg ); // translate Characters
DispatchMessage( &msg ); // invoke callbacks
}
}
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7.7
EventListener in Java
• Erleichtert Trennung zwischen verschiedenen
Bedienerschnittstellen und einer Verarbeitung.
• Anstelle der älteren Java High-Level Events.
• Anstelle des älteren HandleEvent().
7.7.1 Listener Szenarium:
• Events werden durch GUI-Elemente erzeugt.
• Events durch Listener-Klassen verarbeiten.
• Listener-Klassen mit Listener-Interface:
Listener Interface
EventErzeuger
EventListener
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7.7.2 "AWT-Event"-Objekte:
-
Event
PropertyChange-Event
AWT-Event
Item-Event
Text-Event
Action-Ev.
Adjustment
Component
Container
Window
Focus-Ev.
Paint-Ev.
Input
Key-Ev.
Mouse-Ev.
• z.B. Action-Event:
- erzeugt durch Menu, Button oder dergleichen,
- durch Listener-Klasse als Parameter akzeptiert,
- im Listener durch actionPerformed verarbeitet.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7.8
Listener Interface Methods
 ActionListener
 AdjustmentListener
 ComponentListener
 ContainerListener
 FocusListener
 ItemListener
 KeyListener
 MouseListener
 MouseMotionListener
 TextListener
 WindowListener
Betriebssysteme 2000, PS, VS-Informatik, Ulm
 actionPerformed
 adjustmentValueChanged
 componentHidden,
componentMoved,
componentResized,
componentShown
 componentAdded,
componentRemoved
 focusGained, focusLost
 itemStateChanged
 keyPressed,
keyReleased,
keyTyped
 mouseClicked,
mouseEntered,
mouseExited,
mousePressed,
mouseReleased
 mouseDragged,
mouseMoved
 textValueChanged
 windowActivate,
windowClosed,
windowClosing,
windowDeactivated,
windowDeiconified,
windowIconified,
windowOpened
Fehler! Textmarke nicht definiert.
7.8.1 ActionListener für MenuItems
 Name bzw. Befehl des Items ausgeben:
 Die Methode "actionPerformed" wird von der
GUI-Komponente aufgerufen:
import java.awt.*;
import java.awt.event.*;
class MenuAction implements ActionListener{
public void actionPerformed(ActionEvent aE){
System.out.println(aE.getActionCommand());
}
}
 Dieselbe Klasse könnte auch von anderen
GUI-Oberfläche aufgerufen werden, z.B.:
-
Button-GUI,
Choice-GUI,
CheckBox-GUI,
weitere Componenten-Klassen ...
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Kontroller-Klasse hierfür:
 Erzeugt hier beispielsweise ein Menu.
 Installiert vom Menu veranlasste Aktion als
ActionListener:
public class mController extends Frame{
MenuBar mB= new MenuBar();
Menu pullDown= new Menu("Farbe");
mController(){
setTitle("Menu Demo");
pullDown.add("gr¸n");
pullDown.add("blau");
pullDown.add("rot");
mB.add(pullDown);
setMenuBar(mB);
setSize(200,120);
setVisible(true);
}
public static void main(String[] s){
mController ctrl= new mController();
MenuAction mActn= new MenuAction();
ctrl.pullDown.addActionListener(mActn);
}
}
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7.8.2 Dialogelement & Listener verknüpfen
 Jeder Button schwärzt sein Target (Canvas).
 "reset" stellt alle Originalfarben wieder her.
 "reset" für alle gleichzeitig.
 Controller-View-Model Paradigma:
- Buttons als Controller (mit Fedback),
- Canvasses als sichtbares Modell ...
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7.8.3 Controller Klasse für Targets:
 Targets als
koppeln.
ActionListener
an
Buttons
 Flexible Kopplung:
-
jedes neue Target am Reset-Button,
einzelne Targets an einzelnen Buttons,
im Prinzip beliebige Topologie möglich.
import java.awt.*;
import java.awt.event.*;
public class Controller extends Frame{
Controller(){
setLayout(null);
Button resetB= new Button("reset");
resetB.setBounds( 60, 30,710, 30);
makeTargets(12, resetB);
add(resetB);
}
void makeTargets(int bx, Button resetB){
Color co= new Color(bx * 5208251);
Target t= new Target(60*bx, 70,50,40,co);
Button bttn= new Button("B-"+bx);
bttn. addActionListener(t);
resetB. addActionListener(t);
bttn.setBounds(60*bx, 120,50,40);
if (bx>1) makeTargets(bx-1, resetB);
add(bttn); add(t);
}
public static void main(String[] s){
Controller ctrl=new Controller();
ctrl.setTitle("Canvasses listening to Button Actions");
ctrl.setSize(800,200);
ctrl.setVisible(true);
} }
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7.8.4 Canvas-Komponenten als Listener
class Target extends Canvas implements ActionListener{
Color color;
Target(int t, int l, int b, int r, Color colr){
setBackground(colr);
setBounds(t, l, b, r);
color=colr;
}
public void actionPerformed(ActionEvent aE){
setBackground(Color.black);
if(aE.getActionCommand()=="reset")
setBackground(color);
paint(getGraphics());
}
}
 Explizite Plazierung der Komponenten, ohne
Layout-Manager.
 Farbe und Plazierung gesteuert durch den
Kontroller.
 Der Listener, bzw, das Target verwaltet seinen
Zustand ("color") selbständig.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7.9
"Single Process Multitasking" in Oberon
7.9.1 Zentrales Modul Oberon:
• Enthält eine Endloschleife (Oberon.Loop):
Zeicheneingabe
Netzanschluss
Mausklicks
Maus & Tastatur
Cursor neu zeichnen
Installierbare
Taks
Maus & Tastatur
User Task
Netzanschluss
Freispeichersammlung
Focus-Viewer
• Eingaben:
- Zeicheneingaben von der Tastatur,
- Mausklicks und -Interklicks,
- uninterpretiert an den Focus-Viewer senden.
• Mauscursor zeichnen.
• Explizit installierte Tasks aufrufen.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7.9.2 Installierbare Tasks:
• Mit Oberon.Install() installiert.
• wiederholt gerufen.
• immer mit leerem Stack.
• globale Variablen im zugehörigen Modul.
• normalerweise unsichtbar.
 User Tasks:
- durch den Programmierer installierbar.
 Netzanschluss:
- periodisch Meldungspuffer prüfen,
- Puffer im Interrupt füllen.
 Freispeichersammlung:
- natürlich keine andere Task aktiv,
- Mark & Sweep, z.B.
- schnell.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7.10 Oberon.Loop - vereinfacht:
PROCEDURE Loop*;
VAR M: InputMsg; N: ControlMsg ...
BEGIN
LOOP Input.Mouse(keys, X, Y); (* read it *)
IF Input.Available() > 0 THEN
Input.Read(ch);
IF ch < 0F0X THEN ...
M.id := consume; M.ch := ch;
M.fnt := CurFnt; ...
FocusViewer.handle(FocusViewer, M)
...
END ...
ELSIF keys # {} THEN ...
V:=Viewers.This(M.X,M.Y);
V.handle(V,M)...
ELSIF ~Mouse.on OR (X # prevX ...THEN
M.id := track; M.keys := keys;
M.X := X ...
V:=Viewers.This(X,Y); V.handle(V,M)
...
ELSE CurTask := PrevTask.next;
IF CurTask.time <= Input.Time()
THEN ... CurTask.handle END;
PrevTask := CurTask
END (* IF ... *)
END (* LOOP *)
END Loop;
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7.10.1 Verteilungsfunktion ("Dispatch"):
• Modul Oberon leistet eine DispatcherFunktion zu den Viewers und den Tasks:
-
für Tastatureingabe,
für Maus-Klicks,
für Mausbewegung,
für eingetragende Hintergrundtasks,
für Selection- & Copy-Messages.
• Dispatch geschieht durch Aufrufen eines
Handlers (Up-Call").
• Focus-Viewer:
-
für Tastatureingaben,
nicht verwechseln mit Marked Viewer,
hält das Caret,
Maus setzt einen neuen Focus.
• Die Viewers erhalten normalerweise eine
InputMsg:
- mit id= consume für Characters,
- mit id= track für Maus.
• Die Viewers erhalten ausnahmsweise eine
ControlMsg:
- id=mark für den "*"-Viewer,
- id=neutralize demarkiert "*"-Viewer,
- nicht mit "focus/defocus" verwechseln.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7.10.2 Protokollieren der Meldungen:
Text
Frame/Viewer
Handle
Edit
Call ...
Modul Oberon
Handle
Tastatur
& Maus
Tracer
• UpCall geht an irgend einen Frame-Typ
Handler.
• Am Frame bzw. Viewer hängt irgend ein Text
oder auch eine Grafik ...
• Eigenen Handler dazwischenschalten (Tracer).
• Handler-UpCall abfangen.
• Control- oder Input-Message anzeigen.
• Schliesslich ursprünglichen Handler rufen.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7.10.3 MODULE Tracer;
IMPORT Out, Viewers, Display, Oberon, SYSTEM;
VAR tracedViewer: Viewers.Viewer;
originalHandler: Display.Handler;
PROCEDURE Buttons(msg: Oberon.InputMsg);
BEGIN
IF 0 IN msg.keys THEN Out.Char("R") END;
IF 1 IN msg.keys THEN Out.Char("M") END;
IF 2 IN msg.keys´THEN Out.Char("L") END;
END Buttons;
PROCEDURE TraceInput(msg: Oberon.InputMsg);
BEGIN Out.String( " Oberon.InputMsg, ");
CASE msg.id OF
|
0: Out.String( " consume, ch: ");
Out.Char( msg.ch);
|
1: Out.String( " track ");
Out.Int( msg.X, 4);
Out.Int( msg.Y, 4);
Out.Char(" ");
Buttons(msg);
END; Out.Ln();
END TraceInput;
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
PROCEDURE TraceHandler( f: Display.Frame;
VAR msg:
Display.FrameMsg);
BEGIN
WITH msg: Oberon.ControlMsg DO
Out.String( " Oberon.ControlMsg, ");
CASE msg.id OF
| 0: Out.String( " defocus")
| 1: Out.String( " neutralize")
| 2: Out.String( " mark")
END; Out.Ln();
| msg: Oberon.InputMsg DO
TraceInput(msg);
ELSE END;
originalHandler(f, msg);
END TraceHandler;
PROCEDURE Start*;
BEGIN tracedViewer:=Oberon.FocusViewer;
originalHandler:=tracedViewer.handle;
tracedViewer.handle:=TraceHandler
END Start;
PROCEDURE Stop*;
BEGIN tracedViewer.handle:=originalHandler
END Stop;
BEGIN END Tracer.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7.10.4 InstallierbareTasks:
• Task-Datenstruktur:
Task* = POINTER TO TaskDesc;
Handler* = PROCEDURE;
TaskDesc* = RECORD
next: Task;
safe*: BOOLEAN;
time*: LONGINT;
handle*: Handler
END;
• In den Task-Deskriptor wird jeweils eine
parameterlose Prozedur aus irgendeinem
Modul eingetragen.
• "unsafe"-Tasks werden bei einem Trap aus der
Liste entfernt.
• Das einzutragende Modul wird vom Eintrager
importiert, ist also geladen - bitte nicht
entladen !
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• Werden in eine Ringliste des Moduls Oberon
eingetragen (CurTask*: Task):
Zeicheneingabe
Netzanschluss
Mausklicks
Maus & Tastatur
Cursor neu zeichnen
Installierbare
Taks
Maus & Tastatur
Oberon.CurTask*
Viewers
next
safe*
time*
handle*
M
M
M
• Parameterlose Prozeduren in Modulen M:
- für Freispeichersammlung.
- für Netzanschluß.
- für UserTasks ...
• Bei jedem Durchlauf wird nur ein Handler
gerufen, "falls es schon Zeit ist".
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
7.10.5 MODULE Timer;
IMPORT Out, Oberon;
VAR
T: Oberon.Task;
startTime, thisTime: LONGINT;
PROCEDURE Tick;
BEGIN thisTime:=Oberon.Time();
T.time:=thisTime+1000;
Out.Int(thisTime-startTime,12); Out.Ln;
IF thisTime-startTime>10000
THEN Oberon.Remove(T) END;
END Tick;
PROCEDURE Install*;
BEGIN NEW(T);
T.safe:=FALSE; T.handle:=Tick;
T.time:=0;
startTime:=Oberon.Time();
Oberon.Install(T);
END Install;
BEGIN END Timer.
• Text im Ausgabefenster bleibt editierbar.
• Verwendet Oberon.Time().
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
8. Hauptspeicher
8.1
Partitionen im Hauptspeicher
• am Beispiel des Macintosh Systems:
System
-partition
Programm Programm Programm
-partition 1 -partition 2 -partition 3
- System- & Anwenderpartitionen,
- freie Speicherbereiche,
- temporärer Speicher (nur ≥7.0).
Zeux
Heap
Heap
frei ...
Heap
frei ...
Heap
Tabellen
Globale Variablen
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
8.2
Anwenderprogrammpartition
• Heap für dynamische Speicherverwaltung:
- Codesegmente (nicht Segment #0),
- dynamische Datenstrukturen,
- Resourcen, "Objekte".
• Laufzeitkeller.
• A5-Welt:
- Globale Variablen des Programmes,
- Grafik-Kontext,
- Einsprungtabelle für Prozeduren.
Sprungtabelle
Grafik-Kontext
Register A5 Globale Variablen des Programmes
Keller
High
memory
frei
Register A7
Heap
low
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
8.3
Laufzeitkeller
Displaytabelle
 spiegelt die verschachtelten Gültigkeitsbereiche des Quellprogrammes wieder:
Globale
Variablen
Proc B
Proc C
Proc A
A-Variablen
B-Variablen
#0
#1
#2
#3
C-Variablen
#4
Displaytabelle
Keller
Programmtext
 Globale Variablen auf lexiklaischer Ebene #0.
 Compiler kennt aktuelle lexikalische Ebene,
jedoch nicht die Rekursionstiefe.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
 Nur Variablen im Keller, kein Code.
 Displaytabelle erledigt nicht:
-
Aufbewahrung der alten Ebenen,
Adressierung anderer Module,
Prozedurrücksprungadresse,
direkte & indirekte Rekursion,
Adressierung von Var-Parametern,
… Bildschirmanzeige.
Ähnliche Displaytabelle z.B. in Burroughs
Kellermaschinen...
 Andere
lexikalische
Macintosh:
-
Organisation
im
Motorola 680xx,
Registermaschine,
Kellerzeiger A7,
Keller wächst zu niedrigen Adressen und
gegenläufig zum Heap.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Statische & dynam. Kette
= „Static & dynamic Chain“
 Statische Verkettung anstelle von Display.
 Dynamische Verkettung für Rekursion:
globale
A
Proc B
Proc C
Proc A
Programmtext
static
chain
B
B
C
dynamic
chain
C
B
C
B
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Kellerrahmen („Stackframe“)
 Welche Information wird pro Prozeduraufruf
im Keller festgehalten?
Funktionsresultat
Stackframe
Parameter
Statische Verkettung
Rücksprungadresse
Dynamische Verkettung
Lokale Variablen
Registeraufbewahrung
Temporäre Zwischenwerte
 Funktionsresultat nur bei Funktionen.
 Statische Verkettung falls lex. Ebene >0.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Keller im Mac OS:
 Motorola 680xx Prozessor,
 A5: globale Variablen.
 A6: aktuelle lexikalische Ebene.
 A7: Kellerfront/Top-of-Stack.
 A4: With-Anweisung.
 Zwischenebenen über Zeigerkette.
A5
A5 Welt,
Globals
Funktionsresultat
Parameter
älteres A6
Statische Verkettung
Rücksprungadresse
A6
Dynamische Verkettung
Offset
Lokale Variablen
altes A6
Registeraufbewahrung
Temporäre Zwischenwerte
A7, Stackfront
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
LINK-Instruktionen
 LINK A6, #FFF0:
-
alte Rahmenadresse aus A6 einkellern.
Register A7 ist impliziter Stackzeiger.
Stackfront als neue Rahmenadresse in A6 laden.
#FFF0 (= -16) reserviert hier 4 zusätzliche
Langwörter auf dem Keller:
- d.h. decrementiert A7,
- für lokale Variablen.
 UNLK A6:
- aktuelle Adresse aus A6 wird Stackfront.
- neue Rahmenadresse vom Stack nach A6.
- Sprung in die Prozedur mit JSR…
- Rücksprung mit RTS…
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
 Aufgaben des Kellers
-
Speichern von lokalen Variablen
Übergabe von Parametern an eine Prozedur
Rückgabe von Funktionsresultaten
Funktioniert nach Prinzip „Last in First Out“
Aufrufkonventionen
 Pascal:
- Parameter werden von links nach rechts
übergeben
- Die aufgerufene Prozedur räumt den Keller auf
- Funktionsresultate werden über den Keller
zurückgegeben
 C:
- Parameter werden von rechts nach links
übergeben
- Die aufrufende Prozedur räumt den Keller auf
- Funktionsresultate werden in Registern
zurückgegeben
 Bei RISC-Prozessoren
- Parameterübergabe fast immer in Register
- Möglichkeit, Register zumzunummerieren
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Kellerrahmen (Stackframe)
 Aufbau:
 Adressierung der Parameter
Parameter
Alter Wert von EBP
Rücksprungadresse
EBP
DynamischeVerkettung
Lokale Variablen
ESP
- Relativ zu EBP mit positivem Index
 Adressierung der lokalen Variablen
- Relativ zu EBP mit negativem Index
void add(int x, int y)
{
int result;
result = x + y;
return result;
}
...
add(5, 7)
Betriebssysteme 2000, PS, VS-Informatik, Ulm
push
mov
sub
mov
add
mov
mov
mov
pop
ret
EBP
EBP,ESP
ESP,4
EAX,[EBP+8]
EAX,[EBP+12]
[EBP-4],EAX
EAX,[EBP-4]
ESP,EBP
EBP
push
push
call
add
7
5
add
ESP,8
Fehler! Textmarke nicht definiert.
PASCAL
function add(x,y: int)
begin
int localVar;
add := x + y;
end;
...
add(5, 7)
Betriebssysteme 2000, PS, VS-Informatik, Ulm
push
mov
mov
add
mov
mov
pop
ret
EBP
EBP,ESP
EAX,[EBP+12]
EAX,[EBP+8]
[EBP+16],EAX
ESP,EBP
EBP
8
push
push
push
call
pop
0
7
5
add
eax
Fehler! Textmarke nicht definiert.
8.4 HeapZonen
Typische Heapverschachtelung im Mac OS :
SystemHeap (@00001E00)
SystemInternalHeap
NonSystemHeap
Heap für Programm 1
…
Heap für Programm n
Interner Heap für Programm n
Heap für Finder (CommandShell)
Interner Heap 1
Interner Heap 2
Entspricht nur ungefähr den Partitionen:
+ Keller,
+ A5 Welt...
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
TYPE:
THz = ^Zone; { pointer to the start of a heap zone }
Zone = RECORD
bkLim:
Ptr;
{zone trailer block}
purgePtr:
Ptr;
{used internally}
hFstFree:
Ptr;
{first free master ptr}
zcbFree:
LONGINT; {n. of free bytes}
gzProc:
ProcPtr;
{grow zone func.n}
moreMast: INTEGER; {mstr ptrs to alloc.}
flags:
INTEGER; {used internally}
cntRel:
INTEGER; {not used}
maxRel:
INTEGER; {not used}
cntNRel:
INTEGER; {not used}
maxNRel:
INTEGER; {not used}
cntEmpty:
INTEGER; {not used}
cntHandles: INTEGER; {not used}
minCBFree: LONGINT; {not used}
purgeProc: ProcPtr;
{purge warning }
sparePtr:
Ptr;
{used internally}
allocPtr:
Ptr;
{used internally}
heapData:
INTEGER {first usable byte}
END;
 heapData als Platzhalter für nicht typisiertes
Datenfeld.
 Allozierung immer in der gerade aktuellen
HeapZone.
 Global: ^SysZone, ^ApplicationZone…
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Format einer HeapZone
ZonenHeader [52]
HeapZone
n, MasterPtrs
n
f
n
r
f
r
ZonenTrailer,
freier Block [12]
 Gruppen von MasterZeigern sind
nichtrelo-zierbarer (n) Block angelegt.
als
 Heapspeicherblöcke sind lückenlos aneinandergefügt.
 Freie MasterZeiger sind verkettet.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
HeapDatenBlöcke
 Freier Block:
0 Blocklänge
Unbenützt
Freier Platz
 Nicht relozierbarer Block ("Zeigerblock"):
4x Blocklänge
HeapAdresse
Daten
 Relozierbarer Block ("HandleBlock"):
8x Blocklänge
MasterPtrOffset
Daten
 x ist Grössenkorrektur auf Langwörter.
 Mindestens 12 Bytes, inkl. 4 Datenbytes.
 Erzeugen:
- NewPtr(someSize); NewHandle(…);
 Freigeben:
DisposPtr(someHdle); DisposHandle(…);
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Handhabung von Handles:
 Attribute (des MasterZeigers):
- ResourceFlag,
- locked oder unlocked,
- falls unlocked -> (purgable/unpurgable).
 Erzeugen & freigeben:
- HLock(someHandle); Unlock(…);
- HPurge(someHandle); HNoPurge(…).
 Handle dereferenzieren -> Pointer.
 Nach dem Aufruf des Memory Managers
sollen Handles erneut dereferenziert werden.
 Vorsicht bei WITH-Anweisungen:
WITH someHandle^^ DO
xRecord.feld:=…
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Handles & Masterzeiger
 Der Masterzeiger zeigt auf die Daten.
 Ein Handle als Zeiger auf einen MasterZeiger.
 Eventuell zeigen viele Handles zu einem
MasterZeiger:
aHandle
bHandle
relozierbarer Block
cHandle
MasterPtr
-> Daten können verschoben werden, ohne
alle Handles zu kennen und zu verändern.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Speicherfragmentierung
 Zwischen allozierten Blöcken sind viele, allzu
kleine Speicherbereiche übrig (Verschnitt).
Ursachen:
 Wahlfreie Allozierung & Deallozierung.
 Nicht relozierbare Blöcke, Zeiger.
 Locked Handles.
 Codesegmente.
 Nested Heaps.
Abhilfe:
 Blöcke unlocked halten.
 Unlocked Blöcke verschieben.
 Purgable Blocks auslagern.
 HeapZone erweitern.
 GrowZone Funktion rufen.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Speichervergabe
 Freispeicherliste
- Freie Speicherblöcke verketten.
- Zeiger für die Freispeicherliste im leeren Block
unterbringen.
- Eventuell mehrere Listen verwenden.
 Linearer Heap
- Freie & belegte Blöcke sind dicht aneinander
gereiht (Verkettung über Längenfeld).
- Optimale Ordnung der Blöcke ist schwierig.
- Interne Zeiger sind überflüssig.
- Z.B. im Mac OS.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Vergabestrategien
 Gute Strategie kommt mit kleinem Heap aus.
 Die beste Strategie zu finden, ist auch „post
festum“ ein schwer lösbares Problem.
 „First fit“ nimmt den ersten freien Block der
groß genug ist.
 „Best fit“ sucht den Block, der am wenigsten
Speicherverschnitt verursacht.
 „Worst fit“ nimmt den größten Block, damit
noch was übrig bleibt.
 „Buddy-Technik“ verwendet N Freispeicherlisten, die jeweils Elemente der Größe 2**N
enthalten. Bei Bedarf wird ein zu großes
Element geteilt und später wieder mit seinem
„Buddy“ zusammengelegt.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
8.5
Autom. Freispeichersammlung
 = „Garbage Collection“
 Explizite Speicherrückgabe durch den Programmierer ist fehleranfällig und mühsam.
 Manche Programmiersprachen sammeln
Speicherbereiche, die nicht mehr adressierbar
sind automatisch wieder ein (Lisp, Oberon...).
Motivierung & Voraussetzungen
 Freigabe von Speicher ist fehleranfällig:
- dangling Pointers
- Code notwendig zum Abbauen komplexer
Strukturen
- bei modularer Programmierung werden
Kontrollstrukturen benötigt
(müssen explizit programmiert werden)
- Nicht Freigabe von Speicher ist ebenfalls eine
Fehlerquelle (Memory leaks)
 Sämtliche Referenzen auf einen Speicherblock müssen auffindbar sein
 typensichere Sprache dringend empfohlen.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Assignment-Listen:
Nil
Nil
-> Die Freispeichersammlung sammelt nun alle
Blöcke mit leerer Assignment-Liste ein.
-> Zusammenhängende Speicherbereiche
entstehen durch Verschieben von allozierten
Blöcken und Anpassen der Zeiger.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Grundtechnik
 2 Phasen Modell
- 1. Phase: Erkennung von referenzierbaren und nicht
mehr referenzierbaren Objekten (Garb. Detection)
- 2. Phase: Freigabe des Speichers von nicht mehr
referenzierbaren Objekten (Garbage Reclamation).
 Nicht mehr referenzierbare Objekte erkennen.
 Es existiert kein Pfad zwischen dem Objekt und
einer Zustandsvariablen (Root-Set).
 Zustandsvariablen
- globale/statische Variablen
- lokale & Modulvariablen
 Jeder (allozierte) Block führt eine Liste mit
Zeigern, welche auf ihn zeigen.
 Im Falle einer Allozierung (New...) wird der
zugeordnete Zeiger eingetragen.
 Wird ein gültiger Zeigerinhalt einem anderen
Zeiger zugewiesen (assigned), so wird auch dieser
Zeiger eingetragen.
 Wird eine Zeigervariable freigegeben, so muß sie
aus der Assignment-Liste entfernt werden. Das
kann schwierig werden.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
8.5.1 Mark & Sweep
 Der Sammelalgorithmus markiert alle noch
erreichbaren Blöcke im Heap:
Garbage
Z
Z1
Z2
3
 Nicht markierte Blöcke sind dann frei (bzw.
Garbage) und können eingesammelt werden.
für jede Zustandsvariable s:
Markiere(s);
für jedes Objekt o, für das gilt o.mark = 0 :
Speicherfreigabe(o)
Markiere(s):
wenn s.mark = 1 dann beende Prozedur
s.mark := 1;
für jedes von s referenzierteObjekt o:
Markiere(o)
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
 Ausgehend von einer Menge von Wurzelzeigern werden alle noch aktiven (live) Zeiger
und deren Objekte gefunden.
 Das Verschieben von Blöcken zur Gewinnung
von größeren Bereichen (Kompaktieren) ist
möglich aber mühsamer.
 Die Freispeichersammlung muss in einem
Stück zu Ende laufen. Manipulation an
Zeigern durch das Anwenderprogramm
würden die Freispeichersammlung verwirren.
 Die hierzu erforderlichen Symbol- und Typentabelle wird vom Compiler erzeugt.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
8.5.2 Compilerunterstützung:
 Referenzen innerhalb eines Blocks müssen
identifizierbar sein, benötigt wird:
-
Offset und Typ der globalen Zeigervariablen,
Offset und Typ der lokalen Zeigervariablen,
Identifikation der Prozedurframes im Stack,
Zeigerfelder in dynamisch allozierten Records.
X
X
^Y
^Y
B
Y
A
^X
^Y
^X
^Y
Global
Stack
Y
^X
^Y
Heap
Tabelle
Global Frame
Proc-A Frame
Proc-B Frame
Record-X Type
Record-Y Type
…
Betriebssysteme 2000, PS, VS-Informatik, Ulm
– – –
– –^X
–^Y –
– – –
–^X –
– –
– –
– –
–^Y
– –
–^Y
– –
– –
– –
–^Y
–
–
–
–
–
–
–
–
–
–
Fehler! Textmarke nicht definiert.
8.5.3 Kopierende Freispeichersammlung

Die Objekte werden solange von einer alten
Region in eine neue kopiert bis der Rootset
nur noch Referenzen in die neue Region hat.

Ein kopiertes Objekt darf nicht mehr in die
alte Region zeigen.

Ein Objekt wird zusammen mit den
Objekten kopiert auf welche es zeigt.

Eventuell Zugriffe auf die alte Region mit
MMU abfangen.
Alte Region
Neue Region
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
9. Plattenspeicher
9.1
Aufbau einer Festplatte
9.1.1 Physikalischer Aufbau
 Platten mit magnetisierbarer Schicht.
 Kamm mit Leseköpfen
 typischerweise 512 Bytes pro Sektor (entsteht
durch Low-Level-Formatierung).
 Adressierung:
- über Zylinder, Kopf, Sektor (CHS),
- der über Logische Block Nummer (LBA)
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
 Wichtige Felder:
-
ID: Zylinder; Head und Sektor
ECC: Error Correction Code
DATA: zur Informationspeicherung
GAP4: Nach letztem Sektor eines Zylinders
9.1.3 Aufbau des Bootsektors
 Position ist (Zylinder 0, Kopf 0, Sektor 1)
 Wird durch BIOS beim Systemstart geladen
und angesprungen.
000
Bootlader (446 Bytes)
446
Partitionstabelle
510
(64Bytes)
Signatur (2 Bytes)
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
GAP3
DATA
ECC
DAM
SYNC
GAP2
ECC
ID
IDAM
SYNC
SPD
GAP1
IAM
SYNC
9.1.2 Aufbau eines Sektors
9.1.4
Partitionstabelle
 Beschreibt die logischen Laufwerke:
- verschiedene Dateisysteme auf einem Volume,
- entsprechend MS-DOS Laufwerksbuchstaben.
Offset Größe
Inhalt
446
16
Partition 4
462
16
Partition 3
478
16
Partition 2
494
16
Partition 1
 Extended
Partitions
gestatten
die
Verschachtelung von logischen Laufwerken.
 Es ist jedoch mit Überraschungen zu rechnen,
da nicht alle Partitionierungsprogramme
gleich arbeiten.
 Empfehlung:
Volume.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Maximal
4
Partitions
pro
Fehler! Textmarke nicht definiert.
9.1.5 Aufbau eines Partitionseintrages
Offset Größe Inhalt
0
1
Boot – Flag
(80h aktiv; 00h inaktiv)
1
3
Beginn der Partition
4
1
System Kennung
(z.B. 1: DOS 12-Bit FAT;
4: DOS 16-Bit FAT …)
5
3
Ende der Partition
8
4
Startsektor als logischer Sektor 0
12
4
Größe der Partition in Sektoren
 Probleme bei großen Festplatten
- 224 Sektoren a 512Bytes = 8 Gigabyte
- 232 Sektoren a 512Bytes = 2 Terrabyte
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
9.1.6 FAT Dateisystem (FAT 16)
 Dateizuordnungstabelle auf den ersten Spuren
einer Festplatte.
 Alle Belegungseinheiten (Blöcke) einer Datei
sind über die File Allocation Table verkettet:
0 fff7
#1 #2
4
#3
7
#4
0 fff7
#5 #6
8
#7
a ffff
#8 #9
b ffff
#a #b
 Das Verzeichnis zeigt auf den ersten Block
einer Datei, bzw. den ersten Eintrag in der
Tabelle.
 Der letzte Block ist mit $FFFF markiert.
 Schadhafte Blöcke sind mit $FFF7 markiert.
 Verzeichnisse sind ebenfalls Dateien.
 Größe einer Zuordnungseinheit ist variabel,
aber fest für eine Partition.
 Üblich sind 512, 1024, 4096 Bytes.
 Sicherheitshalber wird die FAT oft repliziert.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
9.1.7 Aufbau eines FAT16 Dateieintrages:
 Sind in Verzeichnisdateien untergebracht.
Offset Größe Inhalt
0
8
Dateinamen
Sonderfälle für das 1. Zeichen:
00h: leerer Eintrag
E5h: Eintrag wurde gelöscht
8
3
Dateinamen-Erweiterung
11
1
Attribute:
Archiv-Bit, read-only,
Verzeichnis/Datei, versteckt
12
10
Reserviert
22
2
Uhrzeit der Erstellung
24
2
Datum der Erstellung
26
2
Start Cluster
28
4
Dateilänge
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
9.1.8 I-Nodes in Unix.
≈ Index-Nodes.
• Zentrale Struktur im Unix-Dateisystem:
Katalog
/
I-Nodes
Blocks (D&X)
• Unterverzeichnisse sind Dateien.
• Einträge in Unterverz. zeigen auf I-Nodes.
• Mehrere Links auf einen I-Node.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• I-Node Inhalt:
-
Eigentümer,
Projektgruppe des Eigentümers,
Zugriffsschutz,
Datumseinträge,
Dateityp,
Anzahl der Links für diesen I-Node,
Verzeigerung zum Dateiinhalt,
Mount-Point Flag …
• I-Node Verzeigerung:
-
zeigt auf Datenblöcke,
zeigt auf weitere Extent-Blöcke,
zeigt auf indirekte Extent-Blöcke,
zeigt auf doppelt indir. Extent-Blöcke.
• Dateityp:
-
Directory,
reguläre Datei,
Special File für Character Device,
Special File für Block Device,
Pipe.
• Zugriffsschutz 3*3 Bits, nämlich:
-
Read-, Write- & Execute-Permissions,
getrennt für Eigentümer,
für Gruppe des Eigentümers,
für alle.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
9.1.9 SetUserID-Bit
Problembeispiel:
• Nur der Superuser darf auf die Passwortdatei
zugreifen.
• Die User sollten gelegentlich ihr Passwort
ändern, dürfen aber nicht auf die Datei
zugreifen.
Lösungsansatz:
• Passwortprogramm gehört dem Superuser und
hat sein SetUserID-Bit gesetzt.
• Wird es durch den User gerufen, so läuft es
nicht etwa mit der Zugriffsberechtigung des
Users, sondern mit derjenigen des
Eigentümers (z.B. Superuser).
• Nur der Eigentümer kann das SetUserID-Bit
setzen (und immer auch der SU).
• Es geht nicht um die Ausführungsberechtigung von /bin/passwd, sondern um
das Zugriffsrecht zu /etc/passwd.
• Verfahren patentiert durch Dennis Ritchie.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
9.2
Speichervergabe
"Wo ist noch Plattenplatz frei ?" am Beispiel
des Macintosh Dateisystems
 Sequentielle Natur einer Platte erfordert
andere Verfahren als im Heap:
- Armbewegungen sind kritisch,
- kleines Abbild im Hauptspeicher,
- optimale Suchverfahren für Verzeichnisse …
Vergabeeinheiten:
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• Logische Blöcke à 512 Bytes werden
normalerweise auf einen physikalischen
Sektor abgebildet.
• Die Belegungseinheit (Allocation Block) ist
jeweils mindestens 2 logische Blöcke. Dies
reduziert die Größe der Vergabetabellen.
• Die Zuteilung erfolgt aber in Erweiterungsquanten (Clumps) von mehr als einer
Belegungseinheit:
- typisch ist 4 Belegungseinheiten,
- teilweise Rückgabe nach Close,
- Dies fördert zusammenhängende (contiguous)
Dateiplazierung.
• Ein Extent ist ein Bereich von benachbarten
Blöcken die zu einer Datei gehören:
- Startadresse einer Belegungseinheit,
- Anzahl der Folgeblöcke.
• Fragmentierte Dateien bestehen aus vielen
Extents und haben schlechtes
Zugriffsverhalten:
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
10.
Namensdienste
10.1
Namen & Adressen
10.1.1 Begriffliches
• people prefer names, machines use addresses
• Namen in Betriebssystemen:
-
WWW, E-Mail, ...
Rechner, Benutzer, ...
Dateien, Verzeichnisse, ...
Geräte, Dienste, Fenster, ...
Packages, Klassen, Methoden,Variablen, ....
• Gründe für Benennung:
- Erklärung,
- Lokalisierung,
- Identifizierung.
• Namenskonvention: Regeln für den Aufbau von
gültigen Namen:
- UNC: \\fix\public
- URL: http://cool.uni-ulm.de/zeux
- Java: class Test1 aber class 1Test
- Dateien: FAT16 Dateinamen mit 8+3 Zeichen
• Namensraum: Menge aller gültigen Namen,
die eine Namenskonvention erfüllen.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• Binden: Beziehung zw. Namen und Adresse
• Strukturierung von Namen:
- Flach: unstrukturiert, beliebige Zeichenfolge
- Hierarchisch: syntaktisch strukturiert
• Flache Namen:
- Eindeutigkeit schwer prüfbar
- Bsp.: „Schulthess“, „Schirpf“, „Schoettner“
• Hierarchische Namen:
- „www.uni-ulm.de“
- „c:\winnt\system32\drivers“
• Namensdienst: Datenbasis, welche die Zuordnung von Namen zu Adressen speichert.
• Namensauflösung:
- Dynamisch zur Laufzeit,
- Statisch zur Übersetzungszeit,
- Rückwärtsrichtung: z.B. Debugger.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
10.1.2
Lokale Namensdienste
• Benutzerverwaltung:
- Flacher Namensraum,
- Benutzer- und Gruppennamen.
-
• Dateisysteme:
- Flache Dateinamen,
- Hierarchische Pfadnamen,
- Unix: eine Wurzel „\“, Microsoft: „A:“, „C:“, ...
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• Software-Komponenten:
- JVM: Java Packages, Klassen,
- BS: DLLs, Shared Libraries, ...
- COM-Laufzeitbibliothek: COM-Objekte.
• GUI-Elemente und Betriebsmittel:
- Flache Namen,
- Betriebsmittel: Prozesse, Semaphore, ...
- GUI-Elemente: Fenster, Controls, Ressourcen.
• Compiler:
- Sichtbarkeitsregeln für Namen (Scopes),
- Namenskonventionen abhängig von Sprache.
• Lader: Zuordnung Klasse & Deskriptor, ...
• Konfigurationsverwaltung:
- Flache Namen,
- Benutzerkonfiguration: z.B. Desktop,
- Maschinenspez. Einstellungen (z.B. IP-Adresse)
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
10.1.3
Verteilte Namensdienste
• Anforderungen:
-
Effizienz,
Datenschutz,
Selbstkonfigurierung,
Verfügbarkeit & Skalierbarkeit.
• Beispiele:
- Verzeichnisdienste: z.B. NDS,
- Verteilte Dateisysteme: z.B. NFS,
- Globale Namensverwaltungen: z.B. DNS.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
10.2
Beispiel: JavaOS
Root
Temp
Gerät
Interface
Alias
nicht-persistent
Software
Config
persistent
• Java System Database (JSD):
-
Hierarchischer Namensraum,
Sammlung von benannten Objekten,
Nachfolger sind horizontal verknüpft,
Objekt durch Pfadnamen eindeutig bestimmt.
• Format eines Eintrages:
Name(String)
Status (Drafted, Published, ...)
Parent Entry Link
Sibling Entry Links
Child Entry Link
Lock
Manager
Generation Number
+
Entry-Specific Properties
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
10.3
Beispiel: Windows NT
• Objekt-Manager mit zentralem Namensdienst:
- Funktionen in NTOSKRNL.EXE,
- Objekte werden nur zum Auffinden über den
Namen identifiziert, danach über ein Handle,
- Nicht alle Objekte sind im User-Mode sichtbar.
• Format eines Eintrages:
Name(String)
Directory
Security Descriptor
Open Handle Counter
Permanent/Temporary
Kernel/User mode
Type Pointer
...
Object
Header
Type
Object
Object Body
• Namen von Laufwerken (A:) sind intern durch
Aliase realisiert:
\
Device
DosDevices
...
Floppy0
...
Betriebssysteme 2000, PS, VS-Informatik, Ulm
A:
...
\Device\Floppy0
Fehler! Textmarke nicht definiert.
10.4 Konfigurationsverwaltung
10.4.1
Einführung
• Konfigurieren ist keine triviale Aufgabe:
- Viele Ebenen: Hardware, System, Benutzer,
- Viele Werkzeuge: BIOS-Setup, BS-Tools, ...
• Hardware:
- ISA: Interrupt-Nummer durch Jumper,
- PnP: dynamisches Aushandeln von Ressourcen.
• Plug and Play:
-
hierarchisch
max. 255 PCI Busse mit max. 32 Geräten
256 Byte Konfigurationsadressraum
BIOS handelt Interrupts & Speicher aus
• BIOS-Setup:
- Festplatten (Logische Geometrie),
- Chipset Einstellungen (Timing für Speicher).
• BS-Konfiguration:
- Treiber: Parameter, Ladezeitpunkt, ...
- Protokolle: Bindungen, IP-Adresse, ...
- Benutzerkonten: Rechte, Gültigkeitsdauer, ...
• Benutzereinstellungen:
- Desktop (Ordner, Erscheinung, ...),
- Anwendungsspez.: E-Mail-Adresse, ...
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
10.4.2 Beispiel: JavaOS
• Informationen über Maschinen und Benutzer
auf einem zentralen Server gespeichert.
• Bootphase nutzt nur Teilbaum „Machine“
• durch das Anmelden eines Benutzers werden
Teile aus „User“ eingeblendet
Config
User
Users
Machine
Groups
Platforms
Identifiers
Profiles
• Werkzeug: JavaOS Configuarion Tool (JCT)
• JCT erzeugt ein Master Client File (MCF)
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
10.4.3 Beispiel: Windows NT Registry
• Registry = Zentrale Konfigurationsdatenbank
• Aufbau:
- Persistente Daten: system.dat & user.dat,
- Flüchtige Infos im HS (z.B. laufende Prozesse).
• Programme greifen massiv auf Registry zu:
- Netscape Gold 3.0 starten: ~ 1.400 Zugriffe,
- Dokument in Winword öffnen: ~ 200 Zugriffe.
• Zugriff auf Registry über:
- Systemaufrufe,
- Werkzeuge: regedit.exe,
- Dateien mit Endung *.reg.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• Probleme der Registry:
- Wächst durch Relikte von entfernten Prog.,
- Unübersichtlich, da zu wenig standardisiert,
- Falsche Einstellung führen u.U. zum Absturz,
- Je größer die Registry wird, desto langsamer
wird das BS  Neuinstallation des Rechners.
• Systemkonfiguration in der Registry:
- Suchpfade: zusätzlich zu „PATH“
HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths
- DLLs:
HKLM\Software\Microsoft\Windows\CurrentVersion\SharedDLLs
- Deinstallationsprogramme:
HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
- Drucker:
HKCC\System\ CurrentVersion\Control\Print\Printers
- Treiber:
HKLM\System\CurrentControlSet\Services
• Anwendungskonfiguration:
- Empfehlung:
- HKLM\Software\<Firmen-Name>\<ProgrammName>\<Version>
• Benutzereinstellungen:
- Pfad der Benutzerprofile:
- HKLM\Software\Microsoft\Windows\CurrentVersion\ProfileLi
st
- Anpassen von Anwendungen:
- HKCU\Software\<Firmen-Name>\<Programm-Name>
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• Beispiel: Schlüssel und Wert anlegen
#define NAME "Software\\Abteilung VS\\PlurixServer"
main()
{
HKEY
char
char
DWORD
hNewKey;
*szNewKey=NAME;
*szCont = "zeux";
dwDisposition;
// handle to new key
// name of new key
// name of value
// performed action
RegCreateKeyEx(
HKEY_LOCAL_MACHINE, // root-key
szNewKey,
// new key
0,
// reserved
"",
// unused class str
REG_OPTION_NON_VOLATILE,// persistent
KEY_ALL_ACCESS,
// access rights
NULL,
// security
&hNewKey,
// handle to new key
&dwDisposition
// performed action
);
RegSetValueEx(
hKey,
"String",
0,
REG_SZ,
(LPBYTE)szCont,
strlen(szCont)+1
);
// handle to key
// name of value
// reserved
// type of value
// string data
// string length
RegCloseKey(hNewKey);
}
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
10.6. Internet Domain Name Service
• DNS wurde 1987 eingeführt (RFC 1034)
• verwaltet den Internet Namensraum
• Merkmale:
-
Hierarchisch strukturiert,
Ersetzt zentrale Hosts-Tabellen,
Verwaltet Millionen von rel. stat. Adressen,
Zuordnung von DNS-Namen & IP-Adressen.
• Organisation des Namensraumes:
- Organisatorisch innerhalb der USA,
- Geographisch auf der restlichen Welt.
Root
COM
EDU
GOV
DE
UNI-X
UNI-Y
INST-A
Host
Host
A
B
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• Domain-Namen:
- Zeichenketten durch „.“ konkateniert,
- Ortsunabhängig & immer absolut zur Wurzel.
• DNS Namer-Sever:
- Namensdaten primär aus lokalen Domäne,
- Zusätzlich Adressen anderer Name-Server.
• Namensdaten werden in Zonen unterteilt:
- Zonen def. administrative Einheiten,
- Zonen-Konfigurationsdatei enthält Adresse &
Namen von anderen Name-Servern.
• Verfügbarkeit:
- Replikation auf mind. zwei unabh. Servern,
- Primäre und sekundäre Zonen-Server,
- Vorhalten von Anfragen mit TTL (TimeToLive)
• Beispiel: Domains und Zonen
„“
-
nz
au
gov
com
edu
Zone au
Domain au
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• im Schnitt wird eine Name durch zwei
Resolutionsschritte aufgelöst
-
my.mac.gov.au ?
Name
Server
siehe au
„“
Name Server
au
gov.au
Name Server
gov.au
mac.gov.au
Name Server
Antwort
Anfrage
mac.gov.au
my.mac.gov.au
Name Server
Anfrager
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
11.1.1
11.
Nebenläufigkeit
11.1
Prozesse & Threads
Begriffliches
• Nebenläufig.: paralleler od. verzahnter Ablauf
• Parallelität: simultaner Ablauf
P1
P2
P3
P2
P1
P3
• Ziele: Wartezeiten nutzen und den Eindruck
der Gleichzeitigkeit erwecken.
1 Prozessor
3 Prozessoren
• Programm: statische Darstellung eines Algo.
• Prozeß = Adreßraum + Thread(s)
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• Task = Aufgabe, die durch einen oder mehrere
Prozesse erledigt wird.
• Thread (Leichtgewichtsprozeß, Ausf.-Spur):
-
gehört zu einem Adreßraum,
teilt sich Daten, Code u. BM,
separater Registersatz & Laufzeitkeller,
beschreibt dyn. Ablauf der Verarbeitung.
Instruktionsteil
Programm
zähler
Gemeinsame Daten
• Multithreading: mehrere Threads pro Prozeß
• Multitasking: Mehrere Tasks werden (scheinbar) gleichzeitig ausgeführt.
• preemptives Multitasking:
BS kann einer Task CPU jederzeit entziehen.
• kooperatives Multitasking:
Tasks müssen Prozessor freiwillig freigeben.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
11.1.2
Prozeßmodelle
• Sequentiell: Viele Module und ein Thread
(~ Modula-2):
• Nebenläufig:
- Viele Threads u. ein gemeinsamer Adreßraum
(Light-Weight Process),
- Viele Threads und pro Thread ein eigener
Adreßraum (trad. Unix-Prozeß).
• Terminologie in Literatur nicht einheitlich
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• Verwaltung durch einen Prozeßkontrollblock:
- Charakteristika,
- Zustandsinformation,
- Verwaltungsdaten für BS.
ID
Programmname
Speicherinformation
Betriebsmittel
Priorität
User-ID
• Prozeßzustände:
blockiert
debloc
neu
start
warten
freigeben
bereit
läuft
beendet
stop
zuordnen
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Unix
• viele Threads mit jeweils eigenem Adreßraum
• moderne Varianten bieten auch mehrere Threads
in einem Adreßraum (z.B. Linux)
• getrennte Adreßräume bieten Speicherschutz
• Erzeugen von Prozessen durch „fork“:
- Vater-Sohn-Beziehung,
- erzeugt Kopie des aktuellen Prozesses.
• Hintergrundprozesse werden als Daemon
bezeichnet (z.B. Spooler)
-
Windows NT
• Prozeß:
- mind. ein Thread,
- keine Verwandtschaft zw. Prozessen,
- in BS-Verwaltung als Objekt implementiert.
• Dienste als Hintergrundprozesse:
- siehe „Dienste“ in Systemsteuerung,
- kontrolliert durch Service Control Manager.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• Prozeß starten durch „CreateProcess“:
#include <windows.h>
main()
{
STARTUPINFO
si; // window stuff
PROCESS_INFORMATION pi; // handles
CreateProcess(
„MyProg.exe“, // Programm (Pfad)
„“,
// command line
NULL,
// process attributes
NULL,
// thread attributes
FALSE,
// inherit handle
CREATE_NEW_CONSOLE,
NULL,
// env. Block
NULL,
// curr. Directory
&si,
// startup info.
&pi
// process info.
);
...
}
-
11.1.3
Multithreading
• pro Thread ein separater Adreßraum ist teuer:
- Start ist aufwendig,
- Kontextwechsel ist teuer (TLB),
- kontextübergreifende Komm. ist langsam.
 mehrere Threads in einem Adreßraum
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• Verwaltung durch Thread-Kontrollblöcke:
ID
Programmzähler
Register
Priorität
Ausführungszeit
• Typische Einsatzgebiete:
- Blockierendes Warten auf Ereignisse,
- Benutzerschnittstelle am Leben erhalten,
- gleichzeitige Bearbeitung von unabhängigen
Aufgaben innherhalb eines Programmes.
• Beispiel: Erzeugen eines Threads (siehe 7.5.1)
11.2
Kontextwechsel
• Dispatcher: Modul welches Kontextwechsel
implementiert
• beim Umschalten auf einen anderen Thread
muß der aktuelle Kontext gesichert werden:
- hierzu dienen diverse Felder im PCB/TCB,
- teuer ist das Umschalten des Adreßraumes,
- Beschleunigung durch Hardwareunterstützung.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• Gründe für einen Kontextwechsel:
- Rechenzeit abgelaufen,
- Warten auf Betriebsmittel,
- freiwillige Abgabe der CPU.
• evt. Umschalten auch verhindern
• Ablauf:
-
Status von
P2 laden
laufend
laufend
schlafend
Status von
P1 sichern
schlafend
P2
P1
Status von
P1 laden
schlafend
laufend
Status von
P2 sichern
• Compiler berücksichtigt auch Kontextwechsel
 Klassen- u. Modulkontexte
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Intel Hardwareunterstützung
• Zustandes sichern in Task State Segment:
0
Back link
Offset-0
ESP-0
0
SS-0
ESP-1
0
SS-1
ESP-2
0
SS-2
CR3
EIP, EFLAGS
EAX
.
.
.
0
CS
0
DS
I/O Bmp Base
..
.
0
T
systemabhängiger Teil
• jedes TSS wird durch TS-Deskriptor def.:
- Basisadr. & Größe,
- in der GDT abgelegt.
• Taskwechsel durch FAR-JUMP od. Interrupt:
- CPU sichert Zustand von akt. Task in TSS,
- lädt das TR Register mit neuem TS-Deskriptor,
- der neue Kontext wird aus dem TSS ausgelesen.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
11.3
Scheduling & Prioritaeten
• Scheduler: regelt die Zuteilung des Prozessors
• Verdrängung = entziehen der CPU
• Ziele:
-
faire CPU Verteilung,
Wartezeiten bestmöglichst ausnutzen,
Verweilzeit von Programmen minimieren,
mögl. viele Threads pro Zeitintervall bedienen,
Antwortzeit f. interaktive Benutzer minimieren.
• Scheduler tritt in Aktion wenn ein Prozeß:
-
startet,
terminiert,
freiwillig die CPU freigibt,
auf ein Betriebsmittel wartet,
seine Zeitscheibe voll ausgenutzt hat.
11.3.1
Strategiealternativen
• ohne / mit Verdrängung
• ohne / mit Prioritäten
• unabhängig / abhängig von Bedienzeit
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
First Come, First Served
• Bearbeitung der Prozesse in der Reihenfolge ihrer
Ankunft in der Bereitliste.
• Prozessorbesitz bis zum Ende oder freiwilligen
Aufgabe
• Beispiel:
- t(P1)=24, t(P2)=3, t(P3)=3
- Reihenfolge: P1, P2, P3
- durchschnittliche Wartezeit = 17
P1
P2
0
24
P3
27
30
- Reihenfolge: P2, P3, P1
- durchschnittliche Wartezeit = 3!
P2
0
Betriebssysteme 2000, PS, VS-Informatik, Ulm
P3
3
P1
6
30
Fehler! Textmarke nicht definiert.
Round Robin (Zeitscheibenverfahren)
• Ziel: gleichmäßige Verteilung der CPU
• Bearbeitung der Prozesse in der Ankunftsreihenfolge
• Nach Ablauf einer vorher festgesetzten Frist
findet eine Verdrängung statt.
• Problem: richtige Wahl der Zeitscheibe
• Beispiel:
- t(P1)=53, t(P2)=17, t(P3)=68, t(P4)=24
- Reihenfolge: P1, P2, P3, P4
P1
P2
P3
P4
P1 P3
P4
P1
P3
P3
0
20
37 57
77
97 117 121 134 154 162
-
Shortest Job Next
• Prozeß mit der kürzesten Bedienzeit wird als
nächster bis zum Ende oder freiwilligen
Aufgabe bearbeitet.
• bevorzugt kurze Prozesse
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• Bedienzeit muß bekannt sein, lang laufende
Prozesse können verhungern
• Beispiel:
- t(P1)=7, t(P2)=4, t(P3)=1, t(P4)=4
- Reihenfolge: P1, P2, P3, P4
- non-preemptive: durchschn. Wartezeit = 4
P1
P3
0
7
P2
8
P4
12
16
- preemptive: durchschnittliche Wartezeit = 3
P1
0
11.3.2
P2 P3
2
4
5
P2
P4
7
P1
11
16
Strategien für Echtzeitsysteme
• Ziel: Einhalten von definierten Zeitschranken.
• für krit. Anwendungen (z.B. Kernkraftwerk)
• Threads erhalten Sollzeitpunkte (deadlines)
• Voraussetzung: Laufzeit vorab bekannt
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• keine Desktop-Betriebssysteme
• Beispiel: Earliest Deadline First
- t(P1)=4, t(P2)=5, t(P3)=3
- Fristen F1=10, F2=7, F3=17
P2
0
11.3.3
P1
5
P3
9
12
Mehrere Warteschlangen
• Bereit-Warteschlange aufteilen:
- Vordergrund- und Hintergrundprozesse,
- oder für jede Priorität eine Warteschlange.
Gruppen gleicher Priorität
-
PCBs
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
11.3.4
Mehrprozessor-Aspekte
• wahllose CPU-Zuteilung schlecht – Caches!
• Einführung der Prozessor-Affinität: TCB wird
um zuletzt benutzte CPU erweitert
• Nachteil: Aufweichung von Prioritäten
11.3.5
Leerlaufproblem
• falls alle Threads warten ist die CPU frei
• in dieser Zeit läuft ein Leerlauf-Thread:
- darf nicht anhalten,
- hat geringste Priorität,
- muß jederzeit verdrängbar sein.
• im Leerlauf können diverse Aufgaben
bearbeitet werden:
- Prüfungen,
- Garbage Collection,
- Heap Kompaktifizierung.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
11.3.5
Scheduling in Windows NT
• verdrängendes, auf Zeitscheiben basierendes
Scheduling mit Prioritäten
• 32 Prioritätsklassen:
- 16-31 für Realzeitthreads
- 1-15 für normale Threads
- 0
für den Leerlaufthread
• Prioritätsklasse berechnet sich aus Prozeßklasse und Thread-Prioritätslevel
• Prioritäten können dyn. angepaßt werden
• wenn E/A-Auftrag beendet ist, auf den ein
Thread gewartet hat, so wird seine Priorität
erhöht (1-8 Ebenen) = Priority Boost
• nach einem Priority-Boost, wird nach jedem
Ablauf einer Zeitscheibe, die Priorität wieder um
eins erniedrigt, bis zum Ausgangswert
• Prioritätserhöhung findet auch statt, wenn der
Prozeß sehr lange (~ 3 sec.) in der Bereitliste
war  Verhungern
• Zeitscheibe kann für Vordergrundprozesse
angepaßt werden ( Systemsteuerung)
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
11.4. Verklemmungen & Aushungern
• Verklemmung (Deadlock): zwei oder mehrere
Threads sind blockiert, weil sie Ressourcen
besitzen, die von einem anderen blockierten
Thread benötigt würden.
• Aushungern (Starvation): ein Thread ist permanent
blockiert, da er auf eine Ressource wartet, die er
nie zugeteilt bekommt.
• Verklemmungsgefährdete Ressourcen:
Drucker, Hauptspeicher, Bandstationen, ...
Beispiel: System mit drei Bandstationen
• Drei Threads verlangen erst eine Bandstation
und später noch eine zweite.
• Günstiger Verlauf, die Threads terminieren:
T1
T2
T3
r1
r2
r3
wartet auf
Bandstation
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• Ungünstig, kein Thread terminiert:
T1
T2
T3
r1
r2
r3
wartet auf
Bandstation
• Deadlock ist möglich, aber nicht zwingend.
11.4.1
Wartegraph
• Ein gerichteter Graph mit den Threads als
Knoten und Wartebeziehungen als Pfeile heißt
Wartegraph (wait-for graph).
• Eine Verklemmung ist charakterisiert durch
einen Zyklus im Wartegraphen:
T3
wartet auf
T1
wartet auf
T2
wartet auf
T1
T2
wartet auf
direkter
Deadlock
Betriebssysteme 2000, PS, VS-Informatik, Ulm
indirekter
Deadlock
Fehler! Textmarke nicht definiert.
11.4.2
Notwendige Bedingungen
• Ist eine dieser Bedingungen verletzt, so ist
keine Verklemmung möglich:
1. Die betroffene Ressource ist nicht gemeinsam
benutzbar (mutual exclusion).
2. Wartender Thread besitzt eine Ressource,
während er auf weitere wartet (hold and wait).
3. Ressourcen können einem Thread nicht
entzogen werden (no preemption).
4. Es gibt eine zirkuläre Wartesituation
(circular wait).
11.4.3
Gegenmaßnahmen
• Vorbeugen (prevention)
• Vermeiden (avoidance)
• Entdecken (detection)
• Auflösen (resolution)
• Bemerkung:
- die meisten Betriebssysteme ignorieren dieses
Problem (Unix & Windows NT)
- NT: Timeout bei „WaitForSingleObject“
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
11.4.4
Verklemmungsvorbeugung
• Restriktive Ressourcenvergabe, so dass
Verklemmung nicht auftreten können.
• Summenbelegung (preclaiming):
- sämtliche jemals benötigten Ressourcen werden
einmalig zu Beginn angefordert.
- unökonomisch & Bedarf schwer abschätzbar
• Totalfreigabe bei jeder Belegung:
- Auch hier wird eine Anforderung aus einem
„besitzlosen“ Zustand vorgenommen und somit
eine zirkuläre Wartesituation vermieden.
Thread
Belegen (r1, r2)
Freigeben (r1, r2)
Belegen (r3)
evt. zwangsweise
Freigeben (r3)
Belegen (r1, r2)
• Belegung gemäß vorgegebener Ordnung:
- Zyklen werden durch das Einhalten einer vorgegebenen Ordnung vermieden.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
- Beispiel: Ressourcen seien geordnet (r1, r2, ...)
Thread-1
Belegen (r1)
Belegen (r2)
Belegen (r3)
Belegen (r3)
Belegen (r4)
11.4.5
Thread-2
Belegen (r5)
Verklemmungsvermeidung
• Restanforderung aller Threads müssen
bekannt sein.
• im
ungünstigsten
Fall
werden
Restanforderungen gleichzeitig gestellt
alle
• könnten diese zu einem Zeitpunkt alle erfüllt
werden, so heißt die aktuelle Situation sicher,
andernfalls unsicher
• Vermeidungsverfahren vergeben Ressourcen
derart, dass niemals eine unsichere Situation
eintritt
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Beispiel: Bankier Algorithmus
• Nach E. W. Dijkstra, 1965.
Deadlock
unsicher
sicher
• Jeder Thread nennt die maximale Anzahl
Bandstationen, die er benötigt
(max[i] = Kreditrahmen).
• Jeder Thread leiht sich eine Anzahl Stationen
aus (loan[i] ≤ max[i]).
• Jeweils nur Requests für eine Station.
• Wie ein Bankier beurteilt das Betriebssystem
die Kreditwürdigkeit der einzelnen Threads
(max) und verteilt entsprechend die
Ressourcen (loans).
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Sicherer Zustand (12 Stationen):
Anleihe
Kredit
Thread A
1
4
Thread B
4
6
Thread C
5
8
Verfügbar
2
• Vergabe einer Station an B ist zulässig.
• Vergabe an A oder C ist unzulässig und führt
zu einem unsicheren Zustand:
Unsicherer Zustand (12 Stationen):
Anleihe
Kredit
Thread A
1
4
Thread B
4
6
Thread C
6
8
Verfügbar
1
• Für keinen der Threads kann Terminierung
garantiert werden.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• Hoffentlich gibt bald einer der Threads wieder
eine Einheit zurück.
Beurteilung:
• Verhinderung von Verklemmungen trotz
Bedingungen 1 bis 4
• Feste Anzahl von Benutzern und verfügbaren
Ressourcen (Defekte nicht einkalkuliert).
• Allozierung und garantierte Rückzahlung in
endlicher Zeit genügt nicht für Real-Time
Systeme.
• Threads müssen unabhängig voneinander sein
• Bedarf muß zu Beginn der Verarbeitung
angemeldet werden.
11.4.6
Verklemmungsentdeckung
• sind die Restanforderung nicht bekannt, so
kann keine Vermeidung durchgeführt werden
• der Bankier-Algorithmus kann auch hier
eingesetzt werden, wenn die Restanforderungen durch die aktuellen Anforderungen ersetzt werden
• es müssen alle Threads einbezogen werden
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• Aufruf: bei jeder Belegung, periodisch, im
Leerlauf, bei Verdacht, ...
11.4.7
Verklemmungsauflösung
• Durchbrechen einer zirkulären Wartesituation
• falls ein Entzug von Ressourcen nicht möglich
ist, so muss mindestens ein Thread
abgebrochen werden
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
11.5
Synchrone & asynchrone Anfragen
• Synchrone Anfragen:
- kehren erst nach Abschluss der Aufgabe zum
Aufrufer zurück.
- Scheduler berücksichtigt E/A-Wartezeiten
• Asynchrone Anfragen:
- kehren sofort zum Aufrufer zurück.
- Programm selbst kann E/A-Wartezeiten
berücksichtigen
- Ergebnisrückmeldung durch: Nachricht,
Completion-Routine, Event, Pollen
Aufrufer
Callback
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Request-Queue
Element
Async.
Aufruf
BS
I/O-Task
CompletionCode
Fehler! Textmarke nicht definiert.
11.5.2
Beispiel: Windows NT
• Beispiel: asynchrones Schreiben in eine Datei
void CALLBACK Compl( DWORD
dwErrorCode,
DWORD
dwWritten,
OVERLAPPED *pOverlapped.
);
int main() {
HANDLE
OVERLAPPED
char
hFile;
ov;
*data=“hello world“;
hFile = CreateFile(
"a:\\test.txt",
GENERIC_WRITE,
// write access
0, NULL,
// share mode & security
CREATE_ALWAYS,
// creation mode
FILE_ATTRIBUTE_NORMAL|
FILE_FLAG_OVERLAPPED,
NULL
// template file
);
ov.Offset
= 0;
ov.OffsetHigh = 0;
// file-pos
WriteFileEx(hFile, &data, strlen(data), &ov, &Compl);
CloseHandle(hFile);
}
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.
Synchronisierung
12.1 Lese/ Schreibkonflikt
• Wenn nebenläufige Prozesse auf gemeinsame
Variablen schreibend zugreifen, so ist das
Ergebnis nicht deterministisch:
Thread-2
Thread-1
1
2
2
t
• Synchronisierung der nebenläufigen Prozesse
macht das Resultat deterministisch:
Thread-2
Thread-1
wait()
2
signal()
1
Betriebssysteme 2000, PS, VS-Informatik, Ulm
t
1
Fehler! Textmarke nicht definiert.
12.2 Serialisierung mit Signal/Wait:
• Oft muß ein Prozess warten, bis ein anderer
Prozess einen vorgesehenen Punkt erreicht:
-
warten auf richtige Drehzahl der Platte,
warten auf vorherige DB-Transaktion,
Berechnung im Koprozessor,
nachstehendes Beispiel "Warten auf Puffer",
warten bis der Partner einen kritischen Bereich
verlassen hat …
• Wartefunktion wait(event) suspendiert den
aktuellen Prozess solange bis das Ereignis
event gemeldet wird.
• Die Funktion signal(event) meldet das
Ereignis event. Der signalisierende Prozeß
läuft ungehindert weiter.
• Ein signal-Aufruf lässt maximal einen
wartenden Prozess weiterlaufen. Wartet
keiner, so geht der Aufruf verloren.
• Mit jeder Ereignisvariablen ist auch eine
Queue für wartende Prozesse verknüpft.
• Eventuell gleichzeitig auf verschiedene
Ereignisse warten:
- WaitNextEvent( …, eventSet, …).
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.3 Producer/Consumer Problem
• Schutz eines Puffers zwischen einem Konsumenten- und einem Produzentenprozeß.
Program SignalWait; { in Concurrent Pascal }
const never = false;
var
pufferVoll, pufferLeer: Event;
puffer: Integer;
Process Producer; var outValue: Integer;
begin
repeat
wait( pufferLeer ) ;
outValue:=sqrt( TickCount );
puffer :=outValue;
signal( pufferVoll);
until never
end { Producer };
Process Consumer; var inValue: Integer;
begin
repeat
signal( pufferLeer ) ;
wait( pufferVoll );
inValue := puffer;
writeln( inValue );
until never
end { Consumer };
begin { Hauptprogramm }
parbegin { Prozesse nebenläufig }
Consumer; Producer; Producer; { Reihenfolge egal }
parend
end { SignalWait }.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
 Bei nur je einem Konsumenten und Produzenten können die Event-Variablen noch als
Boolean realisiert werden (initialisieren).
 Bei mehreren Consumern (oder Producern)
muß signal und wait jeweils durch das Betriebssystem oder durch die Hardware serialisiert werden:
-> Auf ein Signal darf nur ein Prozeß loslaufen.
-> Wait-Operationen (Q-Mgmt!) verschiedener
Prozesse müssen atomar sein.
 In unserem Beispiel kann nur ein Consumer
und ein Producer gleichzeitig laufen. Jeweils
einer der Producer ist immer blockiert.
• Prozesse zur Datenübergabe serialisieren.
 Starten paralleler/nebenläufiger Prozesse bzw.
Threads mit parbegin.
 Zusammenführen mit parend.
• Evtl. Erweiterung auf mehrere Puffer.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.4 Kritische Abschnitte
• engl. "Critical Regions".
• Programmabschnitte, die auf gemeinsame
Variablen zugreifen und deshalb einer
Synchronisierung bedürfen.
• Unterschiedliche Programmabschnitte können
dieselben Variablen nutzen.
=> Nicht der Programmabschnitt sondern das
Variablenobjekt wird geschützt.
• Fehlerhafte Lösung:
while (busyFlag) ; ->
<busyFlag=true;
count++;
busyFlag=false;
while (busyFlag) ;
busyFlag=true;
count++;
busyFlag=false;
 Die ist keine Lösung, weil "Testen & Setzen"
des Flags hier wieder nicht atomar geschieht.
• Das Schlüsselwort "synchronized" definiert in
Java einen Kritischen Abschnitt:
- einzelne Anweisung oder Anweisungsgruppe,
- statische oder dynamische Methode,
- ganze Klasse.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.4.1 Programm "Incrementer.java":
 Zwei Threads
Variablen:
incrementieren
gemeinsame
- auf dem Umweg über eine Zwischenvariable,
- Variable "asyn" ohne Synchronisierung,
- Variable "sync" mit Synchronisierung:
public class Incrementer extends Thread{
static Incrementer lnx,rxz;
static long sync=0;
static long asyn=0;
long count=1000*10000;
public static void main(String[] s){
lnx = new Incrementer();
rxz = new Incrementer();
lnx.start(); rxz.start();
}
public void run(){
long zwisch;
// force non atomic
while (count-- > 0) {
zwisch=asyn+1; asyn=zwisch;
synchronized(lnx)
{ zwisch=sync+1; sync=zwisch;};
}
System.out.println("asyn: " + asyn);
System.out.println("sync: " + sync);
}
}
 Synchronisierung ist in Java nur auf Objekte
möglich. Hier z.B. auf Objekt "lnx" - ersatz–weise
für die Variablen (asyn, sync).
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
 Ausgabe von Incrementer z.B.:
asyn: 18213815
sync: 18761335
asyn: 19452479
sync: 20000000
 Wenn eine Inkrementierung unterbrochen
wird und der andere Prozess ebenfalls inkre–
mentiert geht eine Inkrementierung verloren.
 Ausnahmsweise und je nach Last und Laune
des Betriebssystems läuft das Programm auch
ohne Verlust:
asyn: 19843320
sync: 19843320
asyn: 20000000
sync: 20000000
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.5 Atomare Maschinenoperationen
• Viele CPUs haben Test&Set-Instruktionen:
- - - -
für atomare bzw. unteilbare Bustransaktion,
lesen eines Speicherwortes,
Speicherwort schreiben:
Speicher
Bus
Prozessoren & DMA
• Unteilbare Bustransaktion:
-
reservieren des Speicherbusses,
kein Zugriff durch andere CPUs,
Cache-Konsistenz gewährleisten,
keine Interrupts an der eigenen CPU,
kein Zugriff durch DMA oder Bus-Master.
 Assembler-Fragment (hypothetisch):
locked
wait:
WORD 0
; = nicht gesperrt
......
TestSet 1
; testen und setzen
JumpH wait ; loop while high
 Bei Uniprozessoren genügt es meist, Unter–
brechungen zu unterdrücken:
- Intelx86:
CLI ............... STI.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.6 Peterson's Algorithmus
• Realisiert wechselseitigen Ausschluß nur
abgestützt auf sequentiellen Speicherzugriff:
Program Peterson;
var latest: (first,secnd);
p2Tries, p1Tries: Boolean;
Process Process1;
begin
repeat p1Tries:= true;
latest:= first;
while p2Tries and latest=first do { loop} ;
KritischeRegion1;
p1Tries:= false;
OtherStuff1
until false;
end { Process1 };
Process Process2;
begin
repeat p2Tries:= true;
latest:= secnd;
while p1Tries and latest=secnd do;
KritischeRegion2;
p2Tries:= false;
OtherStuff2
until false;
end { Process1 };
Begin p1Tries := false; p2Tries := false;
parbegin Process1; Process2 parend
end { Peterson }.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
 Fall A:
p1 kommt zuerst und p2 kommt später. p2 muss
warten bis p1 die Warnungsvariable p1Tries
freigibt.
p1Tries
latest
p2Tries
 Fall B:
p2 kommt als einziger und muss nicht warten bis
p1 die Warnungsvariable p1Tries freigibt.
p1Tries=false
latest
p2Tries
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.7 Semaphore-Variablen
sem>0
sem=0
Warteschlange
• Wartende Threads zu Sem.
• Binäre Semaphore mit Werten 0 oder 1.
• Zählende Semaphore mit Werten 0 .. n.
• Semaphore-Operationen:
-
Initialisieren:
InitSem( semVar ),
Prüfen:
P( semVar ),
"Versenden":
V( semVar ),
Originalsprache Holländisch,
vorgeschlagen durch E. Djikstra.
 P(semVar) & V(semVar) sind etwa aequivalent zu Wait(ev) & Signal(ev). Allerdings
verpuffen unerwartete Signale hier nicht.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.7.1 Beispiel mit Semaphoren
 Semaphore Variable dient hier dazu, die Anzahl Nutzer einer Resource zu beschränken:
MODULE SemaphoreBeispiel;
FROM OpSysFunc IMPORT StartProcess,
semaphore, p_sema, v_sema, init_sema;
CONST userLimit = 20;
VAR
resource: semaphore; i: integer;
PROCEDURE SomeUser;
BEGIN p_sema( resource ) ;
use_resource();
(* kritischer Abschnitt *)
v_sema( resource );
END SomeUser;
BEGIN{ Hauptprogramm }
init_sema( resource, userLimit );
for i:=1 to 30 do StartProcess( SomeUser );
END { SemaphoreBeispiel }.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.7.2 Atomare Realisierung von
Semaphoroperationen
• Semantik für P(semVar):
if semVar > 0
then semVar:=semVar-1
else { warten auf V(semVar) }
• Semantik für V(semVar):
if { kein Prozess wartet auf semVar }
then semVar:=semVar+1
else { wartenden Prozess anstossen }
 P und V als atomare bzw. unteilbare Operationen realisieren, sonst entstehen NichtDeterminismen:
 Zur Realisierung von Semaphore-Variablen
verwendet man typischerweise eine Interruptsperre
oder
besondere
Test&SetInstruktionen.
 Für den Fall von scheinbarer Nebenläufigkeit
auf einem Uniprozessor genügt es die Priorität
der P & V-Routinen soweit zu erhöhen, daß
eine Unterbrechung nicht mehr möglich ist.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.8 Monitore
• C. A. Hoare, P. B. Hansen.
• High-Level Konstrukt für Thread-Synchr.
• Serially reusable Module / Abstract D-Type:
• Die Monitor-Prozeduren garantieren:
- nur ein Prozeß jeweils im Monitor,
- Freigabe des Monitors beim Return:
Shared Resource
MonitorModul
Proc
Proc
• Im Vergleich dazu sind Semaphore etc. lowlevel Sprachelemente:
- Risiko von Programmierfehlern,
- ohne P() kein gegenseitiger Ausschluß,
- ohne V() eventuell Verklemmung.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.8.1 Incrementer-Monitor
 Beispiel in "Concurrent Pascal":
monitor Incrementer;
var zaehler: integer;
procedure PlusEins;
{ P(IncSem) implizit }
begin
zaehler:= zaehler+1
end { PlusEins };
{ V(IncSem) implizit }
procedure PlusZwei … end;
begin
zaehler := 0
end { Incrementer }.
 Die Laufzeitumgebung sorgt mit Unterstützung des Compilers dafür, daß sich nur ein
Prozeß im Monitor befindet.
 Realisiert eine geschützte kritische Region
oder auch mehrere verbundene.
 Passives Programmelement
Modula-2 Module:
ähnlich
wie
- Kapselung ("Information hiding"),
- Module-Initialisierung.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.8.2 Warten im Monitor
• Zusätzlich zum impliziten P & V auch noch
Signal & Wait in Monitoren drin erlaubt.
monitor PrintMon;
var printerBusy: Boolean;
printerFree: Condition;
procedure ReservePrinter;
begin
if printerBusy
then wait( printerFree);
printerBusy:= true
end { ReservePrinter};
procedure ReleasePrinter;
begin
printerBusy:= false;
signal( printerFree);
end { ReleasePrinter};
begin
printerBusy:= false
end { PrintMon}.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
 Warten im Monitor drin würde zur Blockierung führen. wait(<condition>) bewirkt deshalb eine Verdrängung des Prozesses nach
aussen.
• Aus didaktischen Gründen nicht einfach wait(
printerFree).
• Diskussion um verschachtelte Monitoraufrufe:
- bleiben eingekellerte Monitore blockiert?
- oder wird ein Monitor beim Aufruf des
nächsten freigegeben?
• Signal( thisCondition ) nur am Prozedurende
vereinfacht die Warteschlangenorganisation
am Monitor und an der Condition-Variablen sinngemäss:
wenn Awaited( thisCondition)
dann Resume(thisCondition)
sonst Release(thisMonitor);
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.9 Rendez-vous in Ada:
• Zusammentreffen zweier Prozesse:
-
zum ausschliesslichen Zugriff,
zur Synchronisierung,
zum Datenaustausch,
Asymmetrisch.
12.9.1 Ada-Sprachelemente:
Package - Datenkapselung, Modul
Task
- Prozessvereinbarung
Entry
- Namenseintrag für Rendez-vous
accept
- Empfangsbereitschaft für R.-vous
select
- multiple Empfangsbereitschaft.
12.9.2 Beispiel: Pufferverwaltung:
• siehe W. Laun …
package Buffer is
type El_Type is
-- Puffer-Element
…
task Buffering is
entry Send ( e: in
El_Type);
entry Receive ( e: out El_Type);
end Buffering;
end Buffer;
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
package body Buffer is;
task body Buffering is
-- limitierter Puffer mit Kapazität N
N: constant := 99;
buf: array (0..N-1) of El_Type;
first, last: Integer range 0…N-1 := 0;
count: Integer := 0;
-- Zähler für Nachrichten,
-- >0… Nachrichten warten
-- <0… Prozesse warten
begin
loop
select when count< N =>
-- es gibt Platz im Puffer
accept Send(e: in El_Type) do
buf(last) := e;
last := (last+1) mod N;
count := count + 1;
end Send;
or when count > 0 =>
-- es sind Nachrichten da
accept Receive(e: out El_Type) do
e := buf(first);
first:= (first+1) mod N;
count := count - 1;
end Receive;
else
-- no select error please!!
end select;
end loop; end Buffering; end Buffer;
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.9.3 Rendez-Vous Konzept:
 Die Bedingungen der Select-Anweisung
werden durch die Empfängertask vor dem
Eintritt in den Wartezustand ausgewertet.
 Dann sind 0 bis N der vorgesehenen AcceptEntries offen.
 Die Accept-Entries werden von fremden
Prozessen gerufen:
when ...
select
send()
Sender
receive()
Empfänger
accept
else
 Der Datenaustausch zwischen accept ... end
wird atomar ausgeführt.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.10 Message Passing
• Eine Nachricht ist eine Verallgemeinerung
eines Signales. Sie enthält neben der EreignisInformation auch noch Daten.
• Empfänger wartet auf eine Nachricht:
-> receive() anstelle von wait().
• Sender sendet eine Nachricht:
-> send() anstelle von signal().
• Typisch besonders in Verteilten Systemen:
- RPC, Remote Procedure Call,
- RMI, Remote Method Invocation,
- Socket-gestützte Kommunikation ...
• Socketkommunikation mit den Urfunktionen
("Primitives"):
- Send( SocketID, Message),
- Receive( SocketID, Message),
- Blocking/Nonblocking Send…
 Alternative zur Kommunikation über einen
gemeinsamen Speicherbereich bzw. gemeinsame Variablen.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.11 Path-Expressions:
• nach Haberman & Campbell.
• Verbot der nebenläufigen Ausführung:
path CountUp end
• Sequentielle Ablaufvorschrift:
path Prepare; DoIt; Terminate end
• Sequentielle Alternative:
path Read | Write end
• Nebenläufige Ablaufmöglichkeit:
path { Read } end
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.12 Klassische Problemstellungen
Friseur-Geschäft, "Sleeping Barber":
-
n Stühle im Laden,
Kunde setzt sich, wenn ein Stuhl frei ist,
Kunde geht weg, wenn kein Stuhl frei ist,
Friseur geht schlafen, kein Kunde da,
Friseur wird durch neuen Kunden geweckt.
Spaghetti essende Philosophen, "Dining
Philisophers":
• N Philosophen sitzen um einen Tisch und
wollen Spaghetti essen.
• Zum Essen benötigt jeder eine Gabel und einen
Löffel gleichzeitig.
• Rechts von jedem liegt abwechselnd ein Löffel
oder eine Gabel:
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.13 Koroutinen in Modula-2
• Explizit zwischen Prozeßen wechseln:
TRANSFER(VAR FromProz, ToProz: PROCESS)
IOTRANSFER(VAR Handler, Interrupted: PROCESS;
IntVec: CARDINAL)
NEWPROCESS(P: Proc;…; VAR nw: PROCESS)
MODULE ProcessMgmt;
FROM SYSTEM IMPORT
PROCESS, NEWPROCESS, TRANSFER;
FROM QueueHandling IMPORT
ProcessQ, InitQ, InsertQ, Empty, First;
VAR
Scheduler, Worker:
PROCESS;
Temp, Active, Init: PROCESS;
ReadyQ:
ProcessQ;
PROCEDURE SchedulerProc;
BEGIN
LOOP
WHILE Empty( ReadyQ ) DO { idle } END;
Active:= First( ReadyQ );
TRANSFER( Scheduler, Active);
END { LOOP }
END SchedulerProc;
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
PROCEDURE WorkerProc;
BEGIN
LOOP { Auftragsbehandlung }
…
IF … { muß warten }THEN
InsertQ( ReadyQ, Worker );
TRANSFER( Worker, Scheduler)
END
END { LOOP }
END WorkerProc;
BEGIN { Init-Block, Systemprozesse starten }
NEWPROCESS(SchedulerProc,…, Scheduler);
NEWPROCESS(WorkerProc,…, Worker);
InsertQ( ReadyQ, Worker);
{ Start eines zu verwaltenden Prozesses }
NEWPROCESS(SomeDef,…, Temp);
InsertQ( ReadyQ, Temp);
{ Aktivieren des Schedulers }
TRANSFER(Init, Scheduler);
END ProcessMgmt.
• NEWPROCESS reserviert insbesondere auch
den Speicher für den neuen Prozess.
• Modul SYSTEM importieren für Prozeßtypen.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.14 Interprozesskommunikation in Linux
• Interprozesskommunikation (IPC) in UnixSystemen umfasst:
-
Warten auf externe Signale
Steuerung nebenläufiger Prozesse,
Synchronisierung des Resourcenzugriffs,
Übergeben von Daten und Nachrichten.
 Dazu wird eine Vielfalt von Mechanismen
unterstützt:
Resource
sharing
Synchronisierung
Verbindungslose
Nachrichten
Verbindungs
orientierte
Nachrichten
im Kern
zwischen Prozessen
im Netz
DatenstrukShared Memory
turen, Puffer
Dateien
Semaphore,
Semaphore,
CLI/STI
File Locking,
(NFS Files)
Queues
Lock Datei
Signale
Unix-Domain Datagr.,
Signale,
UDP Sockets
Queues
(Named) Pipes,
Unix-Domain Streams TCP Sockets
• Der Linux Kern läuft in einem Adressraum
und im kooperativen Multitasking Modus.
Damit vereinfachen sich die IPC-Verfahren.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.14.1
Linux-Kernel wait_queue:
 Datenstruktur der Warteschlange:
struct wait_queue {
struct
task_struct
struct
wait_queue
};
*
*
task;
next;
 Einfügeprozedur:
extern inline void add_wait_queue( struct wait_queue ** p,
struct wait_queue *
wait)
{ unsigned long flags;
save_flags( flags ); /* macros for inline asm-code */
cli();
/* disable interrupts */
__add_wait_queue( p, wait );
/* einfache Q-Op. */
restore_flags( flags );
}
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.14.2
Kommunikation über Dateien
• Typischerweise wird der konkurrierende
Schreibzugriff auf Dateien durch den die
Open/Close-Routinen geregelt.
• Eventuell im Read-Only Mode öffnen.
• Beim "Open_MultipleWriter" riskiert man
Inkonsistenzen.
• Sperrung mit Lock Datei:
- "gesperrt" falls Lock Datei vorhanden.
• Sperren von Dateien mit:
int sys_fcntl( unsigned int fileDeskriptor,
unsigned int command, /* F_GETLK, ... */
struct flock * fileLock ) ;
• Datenstruktur:
FileLock
FileLock
FileLock
FileDeskriptor
• FileLock:
- Lesesperre, Schreibsperre, Dateibereich, PID.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.14.3
Kommunikation über Pipes
• Klassische IPC Methode unter Unix.
• Implizite Erzeugung einer anonymen Pipe
mit der Befehlszeile:
% ls -l | more
• Nutzung einer benannten Pipe (named pipe)
mit Befehlszeilen:
% mkfifo nmPip
% ls -l >nmPip & more <nmPip
• Lesen und Schreiben auf eine benannte Pipe
wie auf eine Datei.
• Zusätzlich jedoch mehrfache Leser und
Schreiber möglich:
named pipe
writers
Betriebssysteme 2000, PS, VS-Informatik, Ulm
readers
Fehler! Textmarke nicht definiert.
12.14.4 Semaphore & Msgs in Unix
System V
 Erweiterung der traditionellen Semaphore und
Message-Queue Funktionen.
 Semaphore:
-
Authorisierung,
Array-Operationen auf Semaphore,
Auf Wunsch Undo-Blöcke anlegen,
Die Undo-Blöcke hängen am Prozess,
Increment und Dekrement um mehr als 1.
 Message-Queues:
-
Authorisierung,
Q für wartende Leser,
Q für wartende Schreiber,
Zeitstempel und Statistikinfo,
Empfangen von Nachrichten eines Typs,
generische Typkennung als long Variable.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
12.14.5 Gemeinsamer Speicher
 Schnellste Form der IPC.
 Gefahr von Wettbewerbssituationen (Races).
 Beim Zugriff evtl. Ausschluss von Interrupts
und von fremden CPUs erforderlich
(Synchronisierung).
 Nutzung der Adressübersetzungseinrichtung
(MMU, Virtueller Speicher):
logischer
Speicher
logischer
Speicher
Prozeß 1
Prozeß 2
RealSpeicher
 Shared Memory Routinen:
Shared_Memory_Get:
Shared_Memory_Attach:
Betriebssysteme 2000, PS, VS-Informatik, Ulm
sys_shmget( ... )
sys_shmat( ... )
Fehler! Textmarke nicht definiert.
13.
Virtueller Speicher
13.1 Grundprinzip
• Scheinbare Hauptspeicher-Vergrösserung.
• Selten benötigte Speicherbereiche auslagern.
• Seitenfehler führt zu einer Unterbrechung.
• Seiten im logischen Adressraum abbilden auf
physikalische Kacheln im Hauptspeicher.
13.1.1 Einfach virtualisierter Speicher:
• Mehrere Programme teilen sich einen
virtuellen Adressraum:
Hintergrundspeicher
Progr. 2
Logischer AR
System
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Adressübersetzung
Progr. 1
Physikalischer AR
Fehler! Textmarke nicht definiert.
13.1.2 Mehrfach virtualisierter Speicher:
Adressübersetzung
System
Progr. 1
Progr. 2
Hintergrundspeicher
Physikalischer AR
• Jedes Programm besitzt einen eigenen
virtuellen Adressraum.
• Die Adressübersetzungstabelle muss beim
Prozesswechsel umgeschaltet werden.
• Teile des Betriebssystemadressraumes auch
für die Anwendungsprogramme zugreifbar.
• MMU = Memory Management Unit,
Hardwareeinrichtung zur Adressübersetzung.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
13.2 Adressübersetzung
13.2.1 Einstufiger Übersetzungsvorgang
• Abbildungsprinzip.
• z.B. 20 Bit virtuelle Adresse, 4 KByte Seiten.
virtuelle Adresse
20
Seitentabellen-Index
12
Offset
Seitentabelle
reale Adresse
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
13.2.2 Mehrstufige Adressübersetzung
• Eine Übersetzungstabelle pro Prozeß.
• Adresskontext umschalten.
virtuelle Adresse
8
6
6
12
Offset
Kontextregister
Kontexttabelle
Ebene 3
Ebene 2
Ebene 1
Seitentabellen
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
13.2.3 Typisches Format eines
Tabelleneintrages (Intel Pentium) :
Page Frame/Kachel-Adresse
20
Avail
Avail
12
Nutzbar für Betriebssystem
00
12
dirty
accessed
PCD
PWT
U/S
W/R
P
beschrieben
Use-Bit
Seite hat Cache Disabled
Cache durchschreiben
User Seite, nicht Supervisor
Seite beschreibbar
Präsenz Bit, Seite vorhanden
 Kacheladresse nur gültig, wenn die Seite im
Speicher vorhanden ist.
 Auffinden der Seite im Sekundärspeicher.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
13.2.4 Uebersetzungspuffer (TLB)
• TLB = "Translation Lookaside Buffer".
• Puffert schon früher übersetzte Adressen.
• Falls kein Treffer im TLB erfolgt, wird
hardwaremässig auf die Seitentabellen im
Hauptspeicher zugegriffen.
• Hohe Trefferrate (Hit ratio) wichtig.
• Cache benützt nur physikalische Adressen:
- nicht sichtbar für die Software !
- mit physikalischer Adresse -> Eindeutigkeit:
virtuelle
Adresse
TLB
Seitentabellen
Betriebssystem
physikalische
Adresse
Cache
HauptSpeicher
Daten
• TLB u.U. Löschen beim Prozesswechsel
(besondere Instr.).
• Einzelner Eintrag löschen beim Einlagern von
Seiten.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• Assoziativer Speicher (ähnlich einem Cache).
- direkt indexiert (mapped) oder voll assoziativ:
virtuelle Adresse
7
Kacheladdresse
27
Kacheladdresse
20
virtuelle Adresse
- oder 2 Wege Set-assoziativ.
virtuelle Adresse
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Kacheladdr.
6
Kacheladdr.
21
Fehler! Textmarke nicht definiert.
13.2.5 Invertierte Seitentabellen
• Für sehr grosse virtuelle Adressenbereiche.
• CPUs mit 64-Bit Adressen:
-
R3000,
Pagetable-Fragmentierung,
Sun Sparc,
DEC Alpha-,
Intel Mesced ...
• 64-Bit Adressraum:
18
~ 18 * 10 Byte,
15
~ 4 * 10 logische Seiten à 4 K,
.
~ 16 000 Terabyte nur für Seitentabellen.
• Besser ein Eintrag pro physikalische Kachel
als ein Eintrag pro logischer Seite.
• Parallele Suche in grossem TLB.
• Bei Fehlanzeige im TLB:
-
Firmware aufrufen,
oder OS via Interrupt aufrufen
über Hashtabelle zur physikalischen Adresse,
Hashtabelle aktualisieren.
• Bei Fehlanzeige in der Hashtabelle:
-
sekundäre Seitentabelle konsultieren,
evtl. Tabellen und Seiten auf Platte,
Hashtabelle aktualisieren,
Seite einlagern.
• Neue MMU für 64-Bit Intel-Architektur.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
13.3 Ersetzungsalgorithmen
13.3.1 Optimale Seitenersetzung:
 Ersetze die am längsten
referenzierte Speicherseite.
nicht
mehr
• Zeitliche Folge der Seitenzugriffe ist für
einzelne Programme im Prinzip bestimmbar:
- unabhängig von der phys. Speichergrösse,
- aber leider nur a posteriori bestimmbar.
• "Distance strings" für die Speicherseiten:
a
b
c
d
c
a
e
d
b c
a
auslagern
Seitenfehler für Seite D
• Damit ergibt sich die Einlagerungsfolge für
bestimmte Anzahlen physikalisch
vorhandener Kacheln (hier 3).
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
13.3.2 Not recently used (NRU):
 Flags in der Seitentabelle:
- USE-Bit falls die Seite referenziert wurde,
- DIRTY-Bit falls die Seite verändert wurde.
 USE-Bit periodisch zurücksetzen (~16 ms).
 Auslagerung nach Klassen:
A:
B:
C:
D:
USE-Bit = false, Seite unverändert
USE-Bit = false, Seite verändert
USE-Bit = true, Seite unverändert
USE-Bit = true, Seite verändert
 Fall B beschreibt eine Seite die in einem
früheren Intervall verändert wurde und noch.
zurückgeschrieben werden muss.
 Auslagerungspriorität: A > B > C > D
13.3.3 First-in, First-out (FiFo).
• Einfache Liste der eingelagerten Seiten.
• Die am längsten residente Seite wird ersetzt.
• Nachteil:
- Auch häufig genutzte Seiten werden entfernt.
- ungünstig bei zyklischen Zugriffsmustern.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
13.3.4 Verfahren des zweiten Versuches:
• "Second chance page replacement algorithm".
2nd Chance
a
b
used
used
alte Seiten
c
unused
a
unused
d
e
used
used
neue Seiten
auslagern
• Falls USE-Bit gelöscht, dann Seite auslagern.
• Falls USE-Bit gesetzt:
- Bit zurücksetzen,
- Seite hinten erneut einordnen,
- eventuell mit neuem Zeitstempel.
• Verwaltungsaufwand für die Liste.
• Verbesserung von FiFo.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
13.3.5 Uhrzeigerverfahren
• Ähnlich wie Verfahren des zweiten Versuchs:
i
unused
j
unused
k
unused
h
unused
l
unused
g
used
a
used
f
used
b
used
e
used
d
used
c
unused
• Ringliste der Speicherseiten absuchen.
• Einen Zeiger im Ring umlaufen lassen.
• Falls Read-Bit gelöscht, dann Seite auslagern.
• Falls Read-Bit gesetzt, zurücksetzen.
• Eventuell mehr als zwei Chancen.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
13.3.6 Least recently used (LRU)
 Am längsten unbenutzte Seite auslagern.
 Theoretischer Ansatz:
- nur in Hardware realisierbar,
- 64 Bit Zeitstempel in Kacheltabelle halten,
- Zeitpunkt des letzten Zugriffs eintragen,
- bei jedem Seitenfehler durchsuchen,
->
kostspieliger Ansatz.
 Realisierung von LRU mit N*N Matrix:
-
N physikalische Kacheln,
N-Bit Vektor pro Kachel,
beim Zugriff auf Kachel K Bitvektor[K]:=1,
und in allen Bitvektoren Bit[K] := 0,
der älteste Bitvektor ist null ...
Beispiel mit Anzahl der Kacheln K = 4,
Referenzstring: 0 1 2 3 2 1 0 3 2 3
0
1
2
3
012
011
000
000
000
3
1
0
0
0
0
1
2
3
012
000
101
100
100
3
0
1
1
0
0
1
2
3
0123
0011
1011
0000
0000
0
1
2
3
0123
0111
0011
0001
0000
Betriebssysteme 2000, PS, VS-Informatik, Ulm
0
1
2
3
0123
0101
1001
1101
0000
0
1
2
3
0123
0110
0010
0000
1110
0
1
2
3
0123
0000
1000
1100
1110
0
1
2
3
0123
0100
0000
1101
1100
0
1
2
3
0
0
1
1
1
123
000
000
101
100
0
1
2
3
0
0
0
1
1
123
100
000
100
110
Fehler! Textmarke nicht definiert.
 LRU-Simulation in Software:
- pro Kachel ein Zähler,
- periodisch werden die Zähler gealtert,
- Kachel mit niedrigstem Zähler auslagern.
 Arbeitsweise des Zählers:
- USE-Bit links aufaddieren,
- eine Binärstelle nach rechts schieben:
5 Intervalle à z.B. 20 msec
10000000
11000000
11100000
11110000
01111000
00000000
10000000
11000000
01100000
10110000
10000000
01000000
00100000
00010000
10001000
00000000
00000000
10000000
01000000
00100000
10000000
11000000
01100000
10110000
01011000
10000000
01000000
10100000
01010000
00101000
101011
110010
110101
100010
011000
USE-Bits [ 0 .. 5 ]
 Darstellungen entlehnt aus:
 Tanenbaum: "Modern Operating Systems"
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
13.3.7 Segmentierung in Intel Prozessoren
Segmentselektor
virtuelle
Adresse
GDTR LDTR
Lokale
Deskriptortabelle
Globale
Deskriptortabelle
SEGMENTIERUNG
 Segmentierung und Paging kombinierbar:
PAGING
lineare
Adresse
CR3
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Page
Directory
Page
Table
physikalische
Adresse
Fehler! Textmarke nicht definiert.
13.3.8 Intel Arbeitsregister ab i386
 Für Anwendungsprogramme zugänglich,
 Arbeitsregister verknüpft mit bestimmtem
Segmentregister, aber umsteuerbar.
 Funktionsbezogene Arbeitsregister:
Stack, Code,
Daten, Extra-Daten,
Flags (mit IO-Privilege Level).
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
13.3.9 Intel Steuer- & Kontrollregister
 Verwendung:
Erweiterte Adressierung im Protected Mode,
Zugriffsschutz & Maschinenzustand
Prozessorsteuerung (Control [0..3]).
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
 Segmentregister bzw. -selektor hält Index in
die globale oder die lokale
Deskkriptortabelle.
 Gleichzeitig mit dem Segmentregister wird
implizit der Segmentdeskriptorcache geladen.
 Dabei geschehen unter Umständen mehrere
Hauptspeicherzugriffe.
 Auch für das aktuelle Task-State Segment
und die lokale Deskriptortabelle werden
Deskrip-toren gepuffert (cached).
 Selektorregister TSSX und LDTX lesbar.
 4(5) Kontrollregister:
CR0 PG
CR1
CR2
CR3
CR4
......
TS, EM, MP, PE
reserviert
Lin. Pagefault-Adresse
PageDirectory Adr.
CPU Erweiterungen
 CR0:
Paging, Taskswitch, Coproc., Protected Mode.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
13.3.10
Segmentdeskriptoren
 Die Originaldeskriptoren liegen in der lokalen
oder der globalen Deskriptortabelle.
 Segmentdeskriptorcaches unsichtbar in CPU.
 Potential für einen segmentierten virtuellen
Speicher ohne Seiteneinteilung:
für jedes Objekt einen Segmentdeskriptor,
anstatt eines Zeigers nur Segment-Selektor,
gleichzeitig 8000 lokale & 8000 globale D.
evtl. Segment-Deskriptoren in LDT und GDT ein& auslagern und Selektoren ergänzen.
 Schutzfunktion bei Segmentierung:
Zugriffsmodus (exec, read, write ),
Protection Level ( 0..3)=(privileged .. non-priv.)
Feldlänge im Deskriptor.
Die Segmentregister arbeiten im Protected
Mode als 16 Bit Segmentselektoren:
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
13.3.11
Formate von Segmentdeskriptoren
 Deskriptor für Applikationssegmente:
 "Historium" aus der Intel 286 Architektur.
 Granularität der Basis: 1 Byte / 4K Page.
 32 Bit oder 16 Bit Instruktionen & Adressen.
 Beim Zugriff auf ein ausgelagertes Segment
erfolgt ein Interrupt an das Betriebssystem.
 Nur Deskriptoren mit gleicher oder
niedrigerer Sicherheitsstufe dürfen geladen
werden (CS).
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
13.3.12
Applikationssegment ( DT=True).
Kennung für Applikationssegemente
 Bit#11=true (EXE-Bit):
Codesegment, darf ausgeführt werden,
darf auch gelesen werden, falls Bit9=true (W/R),
falls Bit#10=true (conforming), ist Ausführung
durch ein unterprivilegiertes Segment gestattet.
 Bit#11=false (EXE-Bit):
Datensegment, darf nicht ausgeführt werden,
darf geschrieben werden, falls Bit9=true (W/R),
 falls Bit#10=true (abwärts), erstreckt sich das
Segment von Basisadresse nach unten
(Stack).
 Bit#8=true (Access-Bit):
dieses Segment wurde benützt,
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
nützlich für die Speicherauslagerungsstrategie.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
13.3.13
Intel386 System-Segmente
 Haben das DT-Bit gelöscht.
 Call-Gate Deskriptor (Typ = 12):
beschreibt den Einsprung in geschützte Routine,
normalerweise in anderem Segment (far call),
referenziert einen weiteres Segmentdeskriptor,
ändert kurzzeitig die Privilegierungsebene,
übernimmt bis zu 128 Parameterbytes:
 Interrupt- & Trap-Gate Deskr. (Typ = 14/15):
Beschreibt den Einsprung in Interruptroutine,
8 Byte Einträge in Interrupt-Deskriptortabelle,
IDT-Basis/Limit geladen über LIDT-Instruktion,
 Trap-Gate Deskriptoren (Typ = 15) arbeiten
ähnlich, jedoch ohne Interrupts zu maskieren:

Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
LDT Segmentdeskriptor (Typ = 2):
kann nur in der Globalen Deskriptortabelle liegen,
wird durch eine LLDT-Instruktion geladen,
beschreibt eine Lokale Deskriptortabelle,
Format wie Applikationsdeskriptor.
 Task-Gate Deskriptor (Typ = 5):
referenziert ein Task-State Segment (TSS),
evtl. mehrere Task-Gates für ein TSS,
enthält Privilegierungsstufe:
 Task-Switch falls:
laden von Selektor für Task-Gate oder TSS,
i.e. Call- oder Jump-Instruktion,
Interrupt oder Exception,
IRET v. nested Task.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
 Task-State Segment Deskriptor (Typ = 9/11):
Enthält aktuellen/geretteten Prozessorzustand
(TSS),
Segmentselektor für lokale Deskriptortabelle,
Basisadresse für Seitentabellendirectory,
Stacks der Privilegierungstufen 0,1,2,
aktuell sichttbare Prozessorregister,
Zugriffsmaske für die E/A-Ports,
Link zum vorherigen Tasksegm.,
aktives TSS mit Typ=11,
Nested-Task Flag.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
13.3.14
Zugriffsschutz-Mechanismen
 Zugang über Gate-Deskriptoren.
 Vier Privilegierungsebenen:
3:
2:
1:
0:
Anwendungsprogramme,
Laufzeitumgebungen, GUI ...
Gerätetreiber,
Kernel.
0
1
2
3
Privilegierungscode:
CPL im aktuellen Codesegment,
RPL im Selektorargument,
DPL im Deskriptor,
IOPL in Flags.
 Zur privilegierteren Ebene nur über ein Gate:
Call, Trap, Interrupt, Task, TSS,
Ausnahme: Conforming Deskriptors.
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
14.
Sicherheitsaspekte
14.1
Einleitung
• Motivation:
- Schutz vor Fehlern
- Schutz vor Eindringlingen
• Objekt: passive Ressource (z.B. Datei)
• Subjekt: aktive Einheiten (Proz. & Benutzer)
• Sicherheit: Fähigkeit eines BS, für seine Obj.
Vertraulichkeit & Integrität zu garantieren.
• Orange Book (DoD) definiert Klassen für die
Sicherheit von Computersystemen:
-
A: Verified Design
B3: Security Domains
B2: Structured Protection
B1: Labeled Security Protection
C2: Controlled Access Protection
C1: Discretionary Security Protection
D: Minimal Protection
A, B3, B2, B1, C2, C1, D
sicher  unsicher
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
14.2
Zugriffskontrolle
Zugriffsmatrix
• Zuordnung von Benutzerrechten und Objekten
in einer Matrix:
Objekte
Subjekte
1
2
A
R
RW
B
R
C
R
D
R
3
4
5
6
RW
RWX
R
X
R
• Probleme:
- Matrix nur dünn besetzt,
- Einträge sind sehr dynamisch.
• Alternativen:
- Zugriffskontrollisten (access control lists)
- Berechtigungslisten (capability lists)
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Zugriffskontrollisten
• Speicherung & Verarbeitung nach Spalten
• Sicherheitsmanager prüft Berechtigung
eines Subjektes bei Zugriff auf ein Objekt
• verwendet in Windows NT/2000 und Unix
• Bewertung:
Objekt 6
+ Überblick beim Objekt
+ Rechte leicht widerrufbar
- Delegation umständlich
A
D
RW
R
Beispiel: Windows NT
• arbeitet mir Zugriffskontrollisten
• Sicherheitstoken besteht aus 128-Bit IDs
Sicherheits-ID: Mayer
Gruppen-IDs: Team1
Team2
Objekt
SicherheitsDeskriptor
Zugriffskontrolliste
Mayer
lesen
Team1
schreiben
Berechtigungslisten
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
• Speicherung & Verarbeitung nach Zeilen
• beim Zugriff auf ein Objekt muß das
Subjekt die passende Berechtigung
vorweisen
• Berechtigungen müssen geschützt werden
• verwendet in Forschung (z.B. Hydra)
• Bewertung:
+ kompletter Überblick beim Subjekt
+ Delegation einfach
Subjekt A
- schwierig widerrufbar
- erfordern extra Schutz
1
R
2
3
Betriebssysteme 2000, PS, VS-Informatik, Ulm
RW
RW
Fehler! Textmarke nicht definiert.
14.2
Supervisor Betriebsmodus
• HW-Unterstützung zur Unterscheidung
zwischen User- und Supervisor-Modus
• zusätzliches Mode-Bit in Hardware:
- 0: supervisor-mode
- 1: user-mode
• im Fall eines Traps oder Interrupts wird das
Mode-Bit gelöscht
• wenn das BS die Kontrolle an das
Programm abgibt, wird Bit wieder gesetzt
• privilegierte Befehle dürfen nur im
Supervisor-Modus ausgeführt werden
• ggf. wird ein Trap ausgelöst
• Systemaufrufe mittels Supervisor-Call
(z.B. SVC bei MVS)
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
14.3
Isolation der Adreßräume
• getrennte Adreßräume durch:
- Segmentierung,
- mehrfach virtualisierten Speicher.
• Beispiel: Windows NT
-
Kernel- und User-Mode
pro Prozeß jeweils 2 GB virt. Speicher
Kernel-Mode Speicher gemeinsam genutzt
Komm. Kernel- und User-Mode umständlich
4 GB
System
(2GB)
2 GB
Benutzer
(2GB)
0
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
14.4
Protection Ringe
• hierarchischer Mechanismus mit Ringen
• 64 Ringe in MULTICS in den 60er Jahren
• 20 Jahre später Intel i386 mit 4 Ringen
0
1
2
3
• Privilegierungscode:
-
CPL im aktuellen Codesegment,
RPL im Selektorargument,
DPL im Deskriptor,
IOPL in Flags.
• zur privilegierteren Ebene nur über ein Gate:
Call, Trap, Interrupt, Task
Betriebssysteme 2000, PS, VS-Informatik, Ulm
Fehler! Textmarke nicht definiert.
Herunterladen