Modul: Programmierung (B-PRG) Grundlagen der Programmierung 1 Teil 3 Betriebssystemschichten und virtuelle Maschinen Prof. Dr. R. Brause Adaptive Systemarchitektur Institut für Informatik Fachbereich Informatik und Mathematik (12) Übersicht Betriebssysteme, Schichten und virtuelle Maschinen Prozesse, Nebenläufigkeit Synchronisierung, Kommunikation, nicht-seq. Programmierung Dateioperationen, Dateisysteme Sicherheit und Schutzmechanismen Folie 2 1
Einführung DEF: Was ist ein Betriebssystem?? die Gesamtheit der Programmteile, die die Benutzung von Betriebsmitteln steuern und verwalten? die Software (Programmteile), die für den Betrieb eines Rechners anwendungsunabhängig notwendig ist Folie 3 Betriebssystemaufbau Benutzungsrelationen Benutzer benutzt Benutzerprogramm benutzt Betriebssystem benutzt Maschinenhardware Folie 4 2
Betriebssystemaufbau Betriebssystemschichten Schichtenmodell Zwiebelschalenmodell User 1 User 2 User 3 Compiler Editor... Spiele Betriebssystemdienste Hardware HW Aspekte Paralleler Zugriff Sequentieller Aufruf Abgeschlossenheit Sichtbarkeit Folie 5 Typischer Betriebssystemaufbau Benutzer 1 Benutzer N Benutzeroberfläche User Interface Management System Anwendung 1 Dienstprogramm Werkzeug Betriebssystemkern Operating System Kernel Hardware Systemaufruf Maschinencode Folie 6 3
UNIX-Betriebssystemkern Multi-User Überprüfbare Schnittstelle und Funktionsverteilung Speicherverwaltung Prozess- Serielle Ein/Ausgabe Dateisystem Display Floppy Netz manage- Platte TTY Drucker Maus ment Multi- programming user mode kernel mode Benutzer- Shell 1 Benutzer- Programm 1 Benutzer- Shell 2 System- Programm 1 System- Programm 2 Hardware Implementierungsunabhängige Schnittstellen: Portable Operating System Interface based on UniX Benutzungs oberfläche Folie 7 Windows NT - Anforderungen kompatibel zu vorhandenen Systemen Unix, DOS,.. zuverlässig und robust leicht übertragbar auf andere CPUs (Portierbarkeit) leicht veränderbar und anpassungsfähig leistungsstark Geht das überhaupt? Folie 8 4
Windows NT - Betriebssystemkern Idee: Zwischenschichten (e) einführen user mode kernel mode Logon LPC Object Manager Security Process Manager Win/DOS Client Win32 POSIX Systemdienste Local Memory Proc. Calls Manager Kernel services POSIX Client Hardware Abstraction Layer HAL Hardware SysCall Security Monitor OS/2 OS/2 Client I/O System Win NT 3.1, Win NT4.0, Windows 2000, Windows XP, Vista Version 3.1 4.0 5.0 5.1 6.0 Folie 9 Windows NT - Lösungen Kompatibilität pro emuliertes BS ein extra (Server), von Kunden (Clients) durch Nachrichten (local procedure calls LPC) angefordert. Sie setzen auf Dienstleistungen der NT Executive (system calls) auf. Robustheit Trennung der Programm-Ablaufumgebungen (virt. Maschinen) kein direkter Hardwarezugriff, fehlertolerantes Dateisystem, Netzdienste Portierbarkeit In C geschriebene Module, auf Hardwaremodell aufsetzend Folie 10 5
BS-Schnittstellen Schnittstellen in Python Python OS-Modul: Prozessoperationen exec*(...) Sofortiges Ausführen eines Programms; das jetzige wird nach dessen Start abgebrochen. * = l, le, lp, lpe feste Parameterzahl, e=envir, p=use path in e = v, ve, vp, vpe variable Parameterzahl pid = fork() Prozesserzeugung durch Kopie, Eltern: pid=0 (Unix) sys.exit(n) Abbruch des Prozesses. _exit(n) für fork() n = Ergebniscode spawn*(...) Sofortiges Ausführen eines Programms; das jetzige läuft nach dessen Start weiter. * = l, le, lp, lpe feste Parameterzahl, e=envir, p=use path in e = v, ve, vp, vpe variable Parameterzahl Folie 12 6
Python OS-Modul: Prozess-Parameter getlogin Benutzername uname(sysname, nodename, release, version, machine) Alles über die Maschine environ, getenv, Arbeitsumgebung: putenv Definition der Variablennamen fchdir(fd), chdir(path), Arbeitsordner-Pfadnamen cwd get, set : uid Benutzer ID des Prozesses gid, pgid(pid), pgrp, groups Gruppen IDs des Prozesses pid, ppid Eltern ID des Prozesses umask (mask) Erzeugermaske des Prozesses Folie 13 Python OS-Modul: Dateioperationen fdopen read,write close popen - Erzeugen oder Öffnen von Dateien - Lesen und Schreiben auf Dateien - Schliessen von Dateien - Aufsetzen von pipes remove, rename - Löschen oder Umbenennen von Dateien chmod, chown - Lesen und Setzen von Zugriffsrechten von Dateien access - Test auf Zugriffsrechte an Dateien oder Pfade listdir, mkdir, - Auslesen, Erzeugen,Löschen von Ordnern rmdir Folie 14 7
Python Betriebssystem-nahe Module platform Identifikation des benutzten Betriebssystems locale, gettext lokale bzw. nationale Besonderheiten curses mutex Ansteuerung der blinkenden Bildschirmmarke Objekte zum gegenseitigen Ausschluss time, datetime Abfrage und Konversion der Zeit stat Typ einer Datei (file, pipe, special device, link, directory, socket) getpass getopt shutil Einlesen des Passworts Einlesen und parsing der übergebenen Parameter höhere Dateioperationen wie Kopieren, Verschieben oder Löschen eines ganzen Dateibaums. Folie 15 Schnittstellen und Virtuelle Maschinen 8
Schnittstelle : Beispiel Rechteck zeichnen, Länge dx, Breite dy DrawRectangle(float dx,dy) Methode: DrawRectangle Daten: float dx,dy Protokoll: zuerst Modul Grafik initialisieren dann Skalierung setzen dann Bezugspunkt setzen schließlich Rechteck zeichnen. benutzt die Methode drawline mit den Daten x0,y0,x1,y1 Folie 17 Schnittstellen : Verallgemeinerung Eine Schnittstelle besteht aus Daten sowie Funktionen bzw. Methoden dafür (Objekte) Protokolle für die Benutzung der Funktionen und Daten, mit denen das Objekt Dienstleistungen erbringt (Exportschnittstelle) Die Implementierung benötigt dazu Daten, Funktionen und Protokolle für die Dienstleistungen, die sie zur Erfüllung benötigt (Importschnittstelle). Folie 18 9
Schnittstellen & Abstrakte Datentypen Abstrakter Datentyp = Zugriff auf Daten nur über definierte Funktionen (Kapselung) Methode1(.) Methode2(.) Attribut A code Daten Objekt Schnittstelle des ADT = Zugriff + Reihenfolge des Zugriffs = Funktionen + Protokoll Folie 19 Schnittstellen & Abstrakte Datentypen Abstrakter Datentyp = Zugriff auf Daten nur über definierte Funktionen (Kapselung) Methode1(.) Methode2(.) Attribut A code Kapselung Daten information hiding Objekt Schnittstelle des ADT = Zugriff + Reihenfolge des Zugriffs = Funktionen + Protokoll Folie 20 10
Schnittstellen: Export & Import Export/ Import ist relativ bzgl. einer Sicht! Export Modul 1 Import Import Modul 2 Export Folie 21 Abstrakte und Virtuelle Maschinen (x1,y1) Beispiel: Zeichne ein Rechteck (x0,y0) DrawRectangle(x0,y0,x1,y1) Virtuelle Maschine Abstrakte Maschine DrawRectangle(x0,y0,x1,y1) Graphic Processor Unit (GPU) Display(RAM) DrawRectangle(x0,y0,x1,y1) V1 DrawLine(x0,y0,x1,y0) DrawLine(x1,y0,x1,y1) DrawLine(x1,y1,x0,y1) DrawLine(x0,y1,x0,y0) SetPoint(x0,y0,black) SetPoint(x0+dx,y0,black) Display(RAM) Maschine 1 Maschine 2 V2 V3 V4 Folie 22 11
Abstrakte und Virtuelle Maschinen Beispiel Waschmaschine Benutzungsoberfläche Controller Schichtenmodell: Abstrakte Maschine: Schnittstellen, nur Zugang geregelt virtuelle Maschine Implementation ist verborgen reelle Maschine Motor, Druckventile, Temperatursensoren, Heizungen, Pumpen Folie 23 Windows NT - Betriebssystemkern Idee: virtuelle Maschinen einführen Logon Security Win/DOS Client Win32 POSIX POSIX Client OS/2 OS/2 Client user mode kernel mode LPC Systemdienste SysCall Folie 24 12
Virtuelle Maschinen Schichtenabstraktion Schicht 3 Zeit Schicht 2 Schicht 1 Folie 25 Beispiel: virtuelle CPU Software-Hardware-Migration bei virt. CPU Konfiguration 1 Konfiguration 2 Programm in Java-Code Java-Code / Maschinencode CPU- Hardware Programm in Java-Code Microcodeund CPU-Hardware Vorteile Programm muss bei HW-Wechsel nicht geändert werden Unabh. HW-Entwicklung je nach Kundenwunsch Folie 26 13
Virtuelle, logische, physikalische Geräte Beispiel: virtueller Festplattenspeicher Kontrolle Daten logische Geräte = physikalische Geräte + HW-Treiber. virtuelle Geräte = logische Geräte +Verwaltungstreiber storage management Treiber für log. Geräte log. Gerät 1 log. Gerät 2 Treiber 1 Treiber 2 phys. Gerät 1 phys. Gerät 2 Virtuelles Gerät Blockaggregation Folie 27 Beispiel: Virtueller Massenspeicher Storage Area Network SAN LAN Anfrage asym. Pooling metadata server Ortsinfo Block I/O Lun 2 file server NAS Network Attached Storage S A N Folie 28 14