Modul: Programmierung (B(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 Grundlagen der Programmierung 1 - Teil 3 R.Brause: Betriebssysteme Übersicht 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 Grundlagen der Programmierung 1 - Teil 3 R.Brause: Betriebssysteme Übersicht Folie 3 Betriebssystemaufbau Benutzungsrelationen Benutzer benutzt Benutzerprogramm benutzt Betriebssystem benutzt Maschinenhardware Grundlagen der Programmierung 1 - Teil 3 R.Brause: Betriebssysteme Übersicht Folie 4 2 Betriebssystemaufbau Betriebssystemschichten Zwiebelschalenmodell Schichtenmodell User 1 User 2 User 3 Compiler Editor ... Spiele Betriebssystemdienste Hardware HW Aspekte • Abgeschlossenheit • Sichtbarkeit • Paralleler Zugriff • Sequentieller Aufruf Grundlagen der Programmierung 1 - Teil 3 Folie 5 R.Brause: Betriebssysteme Übersicht Typischer Betriebssystemaufbau Benutzer 1 … Benutzer N Benutzeroberfläche User Interface Management System Anwendung 1 Dienstprogramm … Werkzeug Systemaufruf Betriebssystemkern Operating System Kernel Maschinencode Hardware Grundlagen der Programmierung 1 - Teil 3 R.Brause: Betriebssysteme Übersicht Folie 6 3 UNIX-Betriebssystemkern MultiMulti-User MultiMultiprogramming user mode kernel mode BenutzerShell 1 BenutzerShell 2 BenutzerProgramm 1 SystemProgramm 1 … SystemProgramm 2 Benutzungs oberfläche … Überprüfbare Schnittstelle und Funktionsverteilung SpeicherSerielle Ein/Ausgabe Dateisystem verwaltung ProzessDisPlatte manageTTY Drucker Maus Netz play Floppy ment Hardware Implementierungsunabhängige Schnittstellen: Portable Operating System Interface based on UniX X Grundlagen der Programmierung 1 - Teil 3 R.Brause: Betriebssysteme Übersicht 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 ? Grundlagen der Programmierung 1 - Teil 3 R.Brause: Betriebssysteme Übersicht Folie 8 4 Windows NT - Betriebssystemkern Idee: Zwischenschichten (Subsysteme) einführen Logon Security Win/DOS SubsysClient tem Win32 POSIX POSIX OS/2 OS/2 Subsys- Subsys- Client Subsys- Client tem tem tem LPC user mode kernel mode SysCall Object Manager Process Manager Systemdienste Local Memory Proc. Calls Manager Kernel services Hardware Abstraction Layer Hardware Security Monitor I/O System HAL Win NT 3.1, Win NT4.0, Windows 2000, Windows XP, Vista Version 3.1 4.0 5.0 5.1 6.0 Grundlagen der Programmierung 1 - Teil 3 R.Brause: Betriebssysteme Übersicht Folie 9 Windows NT - Lösungen Kompatibilität pro emuliertes BS ein extra Subsystem (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 Grundlagen der Programmierung 1 - Teil 3 R.Brause: Betriebssysteme Übersicht Folie 10 5 BS-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 Grundlagen der Programmierung 1 - Teil 3 R.Brause: Betriebssysteme Übersicht 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 Grundlagen der Programmierung 1 - Teil 3 R.Brause: Betriebssysteme Übersicht Folie 13 Python OS-Modul: Dateioperationen fdopen - Erzeugen oder Öffnen von Dateien read,write - Lesen und Schreiben auf Dateien close - Schliessen von Dateien popen - Aufsetzen von pipes remove, rename - Löschen oder Umbenennen von Dateien chmod, chown access - Lesen und Setzen von Zugriffsrechten von Dateien - Test auf Zugriffsrechte an Dateien oder Pfade listdir, mkdir, - Auslesen, Erzeugen,Löschen von Ordnern rmdir Grundlagen der Programmierung 1 - Teil 3 R.Brause: Betriebssysteme Übersicht Folie 14 7 Python Betriebssystem-nahe Module platform – Identifikation des benutzten Betriebssystems locale, gettext – lokale bzw. nationale Besonderheiten curses – Ansteuerung der blinkenden Bildschirmmarke mutex – Objekte zum gegenseitigen Ausschluss time, datetime – Abfrage und Konversion der Zeit stat – Typ einer Datei (file, pipe, special device, link, directory, socket) getpass – Einlesen des Passworts getopt – Einlesen und parsing der übergebenen Parameter shutil – „höhere“ Dateioperationen wie Kopieren, Verschieben oder Löschen eines ganzen Dateibaums. Grundlagen der Programmierung 1 - Teil 3 R.Brause: Betriebssysteme Übersicht 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 Grundlagen der Programmierung 1 - Teil 3 R.Brause: Betriebssysteme Übersicht 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). Grundlagen der Programmierung 1 - Teil 3 R.Brause: Betriebssysteme Übersicht Folie 18 9 Schnittstellen & Abstrakte Datentypen Abstrakter Datentyp = Zugriff auf Daten nur über definierte Funktionen (Kapselung) Methode2(.) code Methode1(.) Daten Objekt Attribut A Schnittstelle des ADT = Zugriff + Reihenfolge des Zugriffs = Funktionen + Protokoll Grundlagen der Programmierung 1 - Teil 3 Folie 19 R.Brause: Betriebssysteme Übersicht Schnittstellen & Abstrakte Datentypen Abstrakter Datentyp = Zugriff auf Daten nur über definierte Funktionen (Kapselung) Methode2(.) code Methode1(.) Attribut A information hiding Daten Kapselung Objekt Schnittstelle des ADT = Zugriff + Reihenfolge des Zugriffs = Funktionen + Protokoll Grundlagen der Programmierung 1 - Teil 3 R.Brause: Betriebssysteme Übersicht Folie 20 10 Schnittstellen: Export & Import Export/ Import ist relativ bzgl. einer Sicht ! Modul 1 Export Import Export Import Modul 2 Grundlagen der Programmierung 1 - Teil 3 Folie 21 R.Brause: Betriebssysteme Übersicht Abstrakte und Virtuelle Maschinen (x1,y1) Beispiel: Zeichne ein Rechteck DrawRectangle(x0,y0,x1,y1) Virtuelle Maschine Abstrakte Maschine (x0,y0) DrawRectangle(x0,y0,x1,y1) Graphic Processor Unit (GPU) Display(RAM) Maschine 1 Grundlagen der Programmierung 1 - Teil 3 R.Brause: Betriebssysteme Übersicht DrawRectangle(x0,y0,x1,y1) 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) V1 V2 V3 V4 Maschine 2 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 Grundlagen der Programmierung 1 - Teil 3 Folie 23 R.Brause: Betriebssysteme Übersicht Windows NT - Betriebssystemkern Idee: virtuelle Maschinen einführen Logon Security Win/DOS SubsysClient tem Win32 POSIX POSIX OS/2 OS/2 Subsys- Subsys- Client Subsys- Client tem tem tem LPC user mode kernel mode SysCall Systemdienste Grundlagen der Programmierung 1 - Teil 3 R.Brause: Betriebssysteme Übersicht Folie 24 12 Virtuelle Maschinen Schichtenabstraktion Schicht 3 Zeit Schicht 2 Schicht 1 Grundlagen der Programmierung 1 - Teil 3 Folie 25 R.Brause: Betriebssysteme Übersicht Beispiel: virtuelle CPU Software-Hardware-Migration bei virt. CPU Konfiguration 1 Programm in Java-Code Java-Code / Maschinencode CPU- Hardware Konfiguration 2 Programm in Java-Code Microcodeund CPU-Hardware Vorteile Programm muss bei HW-Wechsel nicht geändert werden Unabh. HW-Entwicklung je nach Kundenwunsch Grundlagen der Programmierung 1 - Teil 3 R.Brause: Betriebssysteme Übersicht Folie 26 13 Virtuelle, logische, physikalische Geräte Beispiel: virtueller Festplattenspeicher Kontrolle Daten logische Geräte = physikalische Geräte + HW-Treiber. Treiber für log. Geräte log. Gerät 1 Treiber 1 virtuelle Geräte phys. Gerät 1 = logische Geräte +Verwaltungstreiber storage management log. Gerät 2 Treiber 2 phys. Gerät 2 Virtuelles Gerät Blockaggregation Grundlagen der Programmierung 1 - Teil 3 Folie 27 R.Brause: Betriebssysteme Übersicht Beispiel: Virtueller Massenspeicher Storage Area Network SAN asym. Pooling LAN Anfrage Ortsinfo N A S file server Bl oc k I/O metadata server NAS Lun 2 Grundlagen der Programmierung 1 - Teil 3 R.Brause: Betriebssysteme Übersicht Network Attached Storage Folie 28 14