Betriebssysteme Prof. Sergei Gorlatch Gruppe PVS (Parallele und Verteilte Systeme) Institut für Informatik Westfälische Wilhelms-Universität Münster Wintersemester 2010/11 Vorlesung Dozent: Prof. Dr. Sergei Gorlatch Büro: R 711 E-Mail: [email protected] Sprechstunde: Montag 10.00–11.00 Uhr und n.V. Sekretariat: Frau Kaiser-Mariani (R 704), vormittags, Tel.: 83-32740 Homepage der Vorlesung: http://pvs.uni-muenster.de/pvs/lehre/WS10/bs/ Vorlesungstermine: Montag, 12.00 Uhr–14.00 Uhr, M1 Dienstag, 16.00 Uhr–18.00 Uhr, M1 Es werden nicht jede Woche beide Termine gehalten. Genaue Termine werden rechtzeitig auf der Webseite bekanntgegeben. Skriptum: Folienskript im WWW im PDF-Format. Es wird empfohlen, Folien auszudrucken und in die Vorlesung mitzubringen Einmalige Anmeldung zur Vorlesung und Übung: https://wwwmath.uni-muenster.de:16032/KursBuchungen/ Wichtig: Voraussetzung für die Klausuranmeldung! 0-2 Übungen Übungsleiter: Dipl.- Math. Alexander Ploß Büro: R 710 Tel.: 83-32752 E-Mail: [email protected] Sprechstunde: Mittwoch 13–14 Uhr Übungstermine: Dienstags 14.00 Uhr–16.00 Uhr, Hörsaal M1 Mittwochs 12.00 Uhr–14.00 Uhr, Hörsaal M2 Mittwochs 14.00 Uhr–16.00 Uhr, Hörsaal M6 Beginn: Ab dem 19.10. (nächste Woche) Inhalt: Vertiefung des Stoffs aus der Vorlesung Besprechung von Übungsblättern Beantwortung von Fragen zur Vorlesung Anmeldung zur Übungsgruppe: nicht nötig. 0-3 Übungsblätter Im Netz werden Übungsblätter zur selbständigen Bearbeitung bereitgestellt. Übungsblätter sollen praktische Kenntnisse und Fertigkeiten vermitteln Intensive Beschäftigung mit den Übungsblättern ist Voraussetzung zum Verständnis der Übung und der Vorlesung und für das erfolgreiche Bestehen der Klausur! Bonuspunktregel: Durch die erfolgreiche Bearbeitung der Übungen können bis zu 10% der Klausurpunkte erworben werden. Bei weniger als 50% der möglichen Punkte für die Übungsaufgaben werden keine Bonuspunkte vergeben. Ab 50% (1 Bonuspunkt) wird für weitere 5% der Übungspunkte je ein Bonuspunkt vergeben. ⇒ Übungsblätter werden korrigiert Abgabe in Kleingruppen (Details in den Übungen) 0-4 Prüfungsleistungen Prüfungsleistung: Klausur (90 Minuten) Abtestat, unbenotet (GI): 50% der Übungspunkte oder Bestehen der Klausur Jede mündliche Prüfung setzt das Bestehen der Klausur voraus! Klausurtermin: voraussichtlich letze Vl. Woche (31.1. - 4.2.) Wiederholungsklausur (2. Termin) vor bzw. zu Begin des SS2010. Fragen zur Organisation der Vorlesung & Übung? 0-5 Ziele der Vorlesung Die Teilnehmer sollen am Ende der Vorlesung: wissen, wie ein modernes Betriebssystem aufgebaut ist, die einschlägigen Algorithmen und Strategien zur effizienten Verwaltung und fairen Vergabe von Betriebsmitteln kennen, die Umsetzung wesentlicher Mechanismen in aktuellen Betriebssysteme beispielhaft kennen lernen, ein Verständnis für die gegenwärtigen und künftigen Trends in Betriebssystemen entwickeln. 0-6 Inhalte der Vorlesung Struktur eines Betriebssystems (Mikrokernarchitektur) Prozesse und ihre Implementierung Prozessinteraktion (Synchronisation und Kommunikation) Betrieb von Geräten Betriebsmittel- und Speicherverwaltung Dateiverwaltung, virtueller Speicher Programmverwaltung Sicherheitsaspekte in Betriebssystemen Beispiele aus Unix, Windows und anderen BS 0-7 Vorlesungsstil im wesentlichen Folien selten Tafelanschrieb Folien werden in Form eines Folienskriptums zur Verfügung gestellt: als PDF-Dokumente im WWW (kurz vor der jeweiligen Vorlesung) Kleinere Abweichungen (insb. Korrekturen) möglich Zwischenfragen in der Vorlesung grundsätzlich erwünscht! 0-8 Darstellung der Mechanismen Ablaufdiagramme vermitteln eine Konstruktions- oder Organisationsidee unter Verzicht auf Sprach- und Implementierungsdetails. Programmskizzen erlauben eine weitere Präzisierung einer Konstruktionsidee oder eines Ablaufs. Auch hier i.d.R. Verzicht auf syntaktische Details einer konkreten Programmiersprache. 0-9 Beispiel für ein Ablaufdiagramm Auftrag annehmen Betriebsmittel frei? ja nein Betriebsmittel belegen Auftrag löschen Erledigung melden 0-10 Beispiel für eine Programmskizze ... q:= first(OR) if (∃ i: resource[q.type, i] = free) then begin resource[q.type,i]:= occupied; remove(OR); send(q.process_id, i); // examine outstanding requests // check if satisfiable // // // // allocate one unit of resource remove request from queue send no. of allocated unit to requesting process end end ... 0-11 Worum geht’s in dieser Vorlesung? Diese Veranstaltung ist weder ein Programmierkurs noch eine Einführung in Unix, DOS, VMS, MVS, WindowsXP, OS/2, Mach, Chorus, BeOS, Linux, MacOS, PalmOS, Symbian . . . Zielgruppe: Nicht nur die Benutzer heutiger Computersysteme, sondern vielmehr die Nutzer und Entwickler zukünftiger Systeme. Denken Sie beim Einsatz von Betriebssystemen nicht nur an konventionelle Rechner (PCs, Arbeitsplatzrechner, Großrechner). Das Spektrum ist viel größer! Betriebssysteme gibt es auch: unter der Motorhaube im Flugzeug-Cockpit in der Waschmaschine auf der Chipkarte, z. B. im Handy 0-12 0.1 Literaturhinweise Die Vorlesung basiert auf drei Quellen: A. S. Tanenbaum: Moderne Betriebssysteme. 3., aktualisierte Auflage. Prentice Hall, 2009 Vorlesung Betriebssysteme“ von Prof. Dr. H.-U. Heiss, TU-Berlin ” und das Buch: H. Wettstein: Systemarchitektur. Hanser, 1993 W. Stallings: Betriebssysteme: Prinzipien und Umsetzung. 4. Auflage. Prentice Hall, 2003 0-13 Kapitel 1 BS: Aufgaben und historische Entwicklung Betriebssystem: Motivation Moderne Rechner bestehen aus vielen komplexen Komponenten: Prozessor, Arbeitsspeicher, Platten, Druckern, Tastatur, Maus, Bildschirm, Netzwerkschnittstellen, etc. Um ein Anwendungsprogramm zu schreiben, müsste der Programmierer alle Details der Komponenten und ihrer Zusammenarbeit verstehen, was fast unmöglich ist Deshalb wird Betriebssystem – zusätzliche Software-Schicht eingeführt 1-15 Betriebssystem: Motivation Aufgabe des Betriebssystems: den Benutzerprogrammen ein besseres, einfaches, klares Modell des Rechners zur Verfügung zu stellen und die Ressourcen zu steuern Merke: Während Programme direkt mit BS kommunizieren, arbeitet der Endbenutzer normalerweise mit der Benutzungsoberfläche: textbasierte Benutzeroberfläche = Shell Benutzeroberfläche mit Icons = graphische Oberfäche (GUI ) 1-16 Formale Definition und Aufgaben Betriebssystem (Definition nach DIN 44300) Die Programme eines digitalen Rechensystems, die zusammen ” mit den Eigenschaften der Rechenanlage die Grundlage der möglichen Betriebsarten des digitalen Rechensystems bilden und insbesondere die Ausführung von Programmen steuern und überwachen.“ Aufgaben Anpassung der Maschinenwelt an die Benutzerbedürfnisse Regelung des Zugriffs auf Ressourcen Verwaltung von Daten und Programmen Effiziente Ausnutzung der Betriebsmittel Unterstützung bei Fehlern und Ausfällen Sicherheitsvorkehrungen 1-17 Rechensystem Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungsprogrammen. Quelle: Tanenbaum 2003. 1-18 Betriebssystemarchitektur Zitat: The job of a system architect is similar to the one of a witty ” octopus juggling daily new balls of different size on the back of a jumping dolphin at the shore of Waikiki.“ Neue Anwendungen Betriebssystem Markt Qualitätsmerkmale: • Sicherheit • Echtzeit • Mobilität • Energieverbrauch • Verlässlichkeit Hardware • ... 1-19 Betriebssysteme für Universalrechner Zwei Ebenen: sichtbar und unsichtbar für den Anwender. Betriebssystem: Bedienung und Kontrolle Anwendung Anwendung Anwendung Betriebssystem: Verwaltung und Betrieb Hardware 1-20 Betriebssystem: Zwei Sichten Zwei mögliche Sichten auf das Betriebssystem: Virtuelle Maschine (Top-Down Sicht): Bietet dem Programmierer eine abstrakte, einfache Sicht auf die Hardware an. Reale, low-level Eigenschaften werden versteckt. Beispiel Festplatte/Dateisystem: Reale Maschine (Hardware): Folge von Datenblöcken fester Größe Virtuelle Maschine (BS): Benannte Dateien variabler Größe Ressourcenmanager (Bottom-Up Sicht): Verwaltet Prozessoren, Speicher, Platten, Terminals, . . . Koordiniert den Zugriff von Anwendungen auf Ressourcen. Zeitliche Ressourcenverwaltung: Anwendungen greifen nacheinander auf Ressourcen zu (z. B. Drucker). Räumliche Ressourcenverwaltung: Anwendungen greifen auf unterschiedliche Bereiche einer Ressource zu (z. B. Speicher). 1-21 Historischer Abriss: Die 50er Jahre Erste Anfänge In den ersten Maschinen (J. von Neumann, K. Zuse, . . . ) kümmern sich Spezialisten sowohl um die Anwendungen als auch um den Betrieb. Ein Programm wird von einem Prozessor abgearbeitet Zunächst einzeln. Später Stapel-Verarbeitung (Batch-Betrieb), mit Lochkarten. Die Betriebssystemfunktion beschränkt sich hierbei auf Unterstützung bei der Ein-/Ausgabe. Umwandlung von Zahl- und Zeichendarstellungen. 1-22 Historischer Abriss: Die 60er Jahre Virtualisierung Unterschied zwischen CPU- und E/A-Rate wird immer größer. Verzahnte Ausführung unabhängiger Programme (Multiprogramming) wird möglich. Echte Parallelität durch Aufkommen von E/A-Prozessoren. Der Begriff des Prozesses als virtueller Prozessor wird geboren. Der Prozess wird auch internes Strukturierungsmittel für BS. Auch der Speicher wird virtualisiert“ (virtueller Speicher). ” Interaktiver Betrieb durch mehrere Benutzer (Timesharing). Prototypen bzw. Vorläufer heutiger Großrechner-BS entstehen (OS/360, CTSS/ Multics, CP67, VMOS/BS2000). 1-23 Beispiel: Betriebssystem OS/360 von IBM OS/360: Versuch, ein BS für alle unterschiedlichen Computer einer Serie (IBM/360) zu schaffen. Ergebnis: Millionen LOC (Maschinencode), Tausende Fehler, deren Anzahl von Release zu Release in etwa konstant blieb. Die wichtigsten Fortschritte in OS/360: Multiprogrammierung: Früher wartete der Prozessor auf die Beendigung von Ein-/Ausgabe. Lösung: den Speicher unter den Jobs in Bereiche aufteilen; wartet ein Programm kann ein anderes ausgeführt werden. Mehrere Jobs im Arbeitsspeicher: gegenseitiger Schutz notwendig (spezielle Hardware). Spooling: Jobs von Karten auf Platten einlesen und dann abarbeiten. Timesharing: Man wollte den Rechner wieder für sich alleine“ haben. ” Virtuelle Maschinen, online-Zugang über Terminals. 1-24 Historischer Abriss: Die 70er Jahre Software Engineering Beginnende Software-Krise: Betriebssysteme werden groß und komplex und dadurch fehlerbehaftet. Die Forderung nach strukturiertem Systementwurf, nach Wartbarkeit, Zuverlässigkeit, Schutz und Sicherheit kommt auf. Unix entsteht nach dem Prinzip simple is beautiful“ auf einfacher ” Hardware (PDP-11). Erstmalig Einsatz höherer Programmiersprachen (z. B. C) für BS-Implementierung. Prozess wird zur Schutzumgebung (context, domain) mit eigenem, abgeschottetem Adressraum und Rechten (capabilities). Forderung nach Unterstützung von modularer Programmierung, abstrakten Datentypen und Objektorientierung bzw. Anwendung dieser Prinzipien auf das Betriebssystem selbst. 1-25 Historischer Abriss: Die 80er Jahre Verteilte Systeme Aufkommen von Arbeitsplatzrechnern und PCs, MS-DOS (Microsoft geboren). Aufkommen leistungsfähiger Kommunikationsmedien: Ethernet, führt zu vermehrtem Interesse an vernetzten Systeme. Zur effizienten Implementierung von Kommunikationssoftware für verteilte Systeme braucht man Prozesse. Da Prozesse zu komplex sind (ein Umschalten kostet“ Tausende ” Maschinenbefehle) trennt man Adressraum und Prozess wieder: mehrere Prozesse im selben Adressraum (lightweight process, thread). Das Potential früher entwickelter GUIs wurde von S. Jobs erkannt → Apple. Idee wird später von MS Windows übernommen. 1-26 Historischer Abriss: Die 80er Jahre (Forts.) Parallelitätskonzepte werden in Programmiersprachen aufgenommen. Sie ermöglichen verteiltes (paralleles) Rechnen auf Supercomputern und Netzen von Arbeitsplatzrechnern. Unix hat im Arbeitsplatzrechner ein ideales Vehikel zur Verbreitung und wird zum Quasi-Standard. Notwendigkeit der Integration ⇒ Standardisierungsaktivitäten (OSI, TCP/IP, NFS, POSIX, OSF, X/OPEN, OMG, ODP). Betriebssysteme überwinden Rechnergrenzen: Von der Rechnerkommunikation zum Verbundsystem (Verteiltes System). 1-27 Historischer Abriss: Die 90er Jahre Hochparallele und Eingebettete Systeme, Multimedia, Interoperabilität Infolge hoher Stückzahlen werden einfache Mikroprozessoren relativ billig ⇒ Zusammenschaltung tausender Mikroprozessoren bringt oft höhere Leistung bei geringerem Preis als ein Supercomputer. Neue BS-Funktionen zur Unterstützung der Parallelverarbeitung. Multimedia-Anwendungen erfordern Unterstützung von Audio- und Videodaten (Echtzeit bzw. Real-time). Software in eingebetteten Systemen benötigt BS-Unterstützung (z. B. Consumer Electronics). Verteilte Systeme in heterogenen Umgebungen ⇒ Interoperabilität (DCE, CORBA) Emulation anderer BS-Schnittstellen, d. h. mehrere BS-Welten auf demselben Rechner. 1-28 Historischer Abriss: Aktuelle Themen Multicore-, Cluster- und Grid-Computing Sicherheit Robustheit und Verfügbarkeit Energiemanagement (mobile Geräte) Benutzerschnittstellen 1-29