Betriebssysteme I (2021/2021)

Prof. Dr. Andreas Polze
Kontakt: bs@hpi.uni-potsdam.de
Termine: dienstags, 09:15-10:45 Uhr, virtuell; donnerstags, 11:00-12:30 Uhr, HS3
Zoom-Raum: 5198175573 | pwd: 4711

Der erste Termin (26.10.2021) findet virtuell auf Zoom statt

Ein Betriebssystem definiert eine Abstraktion der Hardware und verwaltet die gemeinsame Nutzung von Ressourcen durch die Benutzer des Computers. Sie alle sind derzeit Benutzer mindestens eines Betriebssystems. Viele von Ihnen sind auch kompetente Entwickler von Betriebssystem-APIs, einige sind vielleicht bereits Experten, die technische Details verstehen.

Das Ziel der Vorlesung ist, die Fähigkeiten in diesen Bereichen weiterzuentwickeln. Die Lehrveranstaltung richtet dazu ihren Schwerpunkt auf Technologien in Standard-Betriebssystemen und zwar über eine Reihe von Themen wie Scheduling, Nebenläufigkeit, Speicherverwaltung und Sicherheit.

  • Sie sollen am Ende der Vorlesung als Benutzer in der Lage sein, die richtige Terminologie zu verwenden, wenn Sie mit anderen über Konzepte von Betriebssystemen sprechen; und systemeigene Werkzeuge verwenden können, um das Anwendungs- und Systemverhalten zu beobachten und zu verstehen (z.B. um die Leistung zu messen).
  • Als Entwickler sollen Sie am Ende der Vorlesung in der Lage sein, Standard-Programmierschnittstellen für die Zuweisung von und den Zugriff auf Betriebssystem-Ressourcen nutzen zu können und die Unterschiede zwischen den einzelnen Funktionen zu verstehen; die vom Betriebssystem bereitgestellten Synchronisationsprimitive nutzen zu können, um "Critical Section"-Probleme in nebenläufigen und parallelen Anwendungen sinnvoll zu lösen; und die Auswirkungen, die das Verhalten einer isolierten Anwendung auf die Stabilität des Systems haben kann, zu verstehen und zu analysieren.
  • Als Experte sollen Sie am Ende der Vorlesung in der Lage sein, verschiedene Betriebssysteme auf der Basis unterschiedlicher Eigenschaften zu vergleichen; gängige Algorithmen, die in Betriebssystemkonzepten verwendet werden, zu verstehen und implementieren; und den Quellcode einer Kernelkomponente lesen und verstehen zu können, mit dem Ziel, diese zu debuggen, zu erweitern oder zu modifizieren.

Ablauf der Lehrveranstaltung

Nachdem wir im vergangenen Jahr mit Online-Format und OpenBook-Klausuren sehr gutes Feedback von den Studierenden erhalten hatten, planen wir in diesem Jahr ein hybrides Format: Es soll neben den Online-Vorlesungen ("flipped classroom", d.h. Ihnen werden Materialien und Aufgabenstellungen zur Verfügung gestellt, die Sie alleine oder in Gruppen bearbeiten) also vertiefende Q&A- und Labor-Sessions im Hörsaal geben. Dazu kommt die Diskussion von Übungsaufgaben in kleineren Gruppen.

Bitte beachten Sie, dass Ihre regelmäßige und aktive Teilnahme an den Q&A-Sessions sowie die Bearbeitung der begleitenden Übungen essentiell für den Erfolg der Inverted Classroom Methode, und damit für Ihr individuelles Erreichen der Lernziele der Veranstaltung sind.

Leistungserfassungsprozess

Am Ende der Lehrveranstaltung wird eine Klausur geschrieben.

Themen der Vorlesung

Die behandelten Themen der Vorlesung orientieren sich am ACM Computer Science Curricula: Operating Systems:

  • Unit OS1 / Overview of Operating Systems
    • Rolle und Aufgaben des Betriebssystems
    • Funktionsweise eines typischen Betriebssystems
    • Mechanismen zur Unterstützung von Client-Server-Modellen, Handheld-Geräten
    • Designfragen (Effizienz, Robustheit, Flexibilität, Portabilität, Sicherheit, Kompatibilität)
  • Unit OS2 / Operating System Principles
    • Strukturierungsmethoden (monolithische, geschichtete, modulare, Mikro-Kernel-Modelle)
    • Abstraktionen, Prozesse und Ressourcen
    • Konzepte von Anwendungsprogramm-Schnittstellen (APIs)
    • Die Entwicklung von Hardware-/Softwaretechniken und Anwendungsanforderungen
    • Geräte-Organisation
    • Interrups: Methoden und Implementierungen
    • Konzept des Benutzer-/Systemzustands und des Schutzes, Übergang zum Kernelmodus
  • Unit OS3 / Concurrency
    • Was ist Nebenläufigkeit?
    • kritische Abschnitte
    • Implementierung von Synchronisationsprimitiven
    • Kommunikation zwischen Prozessen
    • Die Rolle von Interrupts
    • Verwaltung von atomarem Zugriff auf Betriebssystem-Objekte
    • Multiprozessorprobleme (Spin-Locks, Reentrancy)
  • Unit OS4 / Scheduling and Dispatch
    • Präemptives und nicht-präemptives Scheduling
    • Konzept von Prozessen und Threads
    • Scheduling-Algorithmen und Datenstrukturen
    • Deadlines und Echtzeitfragen
  • Unit OS5 / Memory Management
    • Was ist eine Speicheradresse? Von virtuellen zu physikalischen Adressen
    • Überprüfung des physischen Speichers und der Speicherverwaltungshardware
    • Datenstrukturen für Speicherverwaltung
    • Physikalische Speicherverwaltung
  • Unit OS6 / Security and Protection
    • Was ist Security?
    • Überblick und Vergleich von Zugriffskontrolle und Authentifizierungsmethoden
    • kurze Diskussion über Vertrauen in Software

Die folgenden Themen der ACM CS Curricula - OS werden im kommenden Semester in der Lehrveranstaltung Betriebssysteme II behandelt:

  • Unit OS7 / Virtual Machines
  • Unit OS8 / Device Management
  • Unit OS9 / File Systems
  • Unit OS10 / Real Time and Embedded Systems
  • Unit OS11 / Fault Tolerance
  • Unit OS12 / System Performance Evaluation

Nützliche Vorkenntnisse

Die für diesen Kurs erforderlichen Vorkenntnisse umfassen:

  • Computerarchitektur: Sie sollten die grundlegende Funktionsweise einer CPU verstehen.
  • Algorithmen und Datenstrukturen: Sie sollten ein grundlegendes Verständnis von Strukturen wie Warteschlangen, Bäumen usw. sowie Operationen auf ihnen haben.
  • Programmiersprache C: Sie sollten in der Lage sein, einfache Programme in C zu lesen und zu verstehen, sowie einfache Programme in C zu schreiben und zu übersetzen.

Empfohlene Lektüre

"Die" Bücher:

  • Abraham Silberschatz, Peter B. Galvin, “Operating System Concepts”
  • Andrew S. Tanenbaum, Albert S. Woodhull, “Operating systems: design and implementation”
  • Mark E. Russinovich, David A. Solomon, “Windows Internals”
  • Brian W. Kernighan, Dennis M. Ritchie, “The C programming language”

Weiterführendes Material:

  • Jeff Bonwick. The slab allocator: an object-caching kernel memory allocator. In USENIX Technical Conference, 6-6. Berkeley, CA, USA, 1994. USENIX Association. URL: http://static.usenix.org/publications/library/proceedings/bos94/bonwick.html.
    ×
    @inproceedings{citemaster_9636,
    author = "Bonwick, Jeff",
    title = "{The slab allocator: an object-caching kernel memory allocator}",
    publisher = "{USENIX Association}",
    pages = "{6-6}",
    url = "http://static.usenix.org/publications/library/proceedings/bos94/bonwick.html",
    year = "1994",
    address = "{Berkeley, CA, USA}",
    shorttitle = "{USENIX}",
    booktitle = "{USENIX Technical Conference}",
    location = "{Boston, Massachusetts}",
    citemaster_conference_year = "{1994}"
    }
  • Intel Corporation. Intel Architecture Software Developer's Manual, Volume 3a: System Programming. 2010.
    ×
    @manual{citemaster_9059,
    author = "{Intel Corporation}",
    title = "{Intel Architecture Software Developer's Manual, Volume 3a: System Programming}",
    year = "2010",
    citemaster_issuing_organization = "{Intel Corporation}"
    }
  • Abraham Silberschatz, Peter Galvin , and Greg Gagne. Operating System Concepts. John Wiley & Sons, 8 edition, July 2008. ISBN 978-0470128725 . URL: http://www.os-book.com.
    ×
    @book{citemaster_9373,
    author = "Silberschatz, Abraham and {Galvin }, Peter and Gagne, {Greg }",
    title = "{Operating System Concepts}",
    publisher = "{John Wiley {\\&} Sons}",
    url = "http://www.os-book.com",
    pages = "{992}",
    month = "July",
    edition = "8",
    year = "2008",
    isbn = "{ 978-0470128725 }",
    day = "29"
    }
  • William Stallings. Operating Systems: Internals and Design Principles. Prentice Hall, 7 edition, February 2011. ISBN 978-0132309981.
    ×
    @book{citemaster_9459,
    author = "Stallings, William",
    title = "{Operating Systems: Internals and Design Principles}",
    publisher = "{Prentice Hall}",
    pages = "{816}",
    month = "February",
    edition = "7",
    year = "2011",
    isbn = "{978-0132309981}",
    day = "28"
    }
  • Andrew Tanenbaum. Distributed Operating Systems. Prentice Hall, 1995. ISBN 0-13-219908-4.
    ×
    @book{citemaster_604,
    author = "Tanenbaum, Andrew",
    title = "{Distributed Operating Systems}",
    publisher = "{Prentice Hall}",
    year = "1995",
    isbn = "{0-13-219908-4}"
    }
  • David Miller. OpenVMS Operating System Concepts. HP Technologies Series. Elsevier, 2 edition, 1997. ISBN 978-1555581572. URL: http://books.google.de/books?id=FSX5qUthRL8C.
    ×
    @book{citemaster_9462,
    author = "Miller, David",
    title = "{OpenVMS Operating System Concepts}",
    publisher = "{Elsevier}",
    url = "http://books.google.de/books?id=FSX5qUthRL8C",
    edition = "2",
    year = "1997",
    series = "{HP Technologies Series}",
    isbn = "{978-1555581572}"
    }
  • Dennis Ritchie and Ken Thompson. The UNIX time-sharing system. Communications of the ACM, 17:365-375, July 1974. URL: http://doi.acm.org/10.1145/361011.361061, doi:{10.1145/361011.361061}. [ | ]
    ×
    @article{citemaster_9483,
    author = "Ritchie, Dennis and Thompson, Ken",
    title = "{The UNIX time-sharing system}",
    publisher = "{ACM}",
    doi = "{10.1145/361011.361061}",
    pages = "{365-375}",
    url = "http://doi.acm.org/10.1145/361011.361061",
    journal = "{Communications of the ACM}",
    address = "{New York, NY, USA}",
    volume = "17",
    year = "1974",
    month = "July",
    issue = "7",
    isbn = "{0001-0782}"
    }
  • Dennis Ritchie. The Evolution of the UNIX Time-Sharing System. Lecture Notes in Computer Science, pages 1577-1594, 1980. URL: http://cm.bell-labs.com/cm/cs/who/dmr/hist.html.
    ×
    @article{citemaster_9461,
    author = "Ritchie, Dennis",
    title = "{The Evolution of the UNIX Time-Sharing System}",
    publisher = "{Springer}",
    pages = "{1577-1594}",
    url = "http://cm.bell-labs.com/cm/cs/who/dmr/hist.html",
    journal = "{Lecture Notes in Computer Science}",
    year = "1980",
    issue = "79",
    citemaster_short_journal = "{LNCS}"
    }
  • G. Zachary. Show-stopper!: the breakneck race to create Windows NT and the next generation at Microsoft. University of Michigan, 1994. ISBN 978-0029356715. URL: http://books.google.de/books?id=k8ISAQAAMAAJ.
    ×
    @book{citemaster_9463,
    author = "Zachary, G.",
    title = "{Show-stopper!: the breakneck race to create Windows NT and the next generation at Microsoft}",
    publisher = "{University of Michigan}",
    url = "http://books.google.de/books?id=k8ISAQAAMAAJ",
    year = "1994",
    isbn = "{978-0029356715}"
    }
  • Microsoft. Windows Sysinternals Tools. URL: http://technet.microsoft.com/en-US/sysinternals.
    ×
    @misc{citemaster_9458,
    author = "Microsoft",
    title = "{Windows Sysinternals Tools}",
    url = "http://technet.microsoft.com/en-US/sysinternals"
    }
  • H. Custer. Inside Windows NT. Références (Les Ulis). Microsoft Press, 1993. ISBN 9781556154812. URL: http://books.google.de/books?id=ioMZAQAAIAAJ.
    ×
    @book{citemaster_9456,
    author = "Custer, H.",
    title = "{Inside Windows NT}",
    publisher = "{Microsoft Press}",
    url = "http://books.google.de/books?id=ioMZAQAAIAAJ",
    year = "1993",
    series = "{R{\'e}f{\'e}rences (Les Ulis)}",
    isbn = "{9781556154812}"
    }
  • Johnson Hart. Windows System Programming. Addison-Wesley Professional, 4 edition, February 2010. ISBN 978-0321657749.
    ×
    @book{citemaster_9457,
    author = "Hart, Johnson",
    title = "{Windows System Programming}",
    publisher = "{Addison-Wesley Professional}",
    month = "February",
    edition = "4",
    year = "2010",
    isbn = "{978-0321657749}",
    day = "16"
    }
  • Mark Russinovich and David Solomon. Windows Internals. Microsoft Press Corp., 6 edition, April 2012. ISBN 978-0735648739.
    ×
    @book{citemaster_9372,
    author = "Russinovich, Mark and Solomon, David",
    title = "{Windows Internals}",
    publisher = "{Microsoft Press Corp.}",
    month = "April",
    edition = "6",
    year = "2012",
    isbn = "{978-0735648739}",
    day = "5"
    }
  • Alexander Schmidt. Queued Spinlocks in the WRK. URL: http://osm.hpi.de/wrk/2009/12/queued-spinlocks-in-the-wrk/.
    ×
    @misc{citemaster_9608,
    author = "Schmidt, Alexander",
    title = "{Queued Spinlocks in the WRK}",
    url = "http://osm.hpi.de/wrk/2009/12/queued-spinlocks-in-the-wrk/"
    }
  • W. Stevens and Stephen Rago. Advanced Programming in the UNIX Environment. Addison-Wesley Professional, 2 edition, June 2005. ISBN 978-0201433074.
    ×
    @book{citemaster_9460,
    author = "Stevens, W. and Rago, Stephen",
    title = "{Advanced Programming in the UNIX Environment}",
    publisher = "{Addison-Wesley Professional}",
    month = "June",
    edition = "2",
    year = "2005",
    isbn = "{978-0201433074}",
    day = "17"
    }