Betriebssysteme I (2021)

Prof. Dr. Andreas Polze
Felix Eberhardt, Andreas Grapentin, Felix Grzelka, Sven Köhler, Lukas Wenzel
Tutorien: Leon Hermann, Magnus Menger

Kontakt: bs@hpi.uni-potsdam.de
Termine: Dienstags, 9:15-10:45 Uhr - Selbststudium
Termine: Donnerstags, 11:00-12:30 Uhr - Vorlesung / Übungsbesprechung Synchron via Zoom
Zoom-Meeting: 624 4850 3473 | Kenncode: 56084410
Tutorien: 30min Tutoriumstermine, freiwilliges Angebot, Terminregistrierung, Code-Upload zum Review mindestens 24h vor dem Termin

Betriebssysteme müssen einerseits die Ressourcen eines Rechners effektiv verwalten und andererseits zum Programmieren eine geeignete Abstraktion von der zugrundeliegenden Hardware bieten. In der Lehrveranstaltung werden die Grundlagen von klassischen Betriebsystemen vermittelt sowie Techniken und Ansätze zur Implementierung von Nebenläufigkeit, Schedulern, Synchronisationsmechanismen, Speicherverwaltung und Sicherheitskomponenten an Beispielen diskutiert.

Termine

  • 26.10.2021 9:15 Einführung
  • 02.11.2021 9:15 Selbststudium
  • 04.11.2021 11:00 Vorlesung [Aufzeichnung]
  • 09.11.2021 9:15 Selbststudium Unit OS2
  • 11.11.2021 11:00 Vorlesung [Aufzeichnung]
  • 23.11.2021 9:15 Selbststudium Unit OS3
  • 25.11.2021 11:00 Vorlesung [Aufzeichnung]
  • [Aufgabenblatt OS3]
  • 30.11.2021 9:15 Selbststudium Unit OS3
  • 02.12.2021 11:00 Besprechung Aufgabenblatt OS3 [Aufzeichnung]
  • 07.12.2021 9:15 Selbststudium Unit OS4
  • 09.12.2021 11:00 Vorlesung [Aufzeichnung]
  • [Aufgabenblatt OS4]
  • 14.12.2021 9:15 Selbststudium Unit OS4
  • 16.12.2021 11:00 Besprechung Aufgabenblatt OS4 [Aufzeichnung]
  • 04.01.2022 9:15 Selbststudium Unit OS5
  • 06.01.2022 11:00 Vorlesung [Aufzeichnung]
  • 11.01.2022 9:15 Selbststudium Unit OS5
  • 13.01.2022 11:00 Vorlesung [Aufzeichnung]
  • [Aufgabenblatt OS5]
  • 18.01.2022 9:15 Selbststudium Unit OS5
  • 20.01.2022 11:00 Besprechung Aufgabenblatt OS5 [Aufzeichnung]
  • 25.01.2022 9:15 Selbststudium Unit OS6
  • 27.01.2022 11:00 Vorlesung [Aufzeichnung]
  • 01.02.2022 9:15 Selbststudium Unit OS6
  • 03.02.2022 11:00 Vorlesung [Aufzeichnung]
  • 08.02.2022 9:15 Selbststudium und Aufarbeitung der Vorlesungsinhalte
  • 10.02.2022 11:00 Zusammenfassung der Vorlesungsinhalte [Aufzeichnung]
  • 15.02.2022 9:15 Selbststudium und Aufarbeitung der Vorlesungsinhalte
  • 17.02.2022 11:00 Besprechung der Vorlesungsinhalte [Aufzeichnung]

Lernziele der Lehrveranstaltung

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

Die Veranstaltung wird im Online-Format angeboten und folgt dem Inverted Classroom Modell, d.h. Ihnen werden in jeder Vorlesungseinheit Fragen bereitgestellt, sowie Material in Video- und Textform, womit sie diese Fragen allein oder in Gruppen bearbeiten. Im synchronen Veranstaltungstermin erklären Sie die Fragen der aktuellen Einheit und haben ebenso Gelegenheit, ihre eigenen Verständnisfragen zu stellen und zu diskutieren. Darüber hinaus werden die synchronen Termine für vertiefende Labor-Sessions verwendet. Parallel besteht das freiwillige Angebot von Tutoriumsterminen in Kleingruppen (bis zu 5 Personen), wo Übungsinhalte und Verständnisfragen auf persönlicherer Ebene mit einem der Tutoren besprochen werden können.

[Folien zu Tutoriumsmodalitäten]

Bitte beachten Sie, dass Ihre regelmäßige und aktive Teilnahme an den synchronen Terminen 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.

Materialien

Unit OS2:

[Slides Rechnerarchitektur (Exkurs)]

[Aufgabenblatt OS2] [Folien OS2]

Videos

[Slides 1] (p2) [Slides 2] (p2-6)

[Slides] (p3-19)

[Slides] (p2-20)

[Slides 1] (p21-24) [Slides 2] (p17)

[Slides 1] (p17) [Slides 2] (p18-21) [Slides 3] (p5-8)

[Slides 1] (p2-14,17-35) [Slides 2] (p13-17)

Unit OS3:

[Aufgabenblatt]

Texte

  • Operating Systems Concepts - Kritischer Abschnitt und Synchronisation [PDF]
  • Operating Systems Concepts - Interprozesskommunikation [PDF]
  • Windows Internals - Kernel Dispatcher Objekte [PDF]

Videos

[Slides] (p3-8)

[Slides] (p9-25)

[Slides 1] (p11-17) [Slides 2] (p1-16)

[Slides] (p13-30)

[Slides] (p2-36)

[Slides] (p6-24)

[Slides] (p21-42)

Unit OS4 - Scheduling:

[Aufgabenblatt]

Texte

  • Silberschatz Operating System Concepts - Chapter 3 Processes [OSC Ch. 3]
  • Silberschatz Operating System Concepts - Chapter 4 Threads [OSC Ch. 4]
  • Silberschatz Operating System Concepts - Chapter 6 Scheduling [OSC Ch. 6]

Videos

  • Einführung in die Terminologie
  • Prozesse und Threads
  • Kontextwechsel
  • Schedulingpunkte

[Slides]

  • Qualitätsmetriken für die Schedulingentscheidung
  • First-In-First-Out (FIFO) Algorithmus
  • Round-Robin (RR) Algorithmus

[Slides]

  • Prioritätsbasierte Algorithmen
  • Starvation und Lösungsansätze

[Slides]

  • Prozesskonzept
  • Lebenszyklus von Prozessen
  • Signale

[Slides]

  • Threadkonzept
  • Usermode- und Kernelmode-Threads

[Slides]

  • UNIX Prozess-API
  • Windows Prozess-API
  • POSIX Thread-API

[Slides]

  • Anforderungen an Scheduler-Implementierungen
  • Realtime-Scheduling
  • Windows Scheduler und Priority Boosting
  • Priority-Inversion und Lösungsansätze
  • Linux Completely Fair Scheduler (CFS)

[Slides]

Index

Begriffe, Mechanismen, Probleme:

Scheduling-Algorithmen:

APIs:

Implementierungen:

Unit OS5:

coming soon.

Unit OS7:

coming soon.

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.

Leistungserfassungsprozess

Am Ende der Lehrveranstaltung wird eine Klausur geschrieben.

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://homepage.divms.uiowa.edu/~ochipara/classes/advancedos/papers/timesharing/unix-evolution.pdf.
    ×
    @article{citemaster_9461,
    author = "Ritchie, Dennis",
    title = "{The Evolution of the UNIX Time-Sharing System}",
    publisher = "{Springer}",
    pages = "{1577-1594}",
    url = "http://homepage.divms.uiowa.edu/\textasciitilde ochipara/classes/advancedos/papers/timesharing/unix-evolution.pdf",
    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"
    }