Betriebssysteme I (2024/25)
Prof. Dr. Andreas Polze
Clemens Tiedt
Tutoren: Marcel Garus, Tobias Görgens, Philipp Keese, Victor Lindow, Florian Strehl
Kontakt: bs@hpi.uni-potsdam.de
Termine: dienstags, 09:15-10:45 Uhr, HS 3; donnerstags, 11:00-12:30 Uhr, HS 3
Moodle: https://moodle.hpi.de/course/view.php?id=814
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.
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 OS7 / 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 OS6 / Device Management
- Unit OS8 / File Systems
- Unit OS9 / Real Time and Embedded Systems
- Unit OS10 / Fault Tolerance
- Unit OS11 / System Performance Evaluation
- Virtual Machines
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.
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” PDF
- Andrew S. Tanenbaum, Albert S. Woodhull, “Operating systems: design and implementation” PDF
- Mark E. Russinovich, David A. Solomon, “Windows Internals” PDF
- Brian W. Kernighan, Dennis M. Ritchie, “The C programming language” PDF
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}"
} -
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"
} -
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"
} -
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}"
} -
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}"
} -
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"
} -
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}"
} -
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"
} -
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/"
} -
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"
}