Grundlagen der Betriebssysteme
- Semester:
- Wintersemester
- Anrechenbar im:
- Bachelor
- Leistungspunkte
- 5
- Dozent:
- Daniel Lohmann
- Betreuer:
- Björn Fiedler, Tim-Marek Thomas
- E-Mail:
- gbs@sra.uni-hannover.de
- Zeit/Raum:
-
- Vorlesung: Dienstag, 16:15-17:45, Online, Präsenz und Aufzeichnung
- Tafelübung: Freitag (zweiwöchentlich), 12:30-14:00, Online, Präsenz und Aufzeichnung
- Rechnerübung: siehe Stud.IP
- Stud.IP-Veranstaltung:
Online-Veranstaltung oder Präsenzveranstaltung
Diese Veranstaltung wird als Hybridveranstaltung durchgeführt.
Vorlesung, Tafel- und Gruppenübung werden dabei gleichzeitig in Präsenz und synchron in BBB abgehalten.
Vorlesung und Tafelübung werden zudem als Aufzeichnung bereitgestellt.
Unabhängig vom Veranstaltungsformat behalten die angekündigten Zeiten ihre Gültigkeit.
Inhalte werden in Vorlesung und Tafelübung vermittelt. Die Rechnerübungen dienen der Festigung und Übung des gelernten.
Lernziele
Die Veranstaltung vermittelt grundlegende Kenntnisse über den Aufbau, Funktionsweise und systemnahe Verwendung von Betriebssystemen. Behandelt werden, am Modell einer Mehrebenenmaschine, Betriebssystemabstraktionen wie Prozesse, Fäden, virtueller Speicher, Dateien, Gerätedateien und Interprozesskommunikation sowie Techniken für deren effiziente Realisierung. Dazu gehören Strategien für das Prozessscheduling, Latenzminimierung durch Pufferung und die Verwaltung von Haupt- und Hintergrundspeicher. Weiterhin werden die Themen Sicherheit im Betriebssystemkontext und Aspekte der systemnahen Softwareentwicklung in C erörtert. In den vorlesungsbegleitenden Übungen erfolgt eine praktische Vertiefung des Stoffs anhand von Programmieraufgaben in C aus dem Bereich der UNIX-Systemprogrammierung.
Im Vordergrund stehen Betriebssystemfunktionen für Einprozessorsysteme. Spezielle Fragestellungen zu Mehrprozessorsystemen (auf Basis gemeinsamen Speichers) werden nur am Rande und in Bezug auf Funktionen zur Koordinierung nebenläufiger Programme behandelt. In ähnlicher Weise werden Fragen zur Echtzeitverarbeitung ansatzweise nur in Bezug auf die Prozesseinplanung erörtert.
Stoffplan
- Einführung
- Systemnahe Informatik, Mehrebenenmaschine
- Einordnung der Veranstaltung
- Was ist denn nun ein Betriebssystem?
- Aufbau und Organisation der Veranstaltung
- Grundlegende Konzepte
- Mehrebenenmaschine: Vom C-Code zum Programm (in Ausführung)
- Grundlegendes Speichermodell: Code, Data, Stack, Heap
- Maschinenebene vs. Befehlssatzebene (von GRA zu GBS)
- Virtualisierung durch das Betriebssystem: Grundkonzepte im Schnellüberblick
- Systemnahe Softwareentwicklung in C (Wiederholung)
- C vs. Java: Syntax, Idiomatik, Philosophie
- Speicherabbildung von Variablen
- Zeiger und Felder
- Zeichenketten in C
- Dateien und Dateisysteme
- benannte Objekte und hierarchischer Namensraum
- Dateien und Pseudodateien
- Aufbau eines Dateisystems
- Pseudodateisysteme und Gerätesteuerung
- Prozesse und Fäden
- Der Prozessbegriff in der Informatik
- Prozessbegriff in der Mehrebenenmaschine (virtuelle Maschine)
- Faden (als virtueller Prozessor)
- Adressraum (als virtueller Zustandsspeicher)
- Programm (als Handlungsvorschrift)
- Unterbrechungen, Systemaufrufe und Signale
- Mehrebenenmaschine: Grundprinzip des Upcalls
- Ablauf einer Hardwareunterbrechung, cli/sti
- Implizite/explizite Betriebssystemaktivirungen
- Privilegebenen, das Betriebssystem als Herrscher
- Prozesseinplanung
- Ebenen und Kriterien der Einplanung (Scheduling)
- Klassische Scheduling-Verfahren (FCFS, RR/VRR, SJN, ...)
- Echtzeitbetrieb, Multiprozessor-Scheduling
- Linux Scheduler
- Speicherbasierte Interaktion
- Grundprobleme, Lost-Update, Read-Write
- Aktives Warten mit Sperrvariablen, Varianten, Probleme
- Prinzip des passiven Wartens
- Semaphore
- Betriebsmittelverwaltung, Synchronisation und Verklemmung
- Betriebsmittel, Taxonomie (wiederverwendbar/konsumierbar, un/teilbar)
- Livelocks und Deadlocks, 4 Bedingungen
- Klassische Probleme (5 Philosophen, Erzeuger-Verbraucher, Leser-Schreiber)
- Vermeidungs/Verhinderungsansätze
- Interprozesskommunikation
- Speichergekoppelt vs. nachrichtengekoppelt
- send/receive, Semantiken
- Signale
- Pipes und Sockets
- Speicherorganisation
- Adressraummodelle (real, logisch, virtuell)
- Statische Speicherzuteilung
- Dynamische Speicherzuteilung
- Schutz
- Speichervirtualisierung
- Gekachelter Speicher, Paging
- Seitenersetzung im Detail
- Gemeinsamer Speicher, Copy-on-Write
- Arbeitsmengenmodell
Semesterplan
Vorlesung | Übung | ||||||
Partition A + B | Partition A | Partition B | |||||
Vorlesungstermine | Übungstermine | Hausaufgaben | Übungstermine | Hausaufgaben | |||
11.10.21 | Mo | ||||||
12.10.21 | Di | 1. Einführung | |||||
13.10.21 | Mi | ||||||
14.10.21 | Do | ||||||
15.10.21 | Fr | TÜ | Aufgabe 1 | ||||
16.10.21 | Sa | Warmup | |||||
17.10.21 | So | lilo | |||||
18.10.21 | Mo | RÜ | |||||
19.10.21 | Di | 2. Grundlegende Konzepte | |||||
20.10.21 | Mi | ||||||
21.10.21 | Do | ||||||
22.10.21 | Fr | TÜ | Aufgabe 1 | ||||
23.10.21 | Sa | Warmup | |||||
24.10.21 | So | lilo | |||||
25.10.21 | Mo | RÜ | |||||
26.10.21 | Di | 3. Systemnahe Softwareentwicklung in C | |||||
27.10.21 | Mi | ||||||
28.10.21 | Do | ||||||
29.10.21 | Fr | TÜ | Aufgabe 2 | ||||
30.10.21 | Sa | Speicher | |||||
31.10.21 | So | halde | |||||
01.11.21 | Mo | RÜ | |||||
02.11.21 | Di | 4. Dateien und Dateisysteme | |||||
03.11.21 | Mi | ||||||
04.11.21 | Do | ||||||
05.11.21 | Fr | TÜ | Aufgabe 2 | ||||
06.11.21 | Sa | Speicher | |||||
07.11.21 | So | halde | |||||
08.11.21 | Mo | RÜ | |||||
09.11.21 | Di | 5. Prozesse und Fäden | |||||
10.11.21 | Mi | ||||||
11.11.21 | Do | ||||||
12.11.21 | Fr | TÜ | Aufgabe 3 | ||||
13.11.21 | Sa | Dateisystem | |||||
14.11.21 | So | crawl | |||||
15.11.21 | Mo | RÜ | |||||
16.11.21 | Di | 6. Unterbrechungen, Systemaufrufe und Signale |
|||||
17.11.21 | Mi | ||||||
18.11.21 | Do | ||||||
19.11.21 | Fr | TÜ | Aufgabe 3 | ||||
20.11.21 | Sa | Dateisystem | |||||
21.11.21 | So | crawl | |||||
22.11.21 | Mo | RÜ | |||||
23.11.21 | Di | 7. Prozesseinplanung | |||||
24.11.21 | Mi | ||||||
25.11.21 | Do | ||||||
26.11.21 | Fr | TÜ | Aufgabe 4 | ||||
27.11.21 | Sa | Prozesse | |||||
28.11.21 | So | clash | |||||
29.11.21 | Mo | RÜ | |||||
30.11.21 | Di | 8. Speicherbasierte Interaktion | |||||
01.12.21 | Mi | ||||||
02.12.21 | Do | ||||||
03.12.21 | Fr | TÜ | Aufgabe 4 | ||||
04.12.21 | Sa | Prozesse | |||||
05.12.21 | So | clash | |||||
06.12.21 | Mo | RÜ | |||||
07.12.21 | Di | 9. Betriebsmittelverwaltung, Synchronisation und Verklemmung |
|||||
08.12.21 | Mi | ||||||
09.12.21 | Do | ||||||
10.12.21 | Fr | TÜ | Aufgabe 5 | ||||
11.12.21 | Sa | Synchronisation | |||||
12.12.21 | So | patric | |||||
13.12.21 | Mo | RÜ | |||||
14.12.21 | Di | 10.Interprozesskommunikation | |||||
15.12.21 | Mi | ||||||
16.12.21 | Do | ||||||
17.12.21 | Fr | TÜ | Aufgabe 5 | ||||
18.12.21 | Sa | patric | |||||
19.12.21 | So | ||||||
20.12.21 | Mo | RÜ | |||||
21.12.21 | Di | KEINE Vorlesung | |||||
22.12.21 | Mi | ||||||
Weihnachten | |||||||
05.01.22 | Mi | ||||||
06.01.22 | Do | ||||||
07.01.22 | Fr | TÜ | Aufgabe 6 | ||||
08.01.22 | Sa | Kommuniation | |||||
09.01.22 | So | ticker, | |||||
10.01.22 | Mo | RÜ | |||||
11.01.22 | Di | Testatklausur | |||||
12.01.22 | Mi | ||||||
13.01.22 | Do | ||||||
14.01.22 | Fr | TÜ | Aufgabe 6 | ||||
15.01.22 | Sa | Kommuniation | |||||
16.01.22 | So | ticker, | |||||
17.01.22 | Mo | RÜ | |||||
18.01.22 | Di | 11. Speicherorganisation | |||||
19.01.22 | Mi | ||||||
20.01.22 | Do | ||||||
21.01.22 | Fr | Testat Besprechung | |||||
22.01.22 | Sa | ||||||
23.01.22 | So | ||||||
24.01.22 | Mo | Fragestunde | Fragestunde | ||||
25.01.22 | Di | 12. Speichervirtualisierung | |||||
26.01.22 | Mi | ||||||
27.01.22 | Do | ||||||
28.01.22 | Fr | Testat Besprechung | |||||
ENDE Vorlesungszeit | |||||||
Fragestunde | |||||||
Klausur |
Vorkenntnisse
- Grundlagen der Rechnerarchitektur, notwendig
- Programmieren in C, notwendig
Literaturempfehlungen
Die genannten Bücher dienen zur Ergänzung des Vorlesungsstoffes, decken ihn aber nicht zu hundert Prozent ab. Die genannte Auflage versteht sich als Mindestauflage, es kann also problemlos eine neuerer Auflage herangezogen werden.
-
- Operating Systems. Internals and Design Principles
-
Prentice Hall PTR2008978-0136006329.
[BibTex]
-
- Operating System Concepts
-
John Wiley & Sons, Inc.20050-471-69466-5.
[BibTex]
-
- Modern Operating Systems
-
Prentice Hall PTR2007978-0136006633.
[BibTex]
-
- Structured Computer Organization
-
Prentice Hall PTR2006978-0131485211.
[BibTex]
Falls die Anwendung der Programmiersprache C noch Schwierigkeiten bereitet:
-
- C als erste Programmiersprache: Vom Einsteiger zum Fortgeschrittenen
-
Vieweg+Teubner2010978-3834812216.
[BibTex]
Anmeldung und weitere Infos
Für diese Veranstaltung ist eine Online-Anmeldung über Stud.IP erforderlich. Bitte registrieren Sie sich (falls noch nicht geschehen) für Stud.IP und tragen Sie sich dort in die entsprechende Veranstaltung ein.