Grundlagen der Betriebssysteme


Semester:
Wintersemester

Anrechenbar im:
Bachelor

Leistungspunkte
5

Dozent:
Daniel Lohmann

Betreuer:
Björn Fiedler

E-Mail:
gbs@sra.uni-hannover.de

Zeit/Raum:
  • Vorlesung: Freitag, 10:00-11:30, Online, Präsenz und Aufzeichnung
  • Tafelübung: Freitag (zweiwöchentlich), 12:30-14:00, Präsenz
  • Rechnerübung: siehe Stud.IP

Stud.IP-Veranstaltung:

Online-Veranstaltung oder Präsenzveranstaltung
Diese Veranstaltung wird in Teilen als Hybridveranstaltung durchgeführt. Vorlesung und Tafelübung werden dabei gleichzeitig in Präsenz und synchron in BBB abgehalten. Vorlesung und Tafelübung werden zudem als Aufzeichnung bereitgestellt. Gruppenübungen finden nur in Präsenz statt!

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

  1. Einführung
    • Systemnahe Informatik, Mehrebenenmaschine
    • Einordnung der Veranstaltung
    • Was ist denn nun ein Betriebssystem?
    • Aufbau und Organisation der Veranstaltung
  2. Systemnahe Softwareentwicklung in C (Wiederholung)
    • C vs. Java: Syntax, Idiomatik, Philosophie
    • Speicherabbildung von Variablen
    • Zeiger und Felder
    • Zeichenketten in C
  3. 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
  4. Dateien und Dateisysteme
    • benannte Objekte und hierarchischer Namensraum
    • Dateien und Pseudodateien
    • Aufbau eines Dateisystems
    • Pseudodateisysteme und Gerätesteuerung
  5. 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)
  6. Unterbrechungen, Systemaufrufe und Signale
    • Mehrebenenmaschine: Grundprinzip des Upcalls
    • Ablauf einer Hardwareunterbrechung, cli/sti
    • Implizite/explizite Betriebssystemaktivirungen
    • Privilegebenen, das Betriebssystem als Herrscher
  7. Prozesseinplanung
    • Ebenen und Kriterien der Einplanung (Scheduling)
    • Klassische Scheduling-Verfahren (FCFS, RR/VRR, SJN, ...)
    • Echtzeitbetrieb, Multiprozessor-Scheduling
    • Linux Scheduler
  8. Speicherbasierte Interaktion
    • Grundprobleme, Lost-Update, Read-Write
    • Aktives Warten mit Sperrvariablen, Varianten, Probleme
    • Prinzip des passiven Wartens
    • Semaphore
  9. 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
  10. Interprozesskommunikation
    • Speichergekoppelt vs. nachrichtengekoppelt
    • send/receive, Semantiken
    • Signale
    • Pipes und Sockets
  11. Speicherorganisation
    • Adressraummodelle (real, logisch, virtuell)
    • Statische Speicherzuteilung
    • Dynamische Speicherzuteilung
    • Schutz
  12. 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

  

09.10.23

Mo

        

10.10.23

Di

        

11.10.23

Mi

        

12.10.23

Do

        

13.10.23

Fr

1. Einführung

Aufgabe 1

     

14.10.23

Sa

  

Warmup

     

15.10.23

So

  

lilo

     

16.10.23

Mo

 

      

17.10.23

Di

        

18.10.23

Mi

        

19.10.23

Do

        

20.10.23

Fr

2. Systemnahe Softwareentwicklung in C

   

Aufgabe 1

  

21.10.23

Sa

     

Warmup

  

22.10.23

So

     

lilo

  

23.10.23

Mo

    

   

24.10.23

Di

        

25.10.23

Mi

        

26.10.23

Do

        

27.10.23

Fr

3. Grundlegende Konzepte

Aufgabe 2

     

28.10.23

Sa

  

Speicher

     

29.10.23

So

  

halde

     

30.10.23

Mo

        

31.10.23

Di

 

      

01.11.23

Mi

        

02.11.23

Do

        

03.11.23

Fr

4. Dateien und Dateisysteme

   

Aufgabe 2

  

04.11.23

Sa

     

Speicher

  

05.11.23

So

     

halde

  

06.11.23

Mo

    

   

07.11.23

Di

        

08.11.23

Mi

        

09.11.23

Do

        

10.11.23

Fr

5. Prozesse und Fäden

Aufgabe 3

     

11.11.23

Sa

  

Dateisystem

     

12.11.23

So

  

crawl

     

13.11.23

Mo

 

      

14.11.23

Di

        

15.11.23

Mi

        

16.11.23

Do

        

17.11.23

Fr

6. Unterbrechungen,

Systemaufrufe und Signale

   

Aufgabe 3

  

18.11.23

Sa

     

Dateisystem

  

19.11.23

So

     

crawl

  

20.11.23

Mo

    

   

21.11.23

Di

        

22.11.23

Mi

        

23.11.23

Do

        

24.11.23

Fr

7. Prozesseinplanung

Aufgabe 4

     

25.11.23

Sa

  

Prozesse

     

26.11.23

So

  

clash

     

27.11.23

Mo

 

      

28.11.23

Di

        

29.11.23

Mi

        

30.11.23

Do

        

01.12.23

Fr

8. Speicherbasierte Interaktion

   

Aufgabe 4

  

02.12.23

Sa

     

Prozesse

  

03.12.23

So

     

clash

  

04.12.23

Mo

    

   

05.12.23

Di

        

06.12.23

Mi

        

07.12.23

Do

        

08.12.23

Fr

9. Betriebsmittelverwaltung,

Synchronisation und

Verklemmung

Aufgabe 5

     

09.12.23

Sa

  

Synchronisation

     

10.12.23

So

  

patric

     

11.12.23

Mo

 

      

12.12.23

Di

        

13.12.23

Mi

        

14.12.23

Do

        

15.12.23

Fr

10.Interprozesskommunikation

   

Aufgabe 5

  

16.12.23

Sa

     

patric

  

17.12.23

So

        

18.12.23

Mo

    

   

19.12.23

Di

        

20.12.23

Mi

        

21.12.23

Do

        

22.12.23

Fr

11. Speicherorganisation

       
  

Semesterunterbrechung

       

08.01.24

Mo

 

      

09.01.24

Di

        

10.01.24

Mi

        

11.01.24

Do

        

12.01.24

Fr

Testatklausur

Aufgabe 6

 

Aufgabe 6

  

13.01.24

Sa

  

Kommunikation

  

Kommunikation

  

14.01.24

So

  

ticker,

  

ticker,

  

15.01.24

Mo

    

   

16.01.24

Di

        

17.01.24

Mi

        

18.01.24

Do

        

19.01.24

Fr

12. Speichervirtualisierung

       

20.01.24

Sa

        

21.01.24

So

        

22.01.24

Mo

 

Fragestunde

  

Fragestunde

   

23.01.24

Di

        

24.01.24

Mi

        

25.01.24

Do

        

26.01.24

Fr

 

Testat Besprechung

  

Testat Besprechung

   
  

ENDE Vorlesungszeit

       
 

 

        
26.02.24 

Mo

Fragestunde

       
 

 

        
 

 

        
01.03.24 

Fr 

Klausur

       
          
          

Vorkenntnisse

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.

  1. Operating Systems. Internals and Design Principles
    William StallingsPrentice Hall PTR2008978-0136006329.
    [BibTex]
  2. Operating System Concepts
    Abraham Silberschatz, Greg Gagne, Peter Bear GalvinJohn Wiley & Sons, Inc.20050-471-69466-5.
    [BibTex]
  3. Modern Operating Systems
    Andrew S. TanenbaumPrentice Hall PTR2007978-0136006633.
    [BibTex]
  4. Structured Computer Organization
    Andrew S. TanenbaumPrentice Hall PTR2006978-0131485211.
    [BibTex]
  5. Systemprogrammierung – Grundlage von Betriebssystemen: Sachwortverzeichnis
    Wolfgang Schröder-Preikschat2019.
    PDF [BibTex]

Falls die Anwendung der Programmiersprache C noch Schwierigkeiten bereitet:

  1. C als erste Programmiersprache: Vom Einsteiger zum Fortgeschrittenen
    Manfred Dausmann, Ulrich Bröckl, Dominic Schoop, Joachim GollVieweg+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.

Stud.IP Veranstaltungen
Vorlesung
Übung