Übungen Betriebssysteme (BS)

U3 – Verklemmungen

Alwin Berger

🚀 by Decker

(Wiederholung) Semaphore

  • Ein Semaphor (σῆμα dt. Zeichen, φέρειν dt. tragen) ist eine Datenstruktur zur Verwaltung beschränkter Ressourcen in digitalen Systemen
  • Analogie: Eisenbahnsignal
images/U2/Semaphor.png

(Wiederholung) Semaphore

  • Die Semaphor wird als Zähler mit der maximalen Anzahl n der entsprechenden Ressource initialisiert: s := n
  • P(): Prolaag = probeer te verlagen (dt. versuche zu senken)
    • s>0: Ressource wird beansprucht und s := s−1
    • s=0: Warten bis Ressource wieder verfügbar ist: s>0
  • V(): Verhogen bzw. vrijgeven dt. freigeben: s := s+1

Schloss und Semaphor im Vergleich

images/U3/Vorbereitungsfolien-1.svg

Betriebsmittel

images/U3/Vorbereitungsfolien-2.svg

Präsenzaufgabe: Produzent-Konsument-Problem

images/U3/Vorbereitungsfolien-3.svg

Präsenzaufgabe: Produzent-Konsument-Problem

images/U3/Vorbereitungsfolien-4.svg

Präsenzaufgabe: Produzent-Konsument-Problem

images/U3/Vorbereitungsfolien-5.svg

Präsenzaufgabe: Bedingungen für einen Deadlock

images/U3/Vorbereitungsfolien-6.svg

Präsenzaufgabe: Bedingungen für einen Deadlock

images/U3/Vorbereitungsfolien-7.svg

Präsenzaufgabe: Bedingungen für einen Deadlock

images/U3/Vorbereitungsfolien-8.svg

Präsenzaufgabe: Bedingungen für einen Deadlock

images/U3/Vorbereitungsfolien-9.svg

Präsenzaufgabe: Bedingungen für einen Deadlock

images/U3/Vorbereitungsfolien-10.svg

Präsenzaufgabe: Bedingungen für einen Deadlock

images/U3/Vorbereitungsfolien-11.svg

Zirkuläres warten im Detail (Zugriffsgraph)

images/U3/Vorbereitungsfolien-13.svg

Zirkuläres warten im Detail (Zugriffsgraph)

images/U3/Vorbereitungsfolien-14.svg

Zirkuläres warten im Detail (Zugriffsgraph)

images/U3/Vorbereitungsfolien-15.svg

Zirkuläres warten im Detail (Zugriffsgraph)

images/U3/Vorbereitungsfolien-16.svg

Zirkuläres warten im Detail (Zugriffsgraph)

images/U3/Vorbereitungsfolien-17.svg

Verklemmungsauflösung

images/U3/Vorbereitungsfolien-18.svg

Makefiles

  • Enthält Informationen, welche Dateien zu einem Projekt gehören und deren Abhängigkeiten
  • Bauen von Projekten mit mehreren Dateien
  • Makefiles ausführen mit make
    • bei fehlendem Target wird das Standard-Target ausgeführt (erstes Target in der Datei)
    • Ein Target entspricht (meistens) der zu erstellenden Datei
    • Optionen: -f gibt das Makefile an, -j Anzahl gleichzeitger Jobs
  • Syntax
# Name: <benötigte Dateien und/oder andere Targets>
# <TAB> Kommando

Beispiel für ein Makefile

CC=gcc
CFLAGS= -Wall -ansi -pedantic -D_XOPEN_SOURCE -D_POSIX_SOURCE

all: programm1 programm2    # erstes Target = Default-Target
programm1: prog1.c prog1.h
         $(CC) $(CFLAGS) -o prog1 prog1.c
programm2: prog2.c prog2.h prog1 # Abhängigkeit: benötigt programm1!
         $(CC) $(CFLAGS) -o prog2 prog2.c
images/U3/makefile.png

Implizite Regeln (auch ohne Makefile)

  • make verfügt über imlizite Regeln, welche Standardaufgaben auch ohne Makefile ausführen.
  • Beispiel:
    • Eine Datei testprog.c befindet sich im aktuellen Verzeichnis.
    • Es existiert kein Makefile.
    • make sucht selbstständig nach einer anwendbaren Regel. make -p zeigt eine Liste aller Regeln an.
$ make testprog
cc     testprog.c   -o testprog

Was haben wir heute gelernt?

  • Zusammenfassung
    • Semaphore und deren Synchronisationsmuster
    • Zustandekommen von Verklemmungen
    • Verwendung von Makefiles