Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Systeme 1 Kapitel 7.1 Deadlocks WS 2009/101. Organisatorisches Zwischenklausur Sa. 19.12.09: – 10 Uhr s.t. (45 Minuten) – Räume 101-026/036 – Stoff: Vorlesung.

Ähnliche Präsentationen


Präsentation zum Thema: "Systeme 1 Kapitel 7.1 Deadlocks WS 2009/101. Organisatorisches Zwischenklausur Sa. 19.12.09: – 10 Uhr s.t. (45 Minuten) – Räume 101-026/036 – Stoff: Vorlesung."—  Präsentation transkript:

1 Systeme 1 Kapitel 7.1 Deadlocks WS 2009/101

2 Organisatorisches Zwischenklausur Sa : – 10 Uhr s.t. (45 Minuten) – Räume /036 – Stoff: Vorlesung Übungsblätter (bis inkl. Blatt 3) Fragestunde – Mi – 16 Uhr, RZ Raum 112 Zentrale Weihnachtsvorlesung: Die praktischen Übungen finden bis einschließlich statt. Beginn im neuen Jahr ist der Verschiebung der zentralen Theoriebesprechung – Mi (Feiertag) => Do (RZ Raum 112, 16 Uhr) – Regulärer Betrieb ab Die erste Vorlesung im neuen Jahr findet am statt. WS 2009/102

3 Letzte Vorlesung Wechselseitiger Ausschluss: – Hardware (TSL RX/LOCK) – Betriebssystem (sleep(lock), wakeup(lock)) MUTEX Produzenten-Konsumenten-Problem – Gemeinsamer Puffer – Prozesse schreiben in den Puffer (Produzenten) – Prozesse lesen aus dem Puffer (Konsumenten) – Probleme: 2 Konsumenten: 1 Element im Puffer; Puffer voll 1 Konsument, 1 Produzent: beide Schlafen für immer Deadlock – Lösung: Semaphoren WS 2009/103

4 Letzte Vorlesung Deadlock – Eine Menge von Prozessen befindet sich in einem Deadlock- Zustand, wenn jeder Prozess aus der Menge auf ein Ereignis wartet, das nur ein anderer Prozess aus der Menge auslösen kann. – Voraussetzungen: Wechselseitiger Ausschluss Hold-and-wait-Bedingung Ununterbrechbarkeit Zyklische Wartebedingung – Modellierung von Ressourcenbelegung und Ressourcenanforderung – Verhinderung von Deadlocks: Bankieralgorithmus Ressourcen-Anforderung bekannt Überführung nur in sichere Zustände Garantie für Deadlockfreie Ausführung WS 2009/104

5 Beispiel für ein Deadlock WS 2009/105 Prozess p 2 Prozess p 1 Drucker Plotter Drucker Plotter I1I1 I2I2 I3I3 I4I4 I5I5 I6I6 I7I7 I8I8 Beide Prozesse beendet Start Beide benötigen Drucker Beide benötigen Plotter t Deadlock unvermeidbar!

6 Gegenbeispiel (kein Deadlock) WS 2009/106 Prozess p 2 Prozess p 1 Drucker Plotter Drucker Plotter I1I1 I2I2 I3I3 I4I4 I5I5 I6I6 I7I7 I8I8 Beide Prozesse beendet Start Beide benötigen Drucker Beide benötigen Plotter t

7 Bankieralgorithmus: Einzelne Ressourcenklasse Noch zu zeigen: Wie wird auf sicheren Zustand geprüft? Zunächst einfache Variante: Nehme an, dass es eine einzige Ressourcenklasse gibt, die aber mehrere Ressourcen enthalten kann. – Bsp.: Es gibt 10 verschiedene Drucker. Wenn alle 10 Drucker durch Prozesse belegt sind, dann wird kein weiterer vergeben. Ein Prozess kann mehrere Drucker anfordern, aber nur bis zu einer bestimmten Maximalzahl 10 (nach Voraussetzung (2)). WS 2009/107

8 Bankieralgorithmus: Einzelne Ressourcenklasse Gegeben: – n Prozesse p 1, …, p n, die Ressourcen aus einer einzigen Klasse anfordern – Anzahl zur Verfügung stehender Ressourcen: V – Für jeden Prozess p i gibt es eine maximale Anzahl M i von Ressourcen, die der Prozess anfordern wird eine Anzahl von Ressourcen E i, die der Prozess zu einem bestimmten Zeitpunkt schon erhalten hat eine Anzahl von Ressourcen, die der Prozess nach diesem Zeitpunkt noch maximal anfordern wird: A i = M i - E i – Die Anzahl der freien Ressourcen zu diesem Zeitpunkt ergibt sich zu Es gilt weiterhin: M i V mit 1 i n E i M i mit 1 i n WS 2009/108

9 Bankieralgorithmus: Einzelne Ressourcenklasse Beispiel: – Es gibt V = 10 Instanzen einer Ressource. – 3 Prozesse p 1, p 2, p 3 – Maximale Anforderungen: – Zustand zum Zeitpunkt t: – Frage: Ist dies ein sicherer Zustand? WS 2009/109 MiMi p1p1 9 p2p2 4 p3p3 7 EiEi A i = M i – E i p1p1 36 = 9 – 3 P2P2 22 = 4 – 2F = 10 – 7 = 3 p3p3 25 =

10 Bankieralgorithmus: Einzelne Ressourcenklasse Nachweis, dass es sich um einen sicheren Zustand handelt: WS 2009/1010 EiEi AiAi MiMi p1p1 369 P2P2 224 p3p3 257 F = 10 – 7 = 3 EiEi AiAi MiMi p1p1 369 P2P2 404 p3p3 257 F = 10 – 9 = 1 EiEi AiAi MiMi p1p1 369 P2P2 0-- p3p3 257 F = 10 – 5 = 5 EiEi AiAi MiMi p1p1 369 P2P2 0-- p3p3 707 F = 10 – 10 = 0 EiEi AiAi MiMi p1p1 369 P2P2 0-- p3p3 0-- F = 10 – 3 = 7 Führe zunächst ausschließlich Prozess p 2 aus Freigabe durch Prozess p 2 Freigabe durch Prozess p 3 Jetzt kann Prozess 1 zu Ende gebracht werden!

11 Bankieralgorithmus: Einzelne Ressourcenklasse Weise nun zunächst Prozess p 1 eine weitere Ressource zu: Ist dieser Zustand immer noch sicher? Zur Erinnerung: – Ein Zustand ist sicher, wenn es auf jeden Fall eine deadlockfreie Restausführung aller Prozesse gibt, auch wenn die Prozesse ihre restlichen Anforderungen auf einen Schlag stellen und Freigaben erst bei Prozessbeendigung durchführen. WS 2009/1011 EiEi AiAi MiMi p1p1 369 P2P2 224 p3p3 257 F = 10 – 7 = 3 EiEi AiAi MiMi p1p P2P2 224 p3p3 257 F = 10 – 8 = 2

12 Bankieralgorithmus: Einzelne Ressourcenklasse Antwort: Der Zustand ist nicht sicher! Nimmt man den worst case an, dass alle Prozesse ihre Ressourcen künftig auf einen Schlag anfordern, so kann man Prozesse p 1 und p 3 nicht ausführen. Führe Prozess p 2 aus. Nur p 2 verbleibt als Möglichkeit. WS 2009/1012 EiEi AiAi MiMi p1p P2P p3p3 257 F = 10 – 8 = 2

13 EiEi AiAi MiMi p1p1 459 P2P2 404 p3p3 257 F = 10 – 10 = 0 Bankieralgorithmus: Einzelne Ressourcenklasse Nachweis, dass es sich um einen unsicheren Zustand handelt: Mit den jetzt zur Verfügung stehenden 4 freien Ressourcen lassen sich weder Prozess p 1 noch Prozess p 3 ausführen, wenn sie ihre Ressourcenanforderungen sofort stellen und vor Prozessbeendigung nichts freigeben. Der Zustand ist unsicher. WS 2009/1013 EiEi AiAi MiMi p1p1 459 P2P2 224 p3p3 257 F = 10 – 8 = 2 EiEi AiAi MiMi p1p1 459 P2P2 0-- p3p3 257 F = 10 – 6 = 4 Führe Prozess p 2 bis zum Ende aus Freigabe durch Prozess p 2

14 Bankieralgorithmus: Einzelne Ressourcenklasse Überprüfung auf sicheren Zustand: – Teste, ob es einen Prozess gibt, dessen Anforderungen alle mit den verfügbaren Ressourcen erfüllt werden können. – Nimm an, dass dieser Prozess ausgeführt wird und alle seine Ressourcen danach freigegeben werden. – Teste, ob es nun einen anderen Prozess gibt, dessen Ressourcenanforderung erfüllt wird und verfahre mit diesem Prozess gleichermaßen. – Der Zustand ist sicher, wenn auf diese Weise alle Prozesse virtuell zu Ende gebracht werden können. – Sonst ist der Zustand unsicher. WS 2009/1014

15 Bankieralgorithmus: Einzelne Ressourcenklasse Bemerkung: – Im Allgemeinen kann es mehrere Prozesse geben, die virtuell ausgeführt werden können. – Das Endergebnis ist aber immer das Gleiche! – Grund: Nach virtueller Prozessausführung und Freigabe aller Ressourcen eines Prozesses p i können höchstens mehr Ressourcen zur Verfügung stehen. Alle Prozesse p j, die vorher ausführbar waren, sind nach Ausführung von p i auf jeden Fall immer noch ausführbar. Würde sich nach einer Ressourcenanforderung ein unsicherer Zustand ergeben, dann wird die Anforderung nicht erfüllt und der Prozess wird blockiert. Ansonsten wird Ressourcenanforderung erfüllt. In der Praxis führt der Bankieralgorithmus daher die Prozesse im Allgemeinen also nicht sequentiell aus, sondern quasi-parallel! Die Tests auf Sicherheit von Zuständen beschränken die Quasi-Parallelität allerdings in gewisser Weise – mit dem Vorteil, dass Deadlocks garantiert verhindert werden. WS 2009/1015

16 Bankieralgorithmus: Mehrere Ressourcenklassen Mehrere Ressourcenklassen, z.B. Drucker, Plotter, … Gegeben: – n Prozesse p 1, …, p n, die Ressourcen aus Klassen K 1, …, Km anfordern – Anzahl zur Verfügung stehender Ressourcen aus Klasse K k : V k (1 k m) Vektor verfügbarer Ressourcen (V1, …, Vm) – Für jeden Prozess p i und jede Ressourcenklasse K k gibt es eine maximale Anzahl M ik von Ressourcen der Klasse K k, die der Prozess p i anfordern wird Maximalanforderungsmatrix WS 2009/1016 M 11 M 12 M 13 …M 1m M 21 M 22 M 23 …M 2m …………… M n1 M n2 M n3 …M nm Zeile i gibt Maximalanforderungen von Prozess i an

17 E 11 E 12 E 13 …E 1m E 21 E 22 E 23 …E 2m …………… E n1 E n2 E n3 …E nm Eine Anzahl E ik von Ressourcen der Klasse K k, die der Prozess p i zu einem bestimmten Zeitpunkt schon erhalten hat. Belegungsmatrix eine Anzahl von Ressourcen der Klasse K k, die der Prozess p i nach diesem Zeitpunkt noch maximal anfordern wird: A ik = M ik - E ik Restanforderungsmatrix Bankieralgorithmus: Mehrere Ressourcenklassen WS 2009/10 Zeile i gibt an, welche Ressourcen Prozess i schon erhalten hat. A 11 A 12 A 13 …A 1m A 21 A 22 A 23 …A 2m …………… A n1 A n2 A n3 …A nm Zeile i gibt an, welche Ressourcen Prozess i maximal noch anfordern wird.

18 Bankieralgorithmus: Mehrere Ressourcenklassen Die Anzahl der freien Ressourcen der Klasse Kk zu diesem Zeitpunkt ergibt sich zu Ressourcenrestvektor (F 1, …, F m ) – Es gilt weiterhin: E ik M ik V k mit 1 i n, 1 k m – Bankieralgorithmus für mehrere Ressourcenklassen funktioniert analog zum Bankieralgorithmus für eine Ressourcenklasse. Einziger Unterschied: Der Vergleich natürlicher Zahlen wird ersetzt durch den Vergleich von Vektoren natürlicher Zahlen. Für zwei Vektoren (v 1, …, v m ), (w 1, …, w m ) m gilt (v 1, …, v m ) (w 1, …, w m ) gdw. v i w i mit 1 i m WS 2009/1018

19 Bankieralgorithmus: Mehrere Ressourcenklassen Überprüfung auf sicheren Zustand: – Teste, ob es einen Prozess p i gibt, dessen Anforderungen alle mit den verfügbaren Ressourcen erfüllt werden können, d.h. teste, ob es eine Zeile i in Anforderungsmatrix gibt, die kleiner ist als Ressourcenrestvektor: (A i1, …, A im ) (F 1,…, F m ) (das ist nötig, da wir den worst case annehmen, dass ein Prozess alle restlichen Ressourcen auf einen Schlag anfordert und Ressourcen erst am Schluss freigibt) – Markiere den Prozess p i WS 2009/1019

20 Bankieralgorithmus: Mehrere Ressourcenklassen Überprüfung auf sicheren Zustand (ff): – Nimm an, dass dieser Prozess ausgeführt wird und alle seine Ressourcen danach freigegeben werden, d.h. addiere (E i1, …, E im ) zu (F 1,…, F m ). – Teste, ob es nun einen anderen Prozess p j gibt, dessen Ressourcenanforderung erfüllt wird (A j1, …, A jm ) (F 1,…, F m ) und verfahre mit diesem Prozess gleichermaßen. – Der Zustand ist sicher, wenn auf diese Weise alle Prozesse markiert worden sind, d.h. virtuell zu Ende gebracht werden konnten. – Sonst ist der Zustand unsicher und die nicht-markierten Prozesse sind an dem potentiellen Deadlock beteiligt. WS 2009/1020

21 Bankieralgorithmus: Mehrere Ressourcenklassen Beispiel – Vektor verfügbarer Ressourcen: – Maximalanforderungsmatrix – Aktuelle Belegungsmatrix – Aktuelle Restanforderungsmatrix – Ressourcenrestvektor WS 2009/1021 M:2011Prozess Prozess Prozess 3 E:0010Prozess Prozess Prozess 3 A:2001Prozess Prozess Prozess 3 F =(2100) V =(4231) Bandlaufwerke Scanner CD-ROM Plotter

22 Bankieralgorithmus: Mehrere Ressourcenklassen Frage: Befinden wir uns in einem sicheren Zustand? Bankieralgorithmus WS 2009/1022

23 Bankieralgorithmus: Mehrere Ressourcenklassen Beispiel – Vektor verfügbarer Ressourcen: – Maximalanforderungsmatrix – Aktuelle Belegungsmatrix – Aktuelle Restanforderungsmatrix – Ressourcenrestvektor WS 2009/1023 M:2011Prozess Prozess Prozess 3 E:0010Prozess Prozess Prozess 3 A:2001Prozess Prozess Prozess 3 F =(2100) V =(4231) Bandlaufwerke Scanner CD-ROM Plotter Nur 3. Zeile A 3 = ( ) der Restanforderungsmatrix ist kleiner gleich Ressourcenrestvektor F = ( ).

24 Bankieralgorithmus: Mehrere Ressourcenklassen Beispiel – Vektor verfügbarer Ressourcen: – Maximalanforderungsmatrix – Aktuelle Belegungsmatrix – Aktuelle Restanforderungsmatrix – Ressourcenrestvektor WS 2009/1024 M:2011Prozess Prozess Prozess 3 E:0010Prozess Prozess Prozess 3 A:2001Prozess Prozess Prozess 3 F =(0(0000)0) V =(4231) Bandlaufwerke Scanner CD-ROM Plotter Ausführung von Prozess 3

25 Bankieralgorithmus: Mehrere Ressourcenklassen Beispiel – Vektor verfügbarer Ressourcen: – Maximalanforderungsmatrix – Aktuelle Belegungsmatrix – Aktuelle Restanforderungsmatrix – Ressourcenrestvektor WS 2009/1025 M:2011Prozess Prozess Prozess 3 E:0010Prozess Prozess Prozess 3 A:2001Prozess Prozess Prozess 3 F =(2(2220)0) V =(4231) Bandlaufwerke Scanner CD-ROM Plotter Ressourcenfreigabe

26 Bankieralgorithmus: Mehrere Ressourcenklassen Beispiel – Vektor verfügbarer Ressourcen: – Maximalanforderungsmatrix – Aktuelle Belegungsmatrix – Aktuelle Restanforderungsmatrix – Ressourcenrestvektor WS 2009/1026 M:2011Prozess Prozess Prozess 3 E:0010Prozess Prozess Prozess 3 A:2001Prozess Prozess Prozess 3 F =(2(2220)0) V =(4231) Bandlaufwerke Scanner CD-ROM Plotter Nur 2. Zeile A 2 = ( ) der Restanforderungsmatrix ist kleiner gleich Ressourcenrestvektor F = ( ).

27 Bankieralgorithmus: Mehrere Ressourcenklassen Beispiel – Vektor verfügbarer Ressourcen: – Maximalanforderungsmatrix – Aktuelle Belegungsmatrix – Aktuelle Restanforderungsmatrix – Ressourcenrestvektor WS 2009/1027 M:2011Prozess Prozess Prozess 3 E:0010Prozess Prozess Prozess 3 A:2001Prozess Prozess Prozess 3 F =(1(1210)0) V =(4231) Bandlaufwerke Scanner CD-ROM Plotter Ausführung von Prozess 2

28 Bankieralgorithmus: Mehrere Ressourcenklassen Beispiel – Vektor verfügbarer Ressourcen: – Maximalanforderungsmatrix – Aktuelle Belegungsmatrix – Aktuelle Restanforderungsmatrix – Ressourcenrestvektor WS 2009/1028 M:2011Prozess Prozess Prozess 3 E:0010Prozess Prozess Prozess 3 A:2001Prozess Prozess Prozess 3 F =(4(4221)1) V =(4231) Bandlaufwerke Scanner CD-ROM Plotter Ressourcenfreigabe

29 Bankieralgorithmus: Mehrere Ressourcenklassen Beispiel – Vektor verfügbarer Ressourcen: – Maximalanforderungsmatrix – Aktuelle Belegungsmatrix – Aktuelle Restanforderungsmatrix – Ressourcenrestvektor WS 2009/1029 M:2011Prozess Prozess Prozess 3 E:2011Prozess Prozess Prozess 3 A:0000Prozess Prozess Prozess 3 F =(2(2220)0) V =(4231) Bandlaufwerke Scanner CD-ROM Plotter Ausführung von Prozess 1

30 Bankieralgorithmus: Mehrere Ressourcenklassen Beispiel – Vektor verfügbarer Ressourcen: – Maximalanforderungsmatrix – Aktuelle Belegungsmatrix – Aktuelle Restanforderungsmatrix – Ressourcenrestvektor WS 2009/1030 M:2011Prozess Prozess Prozess 3 E:0000Prozess Prozess Prozess 3 A:----Prozess Prozess Prozess 3 F =(4(4230)0) V =(4231) Bandlaufwerke Scanner CD-ROM Plotter Ressourcenfreigabe

31 Bankieralgorithmus: Mehrere Ressourcenklassen Frage: Befinden wir uns in einem sicheren Zustand? Bankieralgorithmus Zustand ist sicher. WS 2009/1031

32 Bankieralgorithmus: Analyse Ist mit dem Bankieralgorithmus das Deadlock-Problem restlos gelöst? Leider nein, da – Prozesse können meist nicht im Voraus eine verlässliche Obergrenze für ihre Ressourcenanforderungen geben (zumindest nicht exakt genug, so dass das System nicht durch Überschätzung des Ressourcenbedarfs zu ineffizienter Ausführung gezwungen wird). – Garantierte Obergrenzen würden häufig sogar die Anzahl der verfügbaren Ressourcen übersteigen, aber durch ständiges Zuweisen und Freigeben von Ressourcen stellt dies trotzdem kein Problem dar. – Üblicherweise werden Prozesse dynamisch neu erzeugt werden und sind nicht statisch vorhanden. – Ressourcen können auch plötzlich verschwinden (z.B. Bandlaufwerke fallen aus). Bankieralgorithmus ist in der Theorie schön, löst aber nicht alle praktischen Probleme. Zur Deadlock-Verhinderung sind Informationen über zukünftige Ressourcen-Anforderungen nötig, die nicht bekannt sind! WS 2009/1032

33 Angriff auf wechselseitigen Ausschluss Wechselseitiger Ausschluss: Jede Ressource ist entweder verfügbar oder genau einem Prozess zugeordnet. Auf wechselseitigen Ausschluss kann man nicht verzichten. – Gleichzeitiges Drucken zweier Prozesse auf dem gleichen Drucker??? In gewissen Situationen lässt sich wechselseitiger Ausschluss aber einschränken. Bsp.: Drucken – Spooling: Prozesse drucken nicht direkt auf den Drucker, sondern in ein globales Spooling-Verzeichnis. – Es gibt einen ständig laufenden Prozess (Drucker-Dämon), der als einziger den Drucker reserviert und Dateien aus dem Spooling- Verzeichnis der Reihe nach druckt. – Keine Deadlock-Probleme aufgrund Drucker-Zugriff, da nur ein einziger Prozess auf den Drucker zugreift. – Das funktioniert perfekt, wenn Speicher im Spooling-Verzeichnis unbegrenzt ist. WS 2009/1033

34 Angriff auf wechselseitigen Ausschluss Bsp.: Drucken –... – In Realität: Deadlock-Probleme, wenn Speicher im Spooling- Verzeichnis begrenzt / zu gering (Konkurrenz um Plattenplatz) – Szenario: 2 Prozesse füllen Spooling-Speicher je zur Hälfte, sind noch nicht fertig mit Drucken Aus Effizienzgründen normalerweise Druckbeginn erst, wenn Dateien komplett ins Spooling-Verzeichnis gedruckt. Keiner der beiden Prozesse wird fertig! Deadlock Allgemeines Prinzip: – Teile Ressourcen nur zu, wenn unbedingt nötig. – Möglichst wenig Prozesse sollen Ressource selbst anfordern dürfen. WS 2009/1034

35 Angriff auf Hold-and-Wait-Bedingung Hold-and-wait-Bedingung: Prozesse, die schon Ressourcen reserviert haben, können noch weitere Ressourcen anfordern. Lösungsansätze zur Auflösung der Hold-and-wait-Bedingung: – Prozesse müssen benötigte Ressourcen immer auf einmal und im Voraus anfordern. – Teilweise benutzt bei Betriebssystemen von Großrechnern. – Funktioniert nicht, wenn Prozesse Ressourcenbedarf nicht im Voraus kennen. – (siehe Bankieralgorithmus) – Keine effiziente Ressourcennutzung, da Ressourcen unnötig lange belegt. Vor Ressourcenanforderung werden alle Ressourcen kurzzeitig freigegeben, dann zusammen mit der neuen Ressource neu angefordert. WS 2009/1035

36 Angriff auf Ununterbrechbarkeit Ununterbrechbarkeit: Ressourcen, die einem Prozess bewilligt wurden, können nicht gewaltsam wieder entzogen werden. Kaum zu realisieren, dass Ressourcennutzung jederzeit ohne Schaden von außen unterbrochen werden kann. WS 2009/1036

37 Angriff auf zyklische Wartebedingung Zyklische Wartebedingung: Es muss eine zyklische Kette von Prozessen geben, von denen jeder auf eine Ressource wartet, die dem nächsten Prozess in der Kette gehört. Lösungsansätze zur Beseitigung der zyklischen Wartebedingung: – Jeder Prozess kann nur eine Ressource auf einmal belegen. Vorgehen in vielen Fällen unannehmbar – Ressourcen werden durchnummeriert. Reihenfolge der Ressourcenanforderung darf nur in aufsteigender Reihenfolge erfolgen. Belegungs-Anforderungsgraph kann dann nicht zyklisch werden. Schwierigkeit, eine Ordnung zu finden, die allen Anforderungen gerecht wird. WS 2009/1037

38 Zusammenfassung Deadlock-Verhinderung ist schwierig, da dazu im Allgemeinen Informationen über zukünftige Ressourcen- Anforderungen nötig sind, die nicht bekannt sind! Deadlock-Freiheit kann zwar prinzipiell erreicht werden, häufig jedoch um den Preis starker Effizienz-Verluste. Häufig verzichtet man in der Praxis daher auf absolute Garantien für Deadlock-Freiheit. Warum geht bei solchen Systemen trotzdem meistens nichts schief? – Weil sie nicht an ihrem Ressourcen-Limit betrieben werden. WS 2009/1038


Herunterladen ppt "Systeme 1 Kapitel 7.1 Deadlocks WS 2009/101. Organisatorisches Zwischenklausur Sa. 19.12.09: – 10 Uhr s.t. (45 Minuten) – Räume 101-026/036 – Stoff: Vorlesung."

Ähnliche Präsentationen


Google-Anzeigen