KMS Summer 2015 Aufgabe 05 SYNCHRONISATION In diesem Übungsblatt werden wir uns Synchronisationsverfahren widmen, um mehrere Prozesse miteinander zu koordinieren. Gegeben sei ein Computerhändler der eine gemeinsame Lagerhalle für Desktop-Rechner, Server, und Monitore hat. Diese Lagerhalle ist nach oben hin begrenzt. Beliefert wird er von einem Hersteller H, der bei jeder Lieferung 1 Server, 3 Desktop-Rechner und 2 Monitore bringt. Ein Techniker D liefert je Ausfahrt 1 Desktop-Rechner und 1 Monitor zum Kunden, ein anderer Techniker S je einen Server. Zum Be- und Entladen muss eine Laderampe benutzt werden, wobei immer nur eine Person diese zur gleichen Zeit verwenden kann. Separat betrachtet laufen diese 3 Prozesse folgendermaßen ab: Prozess H Prozess D Prozess S While(true): < zur Laderampe fahren > < 1 Server entladen > < 3 Deskt.-R. entladen > < 2 Monitore entladen > < Laderampe verlassen > While(true): < zur Laderampe fahren > < 1 Deskt.-R. beladen > < 1 Monitor beladen > < Laderampe verlassen > While(true): < zur Laderampe fahren > < 1 Server beladen > < Laderampe verlassen > Synchronisieren Sie diese drei Prozesse in geeigneter Weise, indem Sie mittels PseudocodeNotation Semaphoren deklarieren und entsprechende Semaphor-Operationen benutzen. Die genauen Bedingungen dazu finden Sie auf der nächsten Seite. Die Pseudocode-Notation zum Deklarieren eines Semaphors mit dem Namen name und Startwert n lautet: name(n) Die Operationen P(∙) und V(∙) eines Semaphors können dann mittels P(name) und V(name) ausgeführt werden. Seite 1 von 2 KMS Summer 2015 Aufgabe 05 Die kritischen Bereiche sind möglichst klein zu halten, und es müssen folgende Bedingungen erfüllt werden: Die Laderampe kann nur von jeweils einem Prozess gleichzeitig verwendet werden. Der Hersteller H darf nur zur Laderampe fahren, wenn er seine Ware komplett abladen kann. Der Techniker D darf nur zur Laderampe fahren, wenn sich noch mindestens ein Desktop-Rechner und ein Monitor im Lager befinden. Der Techniker S darf nur zur Laderampe fahren, wenn noch mindestens ein Server im Lager ist. Die Lagerhalle hat eine beschränkte Größe von insgesamt 24 Teilen (Desktop-Rechner, Monitore oder Server). Zu Beginn sind die Lagerhalle leer und die Laderampe frei. 1. Deklarieren Sie alle benötigten Semaphoren und erklären Sie deren Zweck. 2. Fügen Sie bei den Prozessen H, D, und S jeweils die Semaphor-Operationen P(∙) und V(∙) an geeigneter Stelle ein, um alle Bedingungen zu erfüllen. 3. Prüfen Sie, ob es bei dieser Konfiguration der Ent-/Belademenge zu Problemen kommen kann, und zeigen Sie dies mittels einer Prozessablauffolge von H, D, und S. 4. Passen Sie die Ent-/Belademenge an, damit keine Probleme mehr auftreten. 5. Implementieren Sie dieses Beispiel mittels posix_threads in C/C++, und erweitern Sie das Programm dahingehend, dass die Anzahl der Aufrufe der kritischen Bereiche während der Laufzeit mitgeloggt werden. Berechnen Sie das Verhältnis der entsprechenden Ausführungen für alle drei Prozesse und vergleichen Sie es mit einem analytischen Ansatz. Seite 2 von 2
© Copyright 2024 ExpyDoc