20.05.2014 Aufrufe

Puehlhofer Betriebsysteme1-1.pdf - von Petra Schuster

Puehlhofer Betriebsysteme1-1.pdf - von Petra Schuster

Puehlhofer Betriebsysteme1-1.pdf - von Petra Schuster

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

BETRIEBSSYSTEME 27<br />

o<br />

o<br />

Haben sich Prozesse an der Semaphore blockiert, wird einer<br />

ausgewählt und aktiviert (aufgeweckt).<br />

Semaphoren können sowohl für den gegenseitigen Ausschluß<br />

(mutual exclusion) wie auch für die Synchronisation<br />

verwendet werden.<br />

0RQLWRUH<br />

Semaphore können zwar alle Synchronisationsprobleme lösen, sind in der<br />

Anwendung aber sehr fehlerträchtig.<br />

Es besteht deshalb die Notwendigkeit, höhere Synchronisationsmechanismen<br />

einzusetzen.<br />

Monitore wurde 1974/75 <strong>von</strong> Hoare und Hansen vorgeschlagen.<br />

• Ein Monitor besteht aus einer Menge <strong>von</strong> Prozeduren, Variablen und<br />

Datenstrukturen, die in einem besonderen Paket zusammengefasst<br />

sind.<br />

• Prozesse können Prozeduren auf einem Monitor aufrufen, wann<br />

immer sie es möchten, aber sie können nicht über Prozeduren, die<br />

außerhalb des Monitors deklariert sind, auf die internen<br />

Datenstrukturen des Monitors zugreifen.<br />

• In einem Monitor kann zu jedem Zeitpunkt nur höchstens ein Prozeß<br />

aktiv sein.<br />

• Monitor werden <strong>von</strong> der verwendeten Programmiersprachen zur<br />

Verfügung gestellt. Der gegenseitige Ausschluß wird durch den<br />

Compiler unter Verwendung <strong>von</strong> Semaphoren realisiert. Durch die<br />

automatische Erzeugung des Codes ist ein Fehler aber weniger<br />

wahrscheinlich als bei manueller Erstellung.<br />

%HGLQJXQJVYDULDEOHQ<br />

Bedingungsvariablen und die auf ihnen definierten Funktionen WAIT und<br />

SIGNAL ermöglichen es, Prozesse zu blockieren bzw. zu aktivieren.<br />

Die Funktion WAIT wird <strong>von</strong> einem Prozeß aufgerufen, wenn er feststellt,<br />

daß er nicht weiterarbeiten kann, Er blockiert sich damit an einer<br />

Bedingungsvariablen.<br />

Die Funktion SIGNAL auf einer Bedingungsvariablen ausgeführt, aktiviert<br />

einen an dieser Bedingungsvariablen blockierten Prozeß.<br />

Ruft ein Prozeß innerhalb des Monitors die WAIT Funktion auf, so blockiert<br />

er sich und ein anderer Prozeß kann den Monitor betreten.<br />

Ruft ein Prozeß innerhalb des Monitors die SIGNAL Funktion auf, so muß<br />

anschließend der Monitor sofort verlassen werden, damit nicht zwei Prozesse<br />

im Monitor aktiv sind. M.a.W., die SIGNAL Funktion muß als letzte<br />

Anweisung in der Monitorprozedur stehen.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!