Puehlhofer Betriebsysteme1-1.pdf - von Petra Schuster
Puehlhofer Betriebsysteme1-1.pdf - von Petra Schuster
Puehlhofer Betriebsysteme1-1.pdf - von Petra Schuster
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
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.