22.04.2014 Aufrufe

Eine Methode zur formalen Modellierung von ...

Eine Methode zur formalen Modellierung von ...

Eine Methode zur formalen Modellierung von ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

170 Prozeverwaltung<br />

Ein Proze kann nur erzeugt werden, wenn freier Speicherplatz in ausreichender Groe<br />

vorhanden ist. Wir gehen da<strong>von</strong> aus, da jedem Proze eine feste Anzahl <strong>von</strong> Seitenrahmen<br />

im Arbeitsspeicher <strong>zur</strong> exklusiven Nutzung <strong>zur</strong> Verfugung steht, siehe Kapitel 5. Der<br />

globale Speicherverwalter benotigt Informationen uber die Anzahl <strong>von</strong> Seitenrahmen und<br />

die Seiten, durch die ein Proze beschrieben wird. Dies wird durch die Funktion Mem<br />

bestimmt, die wir in Abschnitt 7.7.2 erklaren.<br />

Der Prozeverwalter entnimmt aus PQ einen nachsten Auftrag order und uberpruft mit<br />

Hilfe des globalen Speicherverwalters, ob genugend freie Seitenrahmen <strong>zur</strong> Verfugung stehen.<br />

Ist dies der Fall, wird ein Proze Pj = Id(order) mit dem entsprechenden Programm<br />

erzeugt, sobald der Speicherplatz belegt ist. Pj wird der private Speicherverwalter SV Pj<br />

zugeordnet, und beide werden in das bestehende System integriert. Dabei wird Pj initialisiert<br />

mit dem Programm Prog(order) und den Verbindungen zum Dispatcher, dem<br />

Kooperationsmanager KV Fam(order) und SV Pj . Ist die Erzeugung eines Pj abgeschlossen,<br />

hat der Prozeverwalter keine direkte Verbindung mehr zu Pj. Fur das Verhalten gilt:<br />

(1) Erhalt PV die Nachricht order und Ports ?!In l sowie ?!Out l uber Kanal PQtoPV,<br />

sendet er die Sequenz h Mem(order) Id(order) i uber Kanal PVtoGS und speichert<br />

order und l.<br />

PV wartet auf die Ruckmeldung des globalen Speicherverwalters und speichert<br />

den Auftrag sowie den Index der Ports ?!In und ?!Out.<br />

(2) Erhalt PV uber Kanal P QtoP V die Nachricht Empty, sendet er die Nachricht<br />

Next uber Kanal PVtoP Q.<br />

(3) Erhalt PV im Zustand (order l) die Nachricht NoMem uber Kanal GStoP V ,<br />

sendet er uber Kanal PVtoP Q die Sequenz h Next order ?!In l ?!Out l i.<br />

Der Proze kann nicht erzeugt werden, da nicht genugend Seitenrahmen frei sind.<br />

(4) Es gelten Pj = Id(order) und Fk = Fam(order).<br />

Erhalt PV im Zustand order uber Kanal GStoP V die Nachricht MemOk sowie<br />

die Ports ?SV toP j und !P jtoSV , wird ein neuer Proze Pj mit passender initialer<br />

Schnittstelle erzeugt. Zudem sendet PV die Nachricht Next uber Kanal PVtoP Q.<br />

Ein Proze Id(order) = Pj wird gema seiner Einordnung in das System mit einer initialen<br />

Schnittstelle versehen. Diese umfat die Kanale <strong>zur</strong> Umgebung, <strong>zur</strong> Queue des Dispatchers<br />

und zum Kooperationsverwalter der Familie. Zusatzlich erhalt Pj die privaten Ports, um<br />

sich beim Dispatcher anmelden zu konnen, und, in einem System mit nichtblockierendem<br />

Senden, die privaten Kanale, um das Rendezvous durchzufuhren. Gleichung (4) ergibt sich<br />

mit diesen Erlauterungen gema Schema (2.19) <strong>zur</strong> Erzeugung einer neuen Komponente<br />

aus Abschnitt 2.6. In (4) senden wir das Programm Prog(order) 2 (STEP V A Pi ) uber<br />

Kanal In i an den Proze. Der Vergleich mit der Spezikation eines Prozesses in Abschnitt<br />

4.3.3 zeigt, da ein Proze auf diese Weise gestartet wird. Wir verzichten auf die explizite<br />

Aufnahme des Zustands started in die Menge State Pi , da dieser Fall in unserer <strong>Modellierung</strong><br />

implizit speziziert wird.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!