Für die Thematik dieses Abschnitts muß der Begriff des Tasks und der Begriff der kritischen Ressource weiter präzisiert werden.
Bislang war der Begriff des Tasks intern unspezifiert. Ein Tasks war 'ein Task'
. Jetzt benötigt man für den Task eine spezifische Struktur, um die weiteren Begriffe einführen zu können. Ein Task
ist ab jetzt ein n-Tupel aus Sektionen
ist also die j-te Sektion des i-ten Tasks. Jede Sektion eines Tasks ist ein geordnetes Paar bestehend aus einer Dauer
und einem Kodeabschnitt
. Der Kodeabschnitt
ist entweder normaler Kode
oder kritischer Kode
.
Betrachtet man einen Befehl als eine Zeichenkette ('string') aus der Menge aller möglichen Zeichenketten über einem Alphabet
-geschrieben
-, dann kann man die Menge aller solcher Befehle ('commands')
einführen
Die Zeichenketten ,
seien zwei Befehle, auch geschrieben
bzw.
. Es soll gelten:
d.h. ein kritische Kode ist ein solcher, in dem hintereinander ein Lock- und dann ein unlock-Befehl bezogen auf den gleichen Semaphor
auftritt, dazwischen kann irgendeine Folge von Befehlen stehen, allerdings keine anderen Locks oder Unlocks des Semaphoren
. Durch
wird ein Semaphor
angefordert, dem eine Ressource
zugeordnet ist und durch
wird diese Ressource
wieder freigegeben. Entsprechend soll gelten:
d.h. ein nichtkritischer Kode besteht aus einer Folge von Befehlen, von denen keiner ein Lock- oder ein Unlock-Befehl ist.
Seien
zwei kritische Kodeabschnitte. Die bisherigen Definition schließen nicht aus, daß der eine kritische Kode
im Verhältnis der
zum anderen kritischen Kode
steht, also
.
Die maximale Verarbeitungszeit aus der technischen Tabelle
ist dann zu verstehen als die Summe aller partiellen Ausführungszeiten
jeder Sektion
eines Tasks
, also
mit als Anzahl der Sektionen eines Tasks und
als Dauer der j-ten Sektion des i-ten Task.
Gerd Doeben-Henisch 2013-01-16