BS Aufgabe 3

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

BS Aufgabe 3
Kann mir jemand erklären, wer die Klasse Secure benutzt? Oder kommt das erst in einer der nächsten Aufgaben?

Und ich wundere mich auch über die Funktion relay. Diese soll ja, wenn es möglich ist, den Epilog sofort ausführen, auch wenn eventuell noch Einträge in der Epilogwarteschlange sind. Kann das nicht zu ungewünschten Nebeneffekten kommen, wenn die Epiloge in einer anderen Reihenfolge abgarbeitet werden als das sie eingehängt werden?


Secure kannst du jetzt verwenden, um jegliche kritische Abschnitte zu sichern, ohne einen Deadlock zu fabrizieren. Zum Beispiel die Testausgabe in der Application.

Dein leave () sollte die Epiloge schon in der Reihenfolge abarbeiten, in der sie eingehaengt worden sind (FIFO). Wenn in relay () weitere IRs reinhauen, dann stoert das auch nicht, weil zu dem Zeitpunkt sowieso alle IRs disabled sind (bei der PC-Architektur)…


aber beim relay wird der momentane Epilog doch als erstes ausgeführt, anstatt nach den anderen einträgen, die ja erst beim leave abgearbeitet werden.


Dann würden die Epiloge halt in einer anderen Reihenfolge ausgeführt, als die zugehörigen Unterbrechungen… das wär doch knülke!


aber wenn jeder epilog einer ausgabe entspricht, wär das ziemlich ungut.

oder ist genau dafür dann Secure da?
Hmmm, ich glaub, so langsam wirds klarer :slight_smile:

wär mir nur niemals in den Sinn gekommen, dass eine Ausgabe ein kritischer Abschnitt ist


Dann ist deine Implementierung nicht richtig. Wenn du in das relay () kommst und es gibt schon Epiloge, die abgearbeitet werden (= man befindet sich in einem kritischen Abschnitt), dann darfst du deinen neuen nur einhaengen (hinten). Nur, falls im Moment keine abgearbeitet werden, darfst du sofort mit deinem Epilog beginnen. Wenn waehrenddessen ein neuer IR eintrifft, dann tritt obiger Fall fuer den neuen IR ein. Ist das verstaendlich?

Es gibt aber trotzdem einen Fall, bei dem die Reihenfolge der Bearbeitung umgedreht wird: Wenn zwischen dem IR-disablen und der Abarbeitung des Epilogs ein neuer IR eintrifft, dann wird dessen Epilog zuerst abgearbeitet. Oder?