Semaphore

  • Moin,


    für a): Am Anfang hast du SA=1, SB=2, SC=1


    Task A würde SA erstmal um 4 verringern, da er mit 4x P(SA) beginnt. Task A kann also nicht laufen.
    Task B verringert SB um 2 (2x P(SB)), erhöht dann SA und SC jeweils um einen -> Task kann laufen
    Task C kann am Anfang nicht laufen, da er SC um 2 verringert, SC aber zu Beginn nur auf 1 steht


    -> Task B läuft zuerst, neue Werte: SA=2, SB=0, SC=2


    Und jetzt gehst du wieder die Tasks durch und guckst welche laufen könnte. irgendwann bist du entweder wieder bei SA=1, SB=2, SC=1 oder es geht nix mehr, dann hörst du jeweils auf.


    Gruß,
    Chris

  • Du musst schauen ob ein Prozess ablaufen kann oder nicht!
    Damit A ablaufen kann muss SA mindesten 4 sein, da P(SA) bei SA einen abzieht und 4 mal P(SA) in Prozess A vorkommt. B kann nur ablaufen wenn SB mind. 2 ist da zweimal P(SA) vorkommt. Damit C ablaufen kann muss SC entsprechen mind. 2 sein. V(SA) erhöht SA um einen V(SB) SB um einen usw.
    Nun guckst du dir die Startwerte an SA=1 SB=2 SC=1. A kann nicht ablaufen und C nicht, B kann ablaufen. SB wird also um 2 veringert und SA und SC um einen erhöht, damit hab ich die neuen Werte: SA=2 SB=0 SC=2. Nun kann nur C ablaufen, SC wird um 2 verringert, SB um 2 erhöht und SA um einen erhöht, macht: SA=3 SB=2 SC=0. Nun kann B ablaufen, so geht immer weiter, wenn garnicht ablaufen kann ist halt ende, wenn die gleichen Werte für SA SB SC erreicht werden, die schonmal da waren, geht halt immer im Kreis wie bei a).
    Hoffe das hilft!