vault backup: 2025-03-17 09:39:23
This commit is contained in:
parent
b0a4184681
commit
cccc568cc5
2 changed files with 23 additions and 4 deletions
|
@ -35,5 +35,24 @@ Of course, `signal()` will have no effect on the last process who calls it.
|
|||
- For every condition C, a semaphore SEMC init at 0 and an integer $N_{C}$ init at 0 (to store and count the number of suspended processes on the given condition)
|
||||
- A semaphore PRIO init at 0 and an integer $N_{PR}$ init at 0 (to store and count the number of processes that have performed a signal, and so have priority to re-enter the monitor)
|
||||
|
||||
1. Every monitor operation starts with `MUTEX.down()` and ends with `if NPR > 0 then PRIO.up() else MUTEX.up()`
|
||||
2.
|
||||
Every monitor operation starts with `MUTEX.down()` and ends with `if NPR > 0 then PRIO.up() else MUTEX.up()`
|
||||
|
||||
```
|
||||
C.wait() :=
|
||||
NC++
|
||||
if NPR > 0 then
|
||||
PRIO.up()
|
||||
else
|
||||
MUTEX.up()
|
||||
SEMC.down()
|
||||
NC--
|
||||
return
|
||||
|
||||
C.signal() :=
|
||||
if NC > 0 then
|
||||
NPR++
|
||||
SEMC.up()
|
||||
PRIO.down()
|
||||
NPR--
|
||||
```
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue