1
0
mirror of https://github.com/Didnelpsun/CS408.git synced 2026-11-03 13:53:45 +08:00
This commit is contained in:
Didnelpsun
2022-08-30 22:54:15 +08:00
parent b683d3c889
commit 58d8631dbe
3 changed files with 54 additions and 15 deletions

View File

@@ -846,6 +846,8 @@ flag[1] = false; // ⑩ 访问完临界区,表示自己已经不想访问临
remainder section;
```
如果出现两个进程并发的情况,则其中一个进程必然被卡住,另一个进程必然会执行,所以不存在饥饿和死锁问题。
$Peterson$算法用软件方法解决了进程互斥问题,遵循了空闲让进、忙则等待、有限等待三个原则,但是依然未遵循让权等待的原则。
### 进程互斥硬件实现
@@ -1610,7 +1612,7 @@ monitor Demo {
条件变量与信号量:
+ 相似点:条件变量的$wait/signal$操作类似于信号量的$PV$操作,可以实现进程的阻塞/唤醒。
+ 不同点:条件变量是“没有值”的,仅实现了“排队等待”功能;而信号量是“有值”的,信号量的值反映了剩余资源数,而在管程中,剩余资源数用共享数据结构记录。
+ 不同点:条件变量是“没有值”的,仅实现了“排队等待”功能(所以一旦调用就不用判断,直接阻塞或释放);而信号量是“有值”的,信号量的值反映了剩余资源数,而在管程中,剩余资源数用共享数据结构记录。
#### 处理同步互斥问题