问答题
举例说明P、V操作为什么要求设计成原语(即对同一信号量上的操作必须互斥)。P(S)操作:
S.value--:
If(S.value<0)
Add this process to S.L;
Block( ):
V(S)操作
S.value++;
If(S.value<=0)
Remove a process P from S.L;
Wakeup(P):
【参考答案】
例如,用P,V操作来实现进程对临界资源互斥使用。此时,只需定义一个信号量s,其初值{1,NULL},并在临界区前执行P(......
(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)