问答题

举例说明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(......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)