举例说明P、V操作为什么要求设计成原语(即对同一信号量上的操作必须互斥)。 P(S)操作: S.value-一: If(S.value

admin2013-09-16  20

问题 举例说明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(S)操作,而在临界区后执行V(S)操作。此时P,V操作不设计成原语,那么在执行P,V操作时进程可以被中断。由于在初始状态下,临界资源空闲,故应允许第一个申请临界资源的进程进入临界区使用临界资源,但如果该进程在执行到P操作的语句S.value-后(此时S.value的值为0)便被另一个进程中断,而那个进程也企图通过执行P(S)操作进入临界区,则第二个进程也必须执行语句S.value一一,从

解析
转载请注明原文地址:https://kaotiyun.com/show/PMxi777K
0

随机试题
最新回复(0)