首页 > 试题广场 >

若信号量S的初值是2,当前值为-3,则表示有( )个进程在S

[单选题]
若信号量S的初值是2,当前值为-3,则表示有( )个进程在S上等待
  • 0
  • 1
  • 2
  • 3
//信号量 wait 操作
wait(semaphore *S) {
    S->value--;
    if(S->value < 0 ){
         add this process to S->list;   //移入等待队列
         block( );  //阻塞进程
     }
}
//信号量 signal 操作
signal(semaphore *S) {
    S->value++;
    if(S->value <= 0){
        remove a process P from S->list;   //从等待队列中删除
        wakeup(P);  //唤醒进程
    }
}

这里-3即有3个等待的进程
发表于 2017-06-18 10:56:56 回复(0)
信号量控制互斥问题时,其初值往往代表资源的个数。本题初值为2,说明该种资源数量2个。当进程将2个资源全部占有之后,信号量值减至0,此时若再有进程要求申请该资源,则必须在此信号量上等待,具体表现为:将信号量的值减1,导致信号量的取值为负。此时有几个进程申请该资源,信号量便被减几次;因此S的值为-3,则表示有3个进程在等待该资源。
发表于 2017-06-18 10:05:36 回复(0)
信号量的初值是2,代表系统中总共有2分这种资源,而现在的当前值是-3。
则是在分配完已有的2个资源,还有3个进程还在等待该资源。
发表于 2017-09-16 08:38:16 回复(1)