首页 > 试题广场 >

当一进程因在记录型信号量S上执行V(S)操作而导致唤醒另一进

[单选题]
当一进程因在记录型信号量S上执行V(S)操作而导致唤醒另一进程后,S的值为()。
  • >0
  • <0
  • ≥0
  • ≤0
注意理解题意,是唤醒一个进程,所以V<=0时会唤醒一个进程。
发表于 2016-07-08 21:44:22 回复(0)
更多回答
记录型信号量是针对整数型信号量只能记录资源的数目,不满足让权等待的问题提出,记录型信号量是一个数据结果,包括了资源的数目和等待使用该资源的阻塞进程队列,当一个进程申请资源进行p操作失败(资源数目<0),进程进入阻塞队列,不会死循环等待。当一个进程使用完资源,进行v操作后(资源数目+1),如果阻塞队列不为空(资源数目≤0),唤醒队列的一个进程。 这个题目中,存在唤醒行为,则阻塞队列不为空,如果队列中只有一个进程,那么唤醒该进程后,资源数目0,如果队列有多个进程阻塞,那么唤醒一个进程后,资源数目还是<0。 记住记录型信号量中,等待资源的进程数是Ⅰs.valueⅠ,因此当s.value=0时,表示没有进程在等待资源。
发表于 2019-08-14 22:28:17 回复(0)
唤醒另一进程,说明有进程可被唤醒,就是说有进程在等待进行临界区,若V操作前只有一个进程在等待,则V操作之后S=0,若V操作前有多个进程在等待,是V操作之后S<0,所以,综合来说,S<=0
发表于 2015-09-05 22:05:14 回复(1)
PV操作:1)semaphore的取值必须大于或等于0。0表示当前已没有空闲资源,而正数表示当前空闲资源的数量;2) semaphore的取值可正可负,负数的绝对值表示正在等待进入 临界区 的进程个数。
P原语:P是荷兰语Proberen(测试)的首字母。为阻塞原语,负责把当前进程由运行状态转换为阻塞状态,直到另外一个进程唤醒它。操作为:申请一个空闲资源(把信号量减1),若成功,则退出;若失败,则该进程被阻塞;
V原语:V是荷兰语Verhogen(增加)的首字母。为唤醒原语,负责把一个被阻塞的进程唤醒,它有一个参数表,存放着等待被唤醒的进程信息。操作为:释放一个被占用的资源(把信号量加1),如果发现有被阻塞的进程,则选择一个唤醒之。
发表于 2015-08-22 15:30:37 回复(1)
大多解析都有点问题。
注意是:记录型信号量。很多人都当成整型信号量来分析了。
记录型信号量不会出现“忙等”的现象,就是S<=0时不会不停while循环尝试,所以题目说是唤醒另一个进程
记录型信号量有一个进程链表指针L,V(S)之后,判断是否S<=0,是的话,就说明等待队列上有进程,所以就wakeup(S.L)唤醒一个等待队列里的进程。目的是提醒这个进程可以占用刚刚释放掉的这个资源了记录型信号量不会忙等,就是因为采用了这种机制
看看记录型信号量下面这段代码就更明确了。
既然执行V(S)操作能导致唤醒另一进程,说明if语句的判断为真,所以S<=0。
唤醒另一进程是否又P(S)没关系,后面的过程不考虑了。
procedure signal(S)
    var S:semaphore;
    begin
        S.value:=S.value+1;
        if S.value≤0 then wakeup(S,L);
    end 
编辑于 2018-11-23 23:42:43 回复(0)
D
唤醒进程,说明S的值小于0,被唤醒之后,所以S的值应该<=0.
发表于 2015-06-23 23:44:23 回复(0)
我觉得这个对信号量说得比较详细,http://c.biancheng.net/cpp/html/2598.html

发表于 2017-01-07 20:48:46 回复(0)
题目问的是,唤醒之后S的值是多少!!
发表于 2017-11-12 14:09:49 回复(0)
唤醒另一进程,说明有进程可被唤醒,就是说有进程在等待进行临界区,若V操作前只有一个进程在等待,则V操作之后S=0,若V操作前有多个进程在等待,是V操作之后S<0,所以,综合来说,S<=0
发表于 2017-04-20 10:04:46 回复(0)
D
唤醒进程,说明S的值小于0,被唤醒之后,所以S的值应该<=0.
发表于 2015-07-29 15:44:29 回复(0)
P原语操作的主要动作是:
(a)sem减1;
(b)若sem减1后仍大于或等于零,则进程继续执行;
(c)若sem减1后小于零,则该进程被阻塞后与该信号相对应的队列中,然后转进程调度。
V原语操作的主要动作是:
(a)sem加1;
(b)若相加结果大于或等于零,则进程继续执行;
(c)若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度。
发表于 2021-03-03 16:28:40 回复(0)
记录型信号量p操作S<0表示此时已经没有资源可分配;
                    v操作s<=0表示此时仍有一个或多个进程在等待,执行唤醒操作。
发表于 2019-05-11 09:15:48 回复(0)
S-1<0 则有S<1 所以S<=0
发表于 2016-06-19 00:31:48 回复(0)
被“唤醒”给迷糊了
发表于 2015-06-23 23:00:06 回复(0)