美文网首页
操作系统——信号量机制

操作系统——信号量机制

作者: Qinglys | 来源:发表于2018-10-13 09:51 被阅读0次

整型信号量

信号量定义为一个整型量    根据初始情况赋相应的值    仅能通过两个原子操作来访问

P操作:

wait(s):
    while s<=0 do no-op;
    s:s-1;

V操作:

signal(s):
    s:=s+1;

记录型信号量

整型信号量符合”有限等待“原则    但不符合”让权等待“原则

改进:
    条件不符时应能够主动放弃

P操作:

wait():
    S.value = S.value - 1;
    if S.value < 0  then  block(S,L)

V操作:

signal():
     S.value = S.value+ 1;
     if S.value <= 0 then wakeup(S,L)

信号量的基本应用

1、实现进程互斥 

2、实现进程间的前驱关系(有序)

AND型信号量

出现原因:
    一些应用往往需要两个或多个共享资源,而不是前述的一个资源。进程同时要求的共享资源越多,发生死锁可能性越大。

解决思想:
     一次性分配给进程所需资源,用完一起释放。Wait操作时对它所有需要的资源都要判断,有AND条件,故称“AND同步”、“同时wait”。

信号量机制的不足

信号量的控制分布在多个进程中
    1、正确性分析困难;
    2、分散的P、V操作;易出错,使用不当可能导致死锁。
    3、修改、维护困难;易读性差,任一修改都可能影响全局;测试期间发现错误困难,及时发现也不容易定位出错位置。

相关文章

网友评论

      本文标题:操作系统——信号量机制

      本文链接:https://www.haomeiwen.com/subject/zmznaftx.html