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

操作系统——信号量机制

作者: 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