美文网首页
2-3进程同步(信号量)

2-3进程同步(信号量)

作者: Liquor_4a19 | 来源:发表于2018-11-30 10:18 被阅读0次

    信号量是什么?

    信号量的基本应用

    实现多个进程互斥(注意点)

    (1)互斥信号量mutex初值为1;

    (2)每个进程中将临界区代码置于P(mutex)和V(mutex)原语之间

    (3)必须成对使用P和V原语(在同一进程中),不能次序错误、重复或遗漏:

            遗漏P原语则不能保证互斥访问

            遗漏V原语则不能在使用临界资源之后将其释放(给其他等待的进程);

    实现进程间的前趋关系(有序)(注意点)

    信号量值为0的点是限制的关键所在;

    成对使用P和V原语(在有先后关系的两个进程中),不能次序错误、重复或遗漏,否则同步顺序出错。

    区别整型、记录型、AND型信号量以及信号量集

    (1)整型信号量(符合“有限等待”原则,不符合“让权等待”原则)

    信号量定义为一个整型量;

    根据初始情况赋相应的值;

    仅能通过两个原子操作来访问。

    P操作 wait(S):

                  While S<=0 do no-op;

                  S:=S-1;

    V操作  signal(S):  

                  S:=S+1;

    (2)记录型信号量

    信号量结构信息发生变化

    不仅要有值的处理,还有队列的处理。

    此时形成记录型数据结构,包括两部分:

    整型变量value(代表资源数目)

    进程链表L(链接所有等待进程)

    P、V操作也有所变化(熟练使用记录集型信号量,其wait,signal具体做了什么?)

    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)

    (3)AND型信号量

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

    (4)信号量集

    在大于可分配设置的下界值t前提下,每次可分配d个。

    如何利用记录型信号量实现互斥关系?

    如何利用记录型信号量实现前趋关系?

    相关文章

      网友评论

          本文标题:2-3进程同步(信号量)

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