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

信号量是什么?

信号量的基本应用

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

(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个。

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

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ** 本文摘自汤小丹主编《计算机操作系统》(第三版)2.3 进程同步 ** 在 OS 中引入进程后,虽然提高了资源...
    刘帅_阅读 3,251评论 0 0
  • 信号量及PV操作 信号量机制是一种功能较强的机制,可用来解决互斥与同步问题,它只能被两个标准的原语wait(S)和...
    柳亮亮阅读 999评论 2 0
  • 2.1进程的基本概念 一、程序顺序执行时的特征 (一)、顺序性:处理机的操作严格按程序规定顺序执行 (二)、封闭性...
    山隹金易锡阅读 2,725评论 0 2
  • 转载自:https://halfrost.com/go_map_chapter_one/ https://half...
    HuJay阅读 6,484评论 1 5
  • 09 佛经的翻译方式 不必墨守成规,按照“译场”,却要依照认真彻底。 而翻译佛经,是最认真最彻底的。 关于“译场”...
    咔辣辣阅读 153评论 0 0

友情链接更多精彩内容