操作系统之进程同步与进程互斥

一、进程同步

在这里插入图片描述
在这里插入图片描述

二、进程互斥

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
即临界区能进则立即进入,不能进则等待,且是让出CPU的有限等待。
在这里插入图片描述

三、进程互斥的软件实现方法

在这里插入图片描述

1. 单标志法(违背空闲让进)

在这里插入图片描述
在这里插入图片描述

2. 双标志先检查(违背忙则等待)

在这里插入图片描述

3. 双标志后检查(违背空闲让进、有限等待)

在这里插入图片描述

4. Peterson算法(未达到让权等待原则)

在这里插入图片描述
在这里插入图片描述

5. 总结

在这里插入图片描述

四、进程互斥的硬件实现方法

在这里插入图片描述

1. 中断屏蔽方法(不适用于多处理机)

在这里插入图片描述

2. TestAndSet(TS指令/TSL指令,不满足让权等待原则)

在这里插入图片描述

3. Swap指令(XCHG指令,不满足让权等待原则)

在这里插入图片描述

4. 总结

在这里插入图片描述

五、信号量机制

在这里插入图片描述
在这里插入图片描述

1. 整型信号量

在这里插入图片描述

2. 记录型信号量

在这里插入图片描述
在这里插入图片描述

六、用信号量机制实现进程互斥、同步、前驱关系

在这里插入图片描述

1. 进程互斥

在这里插入图片描述

2. 进程同步

在这里插入图片描述
在这里插入图片描述
信号量机制实现进程同步,记住这个套路就可以了,对于一前一后的执行语句,在需要先执行的语句之后添加V(s)即signal语句(可以理解为先生产数据才能用V(S)释放资源),在需要后执行的语句之前添加P(s)即wait语句(可以理解为要使用数据,所以先执行P(s))

3. 进程的前驱关系

套路和上面的2个进程同步一样,只是这是复杂的更多进程同步而已。记住口诀:先执行语句之后执行V(s);后执行语句之前执行P(s)
在这里插入图片描述

4. 总结

在这里插入图片描述

七、管程

通过信号量可以实现进程的同步、互斥,但是信号量的编写困难复杂且容易出错,因此,我们提出了管程的概念,本质是对信号量机制的“封装”,将同步与互斥的复杂操作封装起来,程序员只需要调用简单的函数就能实现进程的同步与互斥,而不必再关注复杂的PV操作。

1. 管程的定义和基本概念

在这里插入图片描述

2. 拓展1:用管程解决生产者消费者问题

在这里插入图片描述
在这里插入图片描述

3. 拓展2:Java中类似于管程的机制

在这里插入图片描述

4. 总结

在这里插入图片描述

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mekeater

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值