进程同步、进程互斥


一、进程同步、进程互斥

在这里插入图片描述
由于进程有异步性,所以各个进程的推进顺序是不可预知的。
在这里插入图片描述
进程同步讨论的就是怎么解决进程异步的问题。
在这里插入图片描述
进程互斥
在这里插入图片描述
进入区:负责检查此时到底能不能访问临界资源,如果可以访问的话,则设置“上锁”。
在这里插入图片描述
在这里插入图片描述
总结
在这里插入图片描述

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

在这里插入图片描述
单标志法:
在这里插入图片描述
在这里插入图片描述
双标志先检查法:
在这里插入图片描述
为了解决两个进程不能互斥的问题,又提出了另外一种方法:
双标志后检查法

算法的问题缺陷主要是因为进程并发执行,然后并发执行时存在异步,然后导致出现了问题。
在这里插入图片描述
让不同的进程交替的执行,看是否会引发问题。

Peterson算法
在这里插入图片描述
举例理解:
在这里插入图片描述
在这里插入图片描述
互让,最后看客气话是谁说的,谁说的谁进入循环等待。
在这里插入图片描述
让权等待:即使不能进入临界区,也占用的CPU。
总结
在这里插入图片描述
对于进程互斥算法,我们需要先区分出哪一个是进入区,在进入区做了哪些事情,然后再在进入区的操作在两个进程并发的环境下分别用不同的顺序依次推进,然后用这种方式来验证进入区的操作在并发环境下有可能导致新的问题。

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

在这里插入图片描述
中断屏蔽法

关中断指令,只对执行关中断指令的处理机有用,如果此时处理机A执行了关中断,那么就意味着在这个处理机上面的进程不会被切换,那么这个进程就可以顺利的访问临界区,那么对于另一个处理机B来说,它其实还是会正常的切换进程,如果此时在另外处理机上运行的进程也需要访问临界区的话,有可能发生两个处理机上的两个进程同时对临界区进程访问的情况。

关中断和开中断属于特权指令,执行在内核态。
在这里插入图片描述
TestAndSet指令
while循环一直执行的话,一直到当前在临界区的进程在退出临界区时把lock改为false,这个进程才能进入临界区。
在这里插入图片描述
swap指令
在这里插入图片描述
总结
在这里插入图片描述

四、信号量机制

在这里插入图片描述
在这里插入图片描述
整形信号量

当进程访问打印机的过程中,假如发生了进程切换,有另外的进程他也想使用打印机这种资源,使用之前,执行wait原语,而使用之前S=0,所以P1进程一直循环等待,直到P0资源把打印机给释放了。
在这里插入图片描述
疑问:如果一个进程占时进不来临界区,也就意味着进程被卡在wait原语的while循环里,既然wait原语是不可被中断的,那么就意味着当前正在被执行while循环的进程是不是一直不能被切换呢?
在这里插入图片描述
记录型信号量
在这里插入图片描述
举例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
执行wakeup原语,把等待队列的头从阻塞变为就旭,并把释放的处理机资源分配给它。
在这里插入图片描述
此时P2使用打印机资源
在这里插入图片描述
使用完之后
在这里插入图片描述
释放打印机资源,value+1
在这里插入图片描述
此时value的值还是<=0,说明此时还是有进程在等待队列,此时也会执行一个wakeup原语来唤醒处于等待队列队头的进程。
P3进程从阻塞态变为就绪态,并且P2刚才释放的打印机资源会被分配给P3,然后P3的信息会从等待队列中消失。
在这里插入图片描述
接下来P2执行完剩余的代码, 之后CPU又回到了为P1服务,那么P1执行完打印机之后又会对打印机进行释放,此时value值加1。说明此时在等待队列中没有进程在等待,所以P1进程不需要执行wakeup原语,系统回收分配给P1的资源 。在这里插入图片描述
在这里插入图片描述
最后,还有P3进程没有结束,所以CPU会为P3进程进行服务,P3在使用完打印机之后,会对打印机资源进行释放。
在这里插入图片描述
value的值加1变为2,之后系统回收打印机资源,P3得以顺利执行,最后结束。
在这里插入图片描述
在这里插入图片描述
总结
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

信号量的初值代表系统中某种资源的数量,而临界区同一时间只允许一个资源对他进行访问,所以把临界区理解为一种特殊的资源,而这个资源只有一个,也就是说他只能分配给一个资源进行使用,只有进程释放了这种特殊的资源以后,才可以由另一个资源进行使用。
在这里插入图片描述
在这里插入图片描述
P1和P2进程,代码4一定要在代码2之后执行,所以代码2是前操作,代码4是后操作。

所以在前操作完成之后,执行V;后操作之前执行P;
在这里插入图片描述
在这里插入图片描述
信号量机制实现前驱关系
在这里插入图片描述
总结
在这里插入图片描述
在这里插入图片描述

总结

这一节学习,最关键的就是PV操作,PV操作可做的事件具体如下:

1.实现进程互斥
2.实现进程同步
3.再复杂一点就是实现进程的前驱关系
4.还有资源分配问题,比如多台打印机

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值