2.3进程同步

一、进程同步、进程互斥

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

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Peterson算法,如果不能进入执行会一直卡在while循环中,一直占用处理机。
在这里插入图片描述

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

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

四、信号量机制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
p2进程完之后,value值+1变成了0,执行wakeup原语,唤醒P3进程。

在这里插入图片描述
p1执行完之后,value变成了1,大于0,不需要执行wakeup原语,p3还没执行完,将cpu交给他
在这里插入图片描述
最后回收打印机资源
在这里插入图片描述
在这里插入图片描述
五、用信号量实现进程的互斥、同步、前驱关系
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、生产者-消费者问题

在这里插入图片描述
若个进程不互斥,可能会造成数据覆盖。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以将生产和消费放到临界区,但是会使代码冗杂,影响效率
在这里插入图片描述

七、多生产者多消费者问题

在这里插入图片描述

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

八、吸烟者问题

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

九、读者写者问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当有一个读进程正在读,则rw=0,如果此时有一个写进程,其就会被阻塞在P(rw),由于count不等于0,可以直接跳过p(rw),所以当有源源不断地读进程,知道全部读进程完成。
在这里插入图片描述
分析最后一种情况,进行读者1,当读1之后,经过V(w)操作,写者1中的P(w)可以通过(w变成0),但是rw=0,所以写者1会被阻塞在P(rw)。当此时
读者2要来,但是此时w=0,所以读者2会被阻塞在P(w),这个时候只有读者1可以进行,读者1完成之后,count–,V(rw),rw=1,此时会唤醒写进程。只有当写者1完成之后,才会唤醒读者2
在这里插入图片描述
最后一种,先进行写者1,会使w=0,rw=0,会将读者1和写者2都堵塞,当读者1完成之后,会先进行读者1(因为读者在前),
在这里插入图片描述

十、哲学家进餐问题

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
情况1
在这里插入图片描述
当0拿起左手筷子时,2要进行,但此时mutex=0,所以会将2阻塞,知道0拿起右手筷子
情况2
在这里插入图片描述
哲学家0拿起左右筷子,此时进行了V(mutex),这时1要进行,但是1左手筷子被占用,这时就会造成阻塞,接下来2要进行,由于1进行时有p(mutex)还没有释放,2也会被阻塞。
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值