操作系统:4、进程管理之进程同步

1、为什么需要进程间同步

生产者消费者问题

在这里插入图片描述
在这里插入图片描述
上述过程,若并发执行就会出现缓冲区数据出错

哲学家进餐问题

在这里插入图片描述
在这里插入图片描述
“哲学家进餐问题中会发生极端情况,所有哲学家都饿死,也就是所有进程都陷入等待状态”

进程间同步解决生产者消费者、哲学家进餐问题

“生产者消费者问题”以及“哲学家进程问题”的根源问题是:彼此相互之间没有通信。
若生产者通知消费者我已经完成一件产品生产哲学家向旁边的哲学家说我要进餐了你们别拿我的筷子,那么就不会发生上述的缓冲区数据错误以及哲学家全部饿死的情况。

因此需要进程间的同步。

进程间同步的根源需求:
1、对竞争资源在多个进程间进行使用次序的协调(比如先让第一个哲学家吃,再让第二个哲学家吃);
2、使得并发执行的多个进程之间可以有效使用资源和相互合作;

2、进程间同步的原则

临界资源:
临界资源指的是一些虽作为共享资源却又无法同时被多个线程共同访问的共享资源。
当有进程在使用临界资源时,其他进程必须依据操作系统的同步机制等待占用进程释放该共享资源才可重新竞争使用共享资源。

进程间同步的四原则:
1、空闲让进:资源无占用,允许使用

临界资源无占用,操作系统应该允许某进程使用临界资源

2、忙则等待:资源有占用,请求进程等待

如果有进程占用了临界资源,此时要防止其他要使用资源的进程继续使用资源,应该让其他进程等待,等占用进程释放,其他进程才可继续使用

3、有限等待:保证有限等待时间能够使用资源

保证等待进程在有限时间内能够使用资源,避免进程僵死

4、让权等待:等待时,进程需要让出CPU

当外面需要等待的进程等待时,等待进程应该让出CPU

进程间同步方法:
1、消息队列
2、共享存储
3、信号量

3、线程同步

多个线程并发使用进程资源时,也会发生生产者消费者问题,所以进程内多线程也需要同步。

线程同步方法:
1、使用互斥量(保证多线程能够互斥的使用临界资源的锁)
2、读写锁(应对多读少写,或者多写少读的情况发明的锁)
3、自旋锁
4、条件变量

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值