进程间的交互

进程间的交互分为竞争关系、协作关系。

1、竞争关系

由于计算机内资源有限,或者说某几个进程必须共享某些资源与变量,这时候就不可避免的会出现竞争,进程的相互竞争就会穿死锁和饥饿问题,饥饿问题已解释。

死锁问题是指一组进程如果都获得了部分资源,还想要得到其他进程占用的资源,最终所有进程都将陷入死锁,即都在等待,每个进程都不会先放手自己占有的资源。

进程互斥:若干进程在使用共享资源的时候,其他进程必须等待正在使用的进程释放该进程,临界区管理是解决进程互斥问题的办法。

2、协作关系

某些任务需要很多进程为其分工来完成,这时候需要协调互相之间的关系,比如某个进程在进行到某个点之后需要等待某些进程的消息和信号才能继续执行。(进程同步。

临界区:并发进程中与共享变量有关的程序段叫“临界区”。

临界资源:共享变量代表的资源叫做“临界资源”。

临界区调度原则:空闲让进、忙则等待、有限等待、让权等待。

3、信号量解决

p表示获取资源,一般会跟value--,v表示释放资源,后接value++。p、v一定是成对出现在同一个进程之中,否则会出现资源泄漏。

经典问题:哲学家进餐问题、生产者消费者问题、读写者问题、理发师问题。

哲学家进餐问题:五个哲学家围坐一张圆桌,桌上仅有五根筷子,每位哲学家只能拿起与他相邻的两根筷子吃饭。五根筷子都是临界资源

设为:semaphore fork[5] = {1,1,1,1,1};

philosopher_i

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值