进程之间是怎么协作的(互斥,同步)

进程同步:

进程是并发执行的,在执行的时候并发调用CPU,调用内存中的数据,所以他们有一个相互制约关系,使它们按照预期的方式执行的过程

进行是并发执行的,进程间存在着相互制约关系,并发的进程对系统共享资源进行竞争,进程通信,过程中相互发送的信号称为消息或事件

进程存在两种制约形式
互斥:进程排他性地访问共享资源
同步:进程间的合作,比如管道通信
看到互斥,和我们平时写程序,用悲观锁或者redis加锁,是不是很像,我感觉道理是一样的,同一时间只有一个进程(线程)可以操作数据,而同步,我理解为两个服务器都有一份缓存数据,要保证数据的一致性,或者是像上面写的,两个进程之间可以互相互通信息,我A服务可以推消息给B服务

进程互斥的访问过程
进入区:尝试进入临界区,成功就加锁
临界区:访问共享资源
退出区:解锁,唤醒其他阻塞进程
剩余区:其他代码
问题:
当一个进程在进入区加锁访问的时候,操作系统是如何管理其他进程的?
其他进程进入区访问失败了,有一个进程加锁的时候,其他进程是阻塞状态,阻塞的话,进程的请求会放在哪里?
答案:
其他阻塞的进程会在进入区失败的时候,进入到队列中等待,队列称之为,阻塞队列

访问原则
空闲让进:临界区空闲,允许一个线程进入(正常情况下,没人用CPU,你直接自己用了)
忙则等待:临界区已有线程,其他进程等待(阻塞状态,放的阻塞队列里面,等的去吧,一个个执行)
有限等待:处于等待的进程,等待时间有限(一个进程在里面一直执行的话,其他的进程不可能一直等待的,不然就死锁了,这个时候操作系统会释放锁,让其他进程可以进去执行,但是操作系统将进程强制关闭的话,会导致进程数据丢失,我们玩电脑,有时候会报错应用无法响应,等待还是结束,结束就是让操作系统强制把进程杀掉了,应用数据会出问题,所以一般会指定阻塞进程一个等待的时间,等不到做特殊处理
让权等待:等待时应让出CPU执行权,防止忙等待(处于阻塞状态的进程队列,优先让出CPU的执行,忙等待==死循环)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值