进程间通信

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/adzn1/article/details/79981379

同步和互斥

互斥:由于各个进程需要共享资源,而共享资源具有排他性。各个进程竞争使用这些资源,进程的这种关系称之为互斥。
 这种一次只能被一个进程使用的资源称之为临界资源
访问临界资源的代码段称之为临界区。
同步:多个进程相互配合共同完成一项任务

进程间通信的目的

数据传输
资源共享
通知事件

进程间通信的发展:

管 道
SysV IPC 事实上的标准

POSIX

推荐看的书籍

1) UNIX网络编程卷2
2)Nginx
MySQL
Redis
MQ

进程间通信的分类:

文件

管道

SyStemV Ipc

消息队列

共享内存

信号量

POSIX IPC

条件变量

互斥量

读写锁

信号量

Socket

进程共享信息的三种方式:

基于文件系统

基于内核

基于共享内存的
这里写图片描述

IPC对象的持续性;

随进程持续

随内核持续

随文件系统持续

* 死锁*

多个进程相互等待对方资源,在得到所有资源继续运行
之前,不会释放自己已经得到的资源,这样造成了循环等待的现象,称之为死锁

死锁产生的必要条件:

它所产生的资源必须具有互斥性:

请求并保持:

不可剥夺:

形成环路等待:

 防止死锁:

  统一分配

  可剥夺

  有序分配

避免死锁:

经典死锁避免算法:银行家算法
1、客户向银行家申请贷款,贷款总额不超过银行家现有资金量,接纳该客户

2、客户可以分批次向银行贷款,但贷款总额不能超过开始的申请总量

3、当银行家现有的资金不能满足客户,可以在有限时间内给客户提供贷款

4、当客户得到所有资金后,在有限时间内归还

经典死锁案例:

哲学家就餐

这里写图片描述

信号量 semaphore

信号量 p v,网络 最短路径 goto是有害的
狄杰斯特拉

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页