[关闭]
@WillireamAngel 2018-06-17T07:37:23.000000Z 字数 822 阅读 1312

死锁和进程通信

操作系统


死锁概念

死锁:相互等待其他进程
进程访问资源流程:请求/获取,使用/占用,释放
资源分配图:可重用资源,消费资源
发现死锁必要条件:互斥、持有并等待、非抢占(自愿放弃)、循环等待

死锁处理方法

死锁预防

限制申请方式:互斥、持有并等待、非抢占、循环等待
死锁避免:额外先验信息,需求最大数目,限定提供与分配,动态检查状态
由应用进程处理死锁

死锁检测

允许系统进入死锁状态,维护系统资源分配图,定期调用死锁检测,出现死锁用死锁恢复进行恢复

进程恢复(进程终止)

终止所有
终止一个接一个直至死锁消除
终止顺序是进程优先级,已运行时间和需运行时间
已占用资源
未来需要资源
终止数目
交互还是批处理

系统资源分配安全状态,针对已占用进程,存在安全序列;处于安全序列,一定没有死锁;不安全状态,包含死锁。

资源抢占

选择被抢占进程(最小成本)
进程回退:返回到安全状态
可能出现饥饿

银行家算法

进程通信概念

进程通信(IPC):通信和同步,发送、接收
- 间接通信
操作系统消息队列(内核通信),共享消息队列,一对多
- 直接通信
send,receive,自动建立链路,一条链路一对通路,每对进程一个链路,单向/双向

阻塞(同步)和非阻塞(异步)
通信链路缓冲:0容量,有限容量,无限容量。

信号和管道

信号Signal

软中断处理:接收处理(捕获,忽略,屏蔽),信号量小,快速响应

管道pipe

内存文件通信(子进程继承文件描述符):read,write,pipe

消息队列和共享内存

消息队列

内核维护的字节序列通信
Message Queues:
msgget、msgsnd、msgrcv、msgctl

共享内存

同一块内存映射到多个进程地址空间:进程、线程
同步机制协调数据访问:信号量等
shmget、shmat、shmdt、shmctl

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注