@WillireamAngel
2018-06-17T07:37:23.000000Z
字数 822
阅读 1312
操作系统
死锁:相互等待其他进程
进程访问资源流程:请求/获取,使用/占用,释放
资源分配图:可重用资源,消费资源
发现死锁必要条件:互斥、持有并等待、非抢占(自愿放弃)、循环等待
限制申请方式:互斥、持有并等待、非抢占、循环等待
死锁避免:额外先验信息,需求最大数目,限定提供与分配,动态检查状态
由应用进程处理死锁
允许系统进入死锁状态,维护系统资源分配图,定期调用死锁检测,出现死锁用死锁恢复进行恢复
终止所有
终止一个接一个直至死锁消除
终止顺序是进程优先级,已运行时间和需运行时间
已占用资源
未来需要资源
终止数目
交互还是批处理
系统资源分配安全状态,针对已占用进程,存在安全序列;处于安全序列,一定没有死锁;不安全状态,包含死锁。
选择被抢占进程(最小成本)
进程回退:返回到安全状态
可能出现饥饿
进程通信(IPC):通信和同步,发送、接收
- 间接通信
操作系统消息队列(内核通信),共享消息队列,一对多
- 直接通信
send,receive,自动建立链路,一条链路一对通路,每对进程一个链路,单向/双向
阻塞(同步)和非阻塞(异步)
通信链路缓冲:0容量,有限容量,无限容量。
软中断处理:接收处理(捕获,忽略,屏蔽),信号量小,快速响应
内存文件通信(子进程继承文件描述符):read,write,pipe
内核维护的字节序列通信
Message Queues:
msgget、msgsnd、msgrcv、msgctl
同一块内存映射到多个进程地址空间:进程、线程
同步机制协调数据访问:信号量等
shmget、shmat、shmdt、shmctl