[关闭]
@llplmlyd 2018-09-22T19:17:28.000000Z 字数 2760 阅读 813

操作系统原理(十一)之死锁与进程通信

操作系统原理


定义

死锁是进程之间由于共享资源所导致的一种无限期等待的情况
由于竞争资源或者通信关系,两个或更多线程在执行中出现永远相互等待,只能由其他进程引发的事件

进程访问资源的流程

请求/获取 空闲资源使用/占用释放

出现死锁的必要条件

死锁检测

数据结构

算法及其使用

死锁处理方法

死锁预防 限制申请方式

死锁避免

利用额外的先验信息,在分配资源时就判断是否会出现死锁,只在不死锁情况下分配资源

PS:当进程请求资源时,系统会判断分配后是否处于安全状态,安全状态针对所有已用进程,存在安全序列
安全状态与死锁
安全状态则一定无死锁
不安全状态可能有死锁

死锁恢复

进程终止

一次只终止一个进程直到死锁消除,直至终止所有的死锁进程。终止顺序为

  1. 进程的优先级(由低到高)→进程已运行时间以及还需运行时间
  2. (保留运行时间较长者)→进程已占用资源→进程完成需要的资→
  3. 终止进程数目(越少越好)→进程是交互还是批处理(优先让用
  4. 户交互的进程执行下去)

资源抢占

选择被抢占资源(最小成本)、进程回退(会退到安全状态)、可能出现饥饿(同一进程可能总是选择被抢占者)

进程通信 IPC, Inter-Process Communication

进程之间进行同步和通信的机制,提供两个基本操作

直接通信

间接通信

通信流程
创建一个新的消息队列
通过消息队列发送和接收消息
销毁消息队列

阻塞(同步)与非阻塞通信(非阻塞)

通信链路缓冲

信号量与管道

信号:进程软件中断通知和处理机制
如,sigkill,sigstop,sigcont

信号的接收处理

管道

管道相关的系统调用

消息队列和共享内存

消息队列

消息队列是由操作系统维护的以字节序列为基本单位的间接通信机制
- 每个消息(message)是一个字节序列
- 相同标识的消息按先进先出顺序组成一个消息队列(Message Queues)

共享内存 快速方便存取 但需额外同步协调机制

共享内存是把同一个物理内存区域同时映射到多个进程的内存地址空间的通信机制

运行 进程 线程
内存 每个进程都有私有地址内存空间,每个进程的内存地址空间需要明确设置于共享内存段 同一进程中的线程总是共享相同的内存地址空间
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注