第四章_死锁-1详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
按照死锁发生的时间过程,来思考解决思索问题的方法
忽略问题—鸵鸟算法
设计无死锁的系统 死锁防止
在应用编程时或资源分配管理设计时破坏死锁的必要条件
死锁避免
进行资源分配时,判断是否存在安全序列,存在情况下进行分配, 否则拒绝分配
死锁的四个必要条件
互斥(资源独占)
一个资源每次只能给一个进程使用
占有等待
一个进程在申请新的资源的同时保持对原有资源的占有
非剥夺(不可抢占)
资源申请者不能强行的从资源占有者手中夺取资源,资 源只能由占有者自愿释放
环路等待
存在一个进程等待队列 {P1 , P2 , … , Pn}, 其中P1等待P2 占有的资源,P2等待P3占有的资源,…,Pn等待P1占有 的资源,形成一个进程等待环路
北京工商大学 计信学院
Operating System
死锁建模-资源分配图
A S R B R
R B 图. 资源分配图 a).占有一个资源 b).请求一个资源 c). 死锁
• 如果各类资源数为1,则系统出现死锁的充 要条件是资源分配图含圈
Pi
..
.
P
P
..
Operating System
北京工商大学 计信学院
北京工商大学 计信学院
Operating System
死锁建模-资源分配图
形式化描述
资源分配图 G=(V,E),其中
顶点集V=P∪R,
P是进程集合:P={P1,P2,…,Pn} 资源集R={r1,r2,…,rm},ri表示系统中的ri类资源
E是边的集合,E中有两类边
分配边 (rj,Pi)
请求边( Pi,rj)
void process_A(void){ down(&resource_1); use_resource_1(); up(&resourcde_1); }
图. 采用信号量保护资源 a). 一个资源 b). 两个资源
北京工商大学 计信学院
Operating System
资源-资源获取
typedef int semaphore; 两个进程的情形 semaphore resource_1; semaphore resource_2; void process_A(void){ down(&resource_1); down(&resource_2); use_both_resource(); up(&resource_2); up(&resource_1); } void process_B(void){ down(&resource_1); down(&resource_2); use_both_resouce(); up(&resouce_2); up(&resouce_1); } typedef int semaphore; semaphore resource_1; semaphore resource_2; void process_A(void){ down(&resource_1); down(&resource_2); use_both_resource(); up(&resource_2); up(&resource_1); } void process_B(void){ down(&resource_2); down(&resource_1); use_both_resouce(); up(&resouce_1); up(&resouce_2); } 右)产生死锁的互斥
不可抢占资源
•不引起相关计算失败的情况下,无法把它从占有它的进程 处抢占过来 •打印机,CD刻录机(独占型资源)
北京工商大学 计信学院
Operating System
资源
一般而言,进程间的死锁问题多由不可抢占资源的排他性使 用引起。 对于可抢占资源,若存在潜在的死锁,可以通过进程间的重 新资源调配来解决. 进程使用资源(不可抢占)所需要的事件可以表述为 •请求资源 •使用资源 •释放资源 不同系统的资源请求、使用及释放过程有所不同。
第四章 死锁
资源 死锁概述
鸵wenku.baidu.com算法
死锁检测
死锁避免
死锁预防 其他问题
北京工商大学 计信学院
Operating System
北京工商大学 计信学院
Operating System
北京工商大学 计信学院
Operating System
资源
可抢占资源
•可以从拥有该资源的进程中抢占而不会产生任何副作用 •处理器、内存
北京工商大学 计信学院
Operating System
死锁定理
如果资源分配图中没有环路,则系统中没有死锁, 如果图中存在环路则系统中可能存在死锁
如果每个资源类中只包含一个资源实例,则环路 是死锁存在的充分必要条件
有环有死锁 北京工商大学 计信学院
有环无死锁
Operating System
解决死锁问题的方法
死锁概述-死锁定义
定义一
如果一组进程中,每个进程都在等待只能由该 进程集合中其他进程才能引发的事件,这个进 程集合就是死锁的
定义二 一组进程中,每个进程都无限等待被该组进程 中另一进程所占有的资源,因而永远无法得到 的资源,这种现象称为死锁,这一组进程就称 为死锁进程 北京工商大学 计信学院 Operating System
北京工商大学 计信学院
Operating System
资源-资源获取
采用互斥信号量对资源进行获取 一个进程的情形
typedef int semaphore; semaphore resource_1; typedef int semaphore; semaphore resource_1; semaphore resource_2; void process_A(void){ down(&resource_1); down(&resource_2); use_resource_1(); up(&resourcde_2); up(&resource_1); }
图. 左)无死锁的互斥 北京工商大学 计信学院
Operating System
P、V操作不当产生死锁
生产者进程 消费者进程 … … P(mutex) P(mutex) P(empty) P(full) … … 缓冲区满后,先后执行生产者进程和消费者进程。
北京工商大学 计信学院
Operating System
相关文档
最新文档