2017年内蒙古大学计算机学院892数据结构与程序设计(自命题)考研导师圈点必考题汇编
● 摘要
一、应用题
1. 已知T0时刻系统资源分配情况如下表所示。T0时刻系统资源分配表
(1)判断系统当前状态是否是死锁状态?
(2)P2进程发出请求向量Request2[l, 0,1], 系统能把资源分给它吗?
(3)若在P2进程申请资源后,P3进程发出请求向量Request3[0, 0, 1], 系统能把资源分给它吗?
【答案】(1)①初始化,令Work=Available,Finish 列全为false 。
系统资源初始化分配表
②因为将资源分配给P2进程,同时标记FiniSh[2]为true 。P2进程使用完后将
系统将资源分配给P2进程
它所占用的全部资源释放。此时系统资源分配情况如下表所示。
因为将资源分配给P3进程,同时标记FiniSh[3]为true 。P3进程使用完后将它所占用的全部资源释放,此时系统资源分配情况如下表所示。
系统将资源分配给P2进程
因为将资源分配给P4进程,同时标记FiniSh[4]为true 。P4进程使用完后将它
系统将资源分配给P4进程
所占用的全部资源释放,此时系统资源分配情况如下表所示。
因为将资源分配给P1进程,同时标记FiniSh[l]为trae^PUt程使用完后将^所占
系统将资源分配给P1进程
用的全部资源释放,此时系统资源分配情况如下表所示。
⑥此时Finish 列的所有项均为true , 故系统没有死锁。
⑵P2进程发出请求向量Request2[l,0, 1],假定系统先将资源分配给P2进程。由第⑴题的解
,故系统可把资源分配给P2进程。题过程可以看出,此时系统存在一个安全序列(P2, P3, P4,P1)
(3)①在P2进程申请资源后,P3进程发出请求向量ReqUeSt3[0, 0, 1],假定系统先将资源分配给P3进程。此时Available=(0,1, 0)。初始化,令Work=Available,Finish 列全为false 。
系统将资源分配给P3进程
②此时因为找不到
的进程,故系统处于不安全状态。因此不能将资源分配给P3。
2. 进程资源的使用情况和可用情况如下表所示(四个进程和三类资源):
(1)请画出资源分配图。
(2)分析目前系统中是否会发生死锁。
【答案】(1)资源分配图
Pi>。Pi 是进程每一条便是一个有序对 并且当前正在等待分配。如果ri 是资源类型如果则存在一条从Pi 指向ri 的有向边,它表示Pi 提出了一个要求分配ri 类资源中的一个资源的请求,则存在一条从ri 类资源执行进程Pi 的有向边,它表示ri 类资源中的某个资源已分配给了进程Pi 。有向边 在有向图中,用圆圈代表进程,用方框表示每类资源。每一类资源ri 可能有多个实例,可用方框中的圆点表示各个资源实例。申请边为从进程到资源的有向边,表示进程申请一个资源,但当前该进程在等待该资源。分配边为从资源到进程的有向边,表示有一个资源实例分配给进程。注意:一条申请便仅指向代表资源类ri 的方框,表示申请时不指定哪一个资源实例,而分配边必须由方框中的圆点引出,表目哪一个资源实例也被占有。 当进程Pi 请求资源类ri 的一个实例时,将一条请求边加入资源分配图,如果这个请求是可以满足的,则该请求边立即转换成分配边:当进程随后释放了某个资源时,则删除分配边。 (2)从进程对各类资源的占有量尚需量和系统中各类资源的剩余量来考虑是否有死锁存在。可以看出进程P2已得到全部资源,能在有限的时间内归还资源,得到可分配的资源数为 (3, 1,0)+(0, 0, 0)=(3, 1,0) 可满足进程P1的申请,P1也能在有限的时间内归还资源,于是可分配资源数増加为 (3,1,0)+(2, 0,0)=(5, 1,0)
相关内容
相关标签