银行家算法得出的安全序列有顺序吗?如{ p3,p0,p4 ,p2,p1}和{ p3,p0,p4 ,p1,p2}是一样的吗?
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/27 15:26:53
银行家算法得出的安全序列有顺序吗?如{ p3,p0,p4 ,p2,p1}和{ p3,p0,p4 ,p1,p2}是一样的吗?
银行家算法得出的安全序列有顺序吗?如{ p3,p0,p4 ,p2,p1}和{ p3,p0,p4 ,p1,p2}是一样的吗?
银行家算法得出的安全序列有顺序吗?如{ p3,p0,p4 ,p2,p1}和{ p3,p0,p4 ,p1,p2}是一样的吗?
不一样
银行家算法假定前提如下:
p0 p 4 各掌握有银行家的若干资源,但要求完成他们的目标,分别还需要请求若干资源.
现在,银行家已经付出很多资源,手里资源不多.而pX 们另外需求的资源也是大小不一的.
而一旦银行家所有资源支出后,pX中仍然没有谁完成任务,这就死锁了(每个进程都把握一部分资源,并还在要资源,而资源已经木有了)
现在,算法得出这样一条顺序,先优先供应p3,等p3完成他的线程后,p3会释放所占有的资源.银行家(系统)利用p3所有的资源和自己手里剩余的资源按顺序供应p0,p4 等等.
现在假定 供应完 p4后,银行家手中握有资源 10单位
p1 总共需要20单位才能完成他的进程,而p1手中现有5单元
p2 总共需要10单位才能完成他的进程,而p2手中已经有了8单元了
请问,系统应该先供应哪个线程?
答案必然是先p2再p1
因为使用2资源供应完p2(10单位才能完成,已有8单位,还要2单位),p2完成任务后,释放所有资源,系统累计资源才有 10 - 2 + 10 = 18 单位的资源 ,才能满足p1 的 15( = 20 -5 )单位资源的请求.
而若反之,所有资源投入p1 ,p1 完成进度 15 / 20 p2 完成进度 8 / 10 这就彻底死了
所以 xxxxx p2 p1 能活,xxxxx p1 p2 会死
特别说明的是,银行家算法可以得到不止一条安全顺序.能被银行家证明可行的算法都是死不了的算法