银行家算法得出的安全序列有顺序吗?如{ 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 会死
特别说明的是,银行家算法可以得到不止一条安全顺序.能被银行家证明可行的算法都是死不了的算法你说的我明白,但要如果剩余资料同时满足p1,p2,先进行哪一个?是不是两个都可以是的只要能满足不死锁顺序的都认为是银行家的安全顺序只要能满足银行家安全顺序的都不会死锁 两者是等价的我明白了!谢谢你