1个回答
展开全部
"安全状态" 为 P[1..n] 之中寻找一排列,使资源 R[1..m] 可以按此排列顺序分配,不会产生不足的问题。若此排列存在,则是目前状态视为安全。在穷举法的情况之下,在所有排列中找出满足者需要 O(n),银行家演算法则以 O(mn^2) 解决,但前提是每一程序需给定最多要求的资源量 Max[1..n][1..m],(或者在某些网路上的范例称为 Claim[1..n][1..m])。目前每种资源所剩的数目则为 Available[1..m] 。 由定义可知,Need[i][1..m] = Max[i][1..m] - Allocated[i][1..m]。
银行家演算法分为两部份: "安全演算法" 与 "资源分配演算法",后者包括了前者,基本概念十分简单:如果 P[i] 目前需要的资源数目 Need[i][1..m] 少於 Available[1..m] ,表示 P[i] 可以顺利完成工作,结束执行; 此时便让 P[i] 结束执行 (Finished[i] = 1),释出目前占用资源,再另找一新程序 P[i'] 进行同样的测试步骤。如果到最后每个 P[1..n] 都执行完毕,则目前状态安全。如果有些程序尚未结束执行,其 Need[j][1..m] 却多於 Available[1..m] ,表示此程序 j 所需之资源太多,使其无法成为安全状态。
资源分配演算法的概念在於:"试试看,如果所需资源被分配之后仍为安全状态,则允许此一资源之分配"。
若不知道 Max[1..n][1..m] ,则无法以 O(mn^2) 完成。
银行家演算法分为两部份: "安全演算法" 与 "资源分配演算法",后者包括了前者,基本概念十分简单:如果 P[i] 目前需要的资源数目 Need[i][1..m] 少於 Available[1..m] ,表示 P[i] 可以顺利完成工作,结束执行; 此时便让 P[i] 结束执行 (Finished[i] = 1),释出目前占用资源,再另找一新程序 P[i'] 进行同样的测试步骤。如果到最后每个 P[1..n] 都执行完毕,则目前状态安全。如果有些程序尚未结束执行,其 Need[j][1..m] 却多於 Available[1..m] ,表示此程序 j 所需之资源太多,使其无法成为安全状态。
资源分配演算法的概念在於:"试试看,如果所需资源被分配之后仍为安全状态,则允许此一资源之分配"。
若不知道 Max[1..n][1..m] ,则无法以 O(mn^2) 完成。
参考资料: 其他网站
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
中智咨询
2024-08-28 广告
2024-08-28 广告
在当今竞争激烈的商业环境中,企业需要不断提高自身的竞争力,以保持市场份额和增加利润。通过人效提升,企业可以更有效地利用有限的资源,提高生产力和效益,从而实现盈利目标。中智咨询提供全方位的组织人效评价与诊断、人效提升方案等数据和管理咨询服务。...
点击进入详情页
本回答由中智咨询提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询