一、银行家算法与死锁
银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。为实现银行家算法,系统必须设置若干数据结构。
image二、银行家算法的核心步骤
核心步骤就是检查序列是否是安全序列,若是安全序列这将调度顺序记录下来,否则返回死锁提示。
安全序列是指一个进程序列{P1,…,Pn}是安全的,即对于每一个进程Pi(1≤i≤n),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj (j < i )当前占有资源量之和。
image三、talk is cheap,show your code
image这张图是原课本的题目和算法思路:
image这张图是运行结果:
image最后,如果你想学C++可以加入学习群:825414254获取素材资料和开发工具和听课权限!(此群仅供简书粉丝交流,不是抱着学习C++过来的兄弟非诚勿扰哦!)
image