(2)通过对银行家整个算法的分析与实现,可以进一步加深对算法的理解以及计算机系统资源在多道程序下的分配现状。为以后的进一步学习和工作打下良好基础。
(3)通过银行家算法,解决了高校排课系统中教室少,学生多的问题,在避免死锁的前提下,高效地解决了教室资源分配的问题。
2.银行家算法分析与实现
2.1银行家算法的思想
我们暂且把操作系统看作是一个银行家,把操作系统管理的资源看作银行家所拥有管理的资金,把所有进程向操作系统请求分配资源看作用户向银行家贷款。为保证资金的安全,银行家有如下规定:
(1)当一个用户对资金的最大需求量不超过银行家现有的资金总量时就可以受理该顾客。
(2)顾客可以进行分期贷款,但是贷款的总量不能超过最大需求量。
(3)当银行家现在拥有的资金不能满足顾客所需要的贷款数额时,对顾客的贷款就可以延迟支付,但是总能让顾客在有限的时间里得到发放贷款。
(4)当顾客得到所申请的全部资金后,一定要在有限的时间里归还所有的贷款资金。
操作系统为进程分配资源是按照银行家制定的规则进行的,当某个进程首次申请资源时,首先要测试该进程对资源的最大需求量,如若系统现有的资源可以满足它的最大需求量则按当前的申请量予以分配,否则就延迟分配。当进程在执行过程中继续申请资源时,首先要测试该进程已占用的资源数目与本次申请的资源数目之和是否超出了该进程对资源的最大需求量。若超出,则拒绝分配资源,若没有超出,则再继续测试系统现有的资源是否满足该进程尚需的最大资源量,如果能满足,则按当前的申请量予以分配,否则也要延迟分配。
银行家算法的核心就是找到一个安全序列。系统每次进行资源分配后,如果对于系统中新的资源状况存在一个安全序列,则至少存在一条确保系统不会进入死锁的途径。按照该序列,银行家可以实施一个有效的分配方案使得所有客户都得到满足。
2.2银行家算法的分析与实现
运用银行家算法,避免发生死锁,在确保当前系统安全的前提下推进。对进程请求先进行安全性检查,来决定是否进行资源分配,进而来确保系统安全,有效避免了发生死锁。问题的关键在于安全性检查算法,也就是找安全序列。
2.2.1算法的基本要求
①从键盘输入系统当前的资源信息,包括每个进程对各类资源的最大需求量,每个进程还需要的各个资源量和每个进程当前已分配的各个资源量,以及当前可用资源,结果均显示在DOS界面上。
②输入进程请求,按照已经设计好的安全性算法进行安全性检查,得到检查结果并输出整个执行过程的相关信息和最终结果,包括资源分配表和安全序列。
③程序要有处理各种异常功能,程序的可连续性执行和可控制性。包括检查进程是否存在,检查请求向量是否合法,试分配失败后的重新接受进程请求和数据恢复等。
- 上一篇:PHP学位管理系统设计+源代码
- 下一篇:Android的FTP客户端设计与实现+源代码
-
-
-
-
-
-
-
电站锅炉暖风器设计任务书
乳业同业并购式全产业链...
杂拟谷盗体内共生菌沃尔...
河岸冲刷和泥沙淤积的监测国内外研究现状
十二层带中心支撑钢结构...
大众媒体对公共政策制定的影响
java+mysql车辆管理系统的设计+源代码
当代大学生慈善意识研究+文献综述
酸性水汽提装置总汽提塔设计+CAD图纸
中考体育项目与体育教学合理结合的研究