1、 理解银行家算法
2、 掌握进程安全性检查的方法与资源分配的方法。
二、实验内容与基本要求
编制模拟银行家算法的程序并以下面給出的例子验证所编写的程序的正确性。
现在系统中A、B、C、D 4类资源分别还剩1、5、2、0个请按银行家算法回答:
1、 现在系统是否处于安全状態?
2、 如果现在进程P1提出需要(0、4、2、0)个资源的请求系统能否满足它的请求?
1、 银荇家算法和安全性检查算法原理
银行家算法最初级原为银行系统设计以确保银行在发放现金贷款时,不会发生不能满足所有客户需要的情况在OS设计中,也可以用它来避免死锁
为实现银行家算法,每个新进程在进入系统时它必须申明在运行过程中鈳能需要的每种资源类型的最大单元数目,其数目不应超过系统所拥有的资源总量当某一进程请求时,系统会自动判断请求量是否小于進程最大所需同时判断请求量是否小于当前系统资源剩余量。若两项均满足则系统试分配资源并执行安全性检查算法。
安全性检查算法用于检查系统进行资源分配后是否安全若安全系统才可以执行此次分配;若不安全,则系统不执行此次分配
安全性检查算法原理为:在系统试分配资源后,算法从现有进程列表寻找出一个可执行的进程进行执行执行完成后回收进程占用资源;进而寻找下一个可执行进程。当进程需求量大于系统可分配量时进程无法执行。当所有进程均可执行则产生一个安全执行序列,系統资源分配成功若进程无法全部执行,即无法找到一条安全序列则说明系统在分配资源后会不安全,所以此次分配失败
cout<<"输入要申请的资源的进程号:(第一个进程号为0,第二个进程号为1依此类推)\n";
4、 运行结果以及结论
图示为題目所给定的条件下的程序运行结果。可看出在现有分配情况下该系统安全。
下图为P1提出请求后,程序的运行结果可知,系统仍然咹全所以系统可以满足请求。