为了方便大家复习这里就不再详细赘述银行家算法的一些前世今生什么的,咱们直接上例题
上概念。
先熟悉几个要用到的关键词的概念。
最大申请矩阵(MAX):每个进程运行完所需要的最大资源向量
分配矩阵(allocation):这个时刻已经占有的资源向量
需求矩阵(need):这个时刻还需要的资源向量
可用矩阵(avaailable):这个时刻可用的资源向量
银行家算法
资源分配算法:
安全性算法:
讲解综合例题
解析
(1)分析:判断此时是否为安全状态,就是推出此时是否能够写出他的安全序列。我们先用有效向量(available)按照顺序依次对比需求矩阵,当所有类型的资源都满足时说明该进程可以执行,每有一个符合的之后。可用进程就得加上该进程的分配矩阵,(之前cpu给他分了一些,用完了得收回来,就是回收之前给他分配的),每一次有一个进程符合之后就从需要按照顺序从第一个开始,开始满足的就不管他了。
答:
注释:work第一个先是有效矩阵,之后是不断更新上一个那个work+allocation,其实就是可用矩阵的意思
(2)分析:我们需要先对于他的请求进行判断。首先是必须要小于我们的need矩阵,就是可以理解成超过需求矩阵之后他已经超过他的max了,来判断合不合法。其次我们判断这个时刻运行至这个进程时,cpu的有效向量是否满足他的请求(可以看一下判断安全序列的那个图)接着画出资源变化图即可。
答:
同时根据安全分析表检查可知,可以找到一个安全序列,因此系统是安全的可以将p1分配的资源分配给他
(3)分析:这道题和第二小问类似,步骤思路也一样。可以将分析表画出来
答: