操作系统学习笔记(七)---银行家算法小结

银行家算法:

Allocation(已分配资源)

Request(还需要的资源)

Availiable(当前可用资源)

Max(每个进程的最大需求)

work(?)

finish(进程i是否完成)(注意进程完成后会释放资源)

细分为2个算法:即安全性算法和资源请求算法

安全性算法:确定系统状态是否安全(是否有一个进程处理顺序满足所有进程的资源分配)

资源请求算法:如果进程P向系统请求一系列资源,判断能否允许该请求。

 

例题1:

Considerthe following snapshot of a system:

Answer the following questions using the banker’s algorithm:

a. What is the content of the matrix Need?

b. Is the system in a safe state?

c. If a request from process P1 arrives for (0,4,2,0), can the request be granted immediately?

Answer:

a.如图(Need = Max - Allocation) Need矩阵由最大资源请求矩阵以及已分配资源矩阵得

(该算法必须先得到Need矩阵)

b.

安全性判断:当前可用资源能否让所有的进程完成。

Work表初始化为Available,从上往下循环查找Need<=Available(Work)的进程,如果有,则Work+=Allocation(Pi)

若算法结束任然有Pi未Finish,则说明该系统是不安全的。

如图,使用安全性算法我们可以找到这样一个顺序<P0,P2,P3,P4,P1>满足安全要求,所以该系统处于安全状态。

 

c.能否允许进程的资源请求的问题

①资源请求算法首先判断Pi的各项资源请求是否满足Request[i]<=Need[i],如果不满足则产生出错条件,因为进程Pi超过了其最大请求。

②然后判断Request[i]<=Available,任何一个资源超过Available该进程都必须等待,没有足够的资源满足请求。

③假设接受该进程的资源请求,则Allocation矩阵,Need矩阵,Available矩阵都要改变,

(Allocation += Request)(Need -= Request)(Available-=Request)

然后用安全性检查算法判断安全性,若安全才能得出结论允许请求。

P1的request(0,4,2,0)<=Need(0,7,5,0)&&<=Available(1,5,2,0),假设分配P1资源,得到新的Need和Available如下

进行安全性检查可以得到顺序<P0,P2,P3,P4,P1>满足安全要求,所以可以马上同意P1的该请求。

 

例题2

Prove that the safety algorithm presented in Section 7.5.3 requires an orderof m×n^2 operations.

Answer:

银行家算法,n为系统进程的个数,m为资源类型的种类。

该算法首先检测进程i的请求是否合法,如果合法,尝试对其分配资源并进行安全性检查。

资源请求算法的时间复杂度为O(m)(比较m项资源是否都满足条件),每次安全性检查的时间复杂度为O(mn^2)(最坏情况下,每次检查到最后一个进程:1+2+…+n次操作,而对Need与Wrok的比较需要依次比较向量中的每一个元素,这两个向量的长度为m,所以有n^2次操作的比较,而每次比较耗时m)。

 

银行家算法至少需要1个进程发出资源请求来启动,然后进行安全性检查,所以时间复杂度

O(m) + O(mn^{2}) = O(mn^{2})

 

例题3

Considerthe following snapshot of a system:

Answer the following questions using the banker’s algorithm:

a. Illustrate that the system is in a safe state by demonstrating an order in which the processes may complete.

b. If a request from process P1 arrives for (1,1,0,0), can the request be granted immediately?

c. If a request from process P4 arrives for (0,0,2,0), can the request be granted immediately?

Answer:

a.

如上图,完成顺序<P0,P3,P4,P1,P2>满足安全要求,所以系统处于安全状态

 

b.

假设接受P1的request,进行安全性检查,更新后的Need和Available如下

如图,完成顺序<P0,P3,P4,P1,P2>满足安全要求,所以可以保证P1的(1,1,0,0)的资源请求。

 

c.

如图:假设接受了P4的(0,0,2,0)的资源请求,更新后的Need和Available如上,进行安全性检查发现无法使得所有进程完成,会导致系统处于不安全状态,所以无法保证该请求。

 

猜你喜欢

转载自blog.csdn.net/qq_37205708/article/details/86550339