1.需求分析
死锁是当多个进程因竞争资源而造成的一种僵局(每个进程所需资源被另一个进程所占用),若无外力作用,这些进程都无法向前推进。死锁的出现无疑会对用户产生影响,出于方便用户使用的目的,银行家算法就被用来避免死锁的产生。需要注意的是,避免死锁同样是属于事先预防的策略,并不是事先采取某种限制措施来破坏产生死锁的必要条件,而是在资源动态分配中防止系统进入不安全状态,以避免发生死锁。
银行家算法是将待分配的资源进行预分配,对接下来多个进程能否顺利地发生进行评估。当进程请求一组资源时,系统必须首先确定是否有足够的资源分配给该进程。若有,再进一步计算在将这些资源分配给进程后,是否会是系统处于不安全状态。如果不会,才将资源分配给它,否则让进程等待。
此系统需要注意的问题和可以完成的功能如下:
(1)进程的已分配数量和需要的数量相加不能超过此类资源的总数、在进行输入时,每一项的Max和Allocation依次输入,中间用空格隔开。
(2)系统会自动输出Need矩阵,若安全,系统会显示安全并给出安全序列若不安全则显示不安全。
(3)能判断给出的进程是否安全并给出安全序列,若此时有进程提出新的需求,还可以继续判断。
2 概要设计
(1)数据结构:
数组存储各变量矩阵
#define False 0
#define True 1