如何在使用Banker算法避免死锁时找到安全序列?

时间:2011-06-25 17:32:23

标签: algorithm operating-system computer-science

如何在使用Banker's algorithm避免死锁时找到安全序列?如果我使用安全算法,它不会给出序列作为输出。那我怎样才能得到一个安全的序列?

2 个答案:

答案 0 :(得分:3)

通过银行家的算法,您可以了解可用资源的总数,以及每个流程可能请求的最大资源数。保守,你毕竟是银行家,你认为任何过程都会在完成之前请求它的最大资源。

当请求资源时,首先查看是否有足够的资源,以便至少有一个进程可以获得其最大值。如果没有足够的资源,那么您就无法进入请求,因为您将进入不安全状态。

现在假设您确定的所有进程都可以获得最大值和结束时已经完成并释放了他们保留的资源。这将允许更多进程获取其最大请求并完成,从而释放更多资源。

重复直到所有进程都已完成(在这种情况下,请求可以分配),或者即使所有可以完成的进程释放了资源,仍有一些进程无法获得最大进程。

在实践中(以及手工操作的考试问题),通过进程列表通常不会超过几次,以查看您是处于安全还是不安全的状态。

答案 1 :(得分:0)

在安全算法中,将完成的矢量定义为初始化为零的整数数组。不是将完成的向量中的标志设置为true,而是将其设置为递增的订单号。最后,完成的向量将包含序列顺序。未完成的流程的完成订单将等于零。