-6

我有一个关于 Dijkstra 银行家算法问题的答案的问题(问题在下面的屏幕截图中提供)。

我认为这个问题的答案应该是“是的,有可能做到”。我的想法是,一旦用户 1 完成,我们可以将他弹出并释放他请求的资源(10 个 A 和 5 个 B),并将他使用的资源返回到可用资源池,这将帮助其他人完成。

相反,答案(在问题下方的屏幕截图中)表明这是不可能的。我哪里做错了?为什么这是不可能的答案?

在此处输入图像描述

回答: 在此处输入图像描述

4

1 回答 1

2

我认为这只是一个措辞不佳的问题。问题描述指出可用资源是A = 10B = 15

在银行家的算法中,如果一个进程可以分配它需要的最大资源,它就被认为是“安全的”。(过程 1 需要 10 个 A 和 5 个 B)

然后答案表明可用资源是A = 1B = 2。如果查看当前分配的所有进程号:

进程 1 有 2 个资源
进程 2 有 3 个资源
进程 3 有 2 个资源
进程 4 有 2 个资源
--------------- ------------
使用中的总 A 资源 = 9

很明显,这个问题意味着这些是整个系统资源,而不是当前可用的资源。因此 9 A 资源正在使用中,进程 1 最多需要 10 个(它有 2 个),所以它还需要 8 个;在这种情况下,答案是否定的,这是不安全的。

于 2013-03-28T13:56:35.307 回答