Skip to content

Commit 75099c0

Browse files
authored
Update ch8 5concurrency-problem.rst
1 parent 00b7877 commit 75099c0

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

source/chapter8/5concurrency-problem.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ Need[i,j] = Max[i,j] - allocation[i, j]
250250

251251
安全性检查算法如下:
252252

253-
1. 设置两个向量:工作向量Work,表示操作系统可提供给线程继续运行所需的各类资源数目,它含有m个元素,初始时,Work = Available;结束向量Finish,表示系统是否有足够的资源分配给线程,使之运行完成。初始时 Finish[0..n-1] = false,表示所有线程都没结束;当有足够资源分配给线程时,设置Finish[i] = true。
253+
1. 设置两个向量工作向量Work,表示操作系统可提供给线程继续运行所需的各类资源数目,它含有m个元素,初始时,Work = Available;结束向量Finish,表示系统是否有足够的资源分配给线程,使之运行完成。初始时 Finish[0..n-1] = false,表示所有线程都没结束;当有足够资源分配给线程时,设置Finish[i] = true。
254254
2. 从线程集合中找到一个能满足下述条件的线程
255255

256256
.. code-block:: Rust
@@ -274,4 +274,4 @@ Need[i,j] = Max[i,j] - allocation[i, j]
274274
4. 如果Finish[0..=n-1] 都为true,则表示系统处于安全状态;否则表示系统处于不安全状态。
275275

276276

277-
通过操作系统调度,如银行家算法来避免死锁不是广泛使用的通用方案。因为从线程执行的一般情况上看,银行家算法需要提前获知线程总的资源申请量,以及未来的每一次请求,而这些请求对于一般线程而言在运行前是不可知或随机的。另外,即使在某些特殊情况下,可以提前知道线程的资源申请量等信息,多重循环的银行家算法开销也是很大的,不适合于对性能要求很高的操作系统中。
277+
通过操作系统调度,如银行家算法来避免死锁不是广泛使用的通用方案。因为从线程执行的一般情况上看,银行家算法需要提前获知线程总的资源申请量,以及未来的每一次请求,而这些请求对于一般线程而言在运行前是不可知或随机的。另外,即使在某些特殊情况下,可以提前知道线程的资源申请量等信息,多重循环的银行家算法开销也是很大的,不适合于对性能要求很高的操作系统中。

0 commit comments

Comments
 (0)