文章目录
1. 什么是安全序列
- 所谓
安全序列
,就是指如果系统按照这种序列分配资源,则每个进程都能顺利完成。只要能找出一个安全序列,系统就是安全状态
。当然,安全序列可能有多个
。 - 比如:银行家借钱:
- 如果分配了资源之后,系统中找不出任何一个安全序列,系统就进入了
不安全状态
。这就意味着之后可能
所有进程都无法顺利的执行下去。 - 如果系统处于
安全状态
,就一定不会
发生死锁。如果系统进入不安全状态
,就可能
发生死锁。 - 因此在分配资源之前
预先判断
是否会进入不安全状态,就是“银行家算法
”的核心思想。
2. 银行家算法
-
核心思想:在进程提出资源申请时,先预判断此次分配是否会导致系统进入不安全状态。如果会进入不安全状态,就暂时不答应这次请求,让该进程先阻塞等待。
-
数据结构:
Max:n * m 矩阵表示各进程对资源的最大需求数
Allocation:n * m 矩阵表示已经给各进程最分配了多少资源
Need &