系统中有五个进程P1、P2、P3、P4、P5,有三种类型的资源:R1、R2、和R3。在T0时刻系统状态如下表。若采用银行家算法实施死锁避免策略, 屏幕截图-1.jpg 屏幕截图-2.jpg 回答下列问题: 1、请给出T0时刻的一个安全序列: (只能填入大写字母) (A): P1、P2、P5、P3、P4; (B):P1、P2、P4、P3、P5; (C):P5、P3、P1、P2、P4; (D):P5、P4、P2、P3、P1 2、并给出P3进程执行完后的Available表中对应的R1、R2、R3的资源数目。(只能填入数字)
时间: 2023-08-26 08:05:40 浏览: 433
1、根据银行家算法,安全序列应该满足以下条件:
- 所有进程的需要资源数不能超过系统剩余的资源数
- 如果一个进程申请资源后能够完成任务并释放所有资源,则该进程应该优先考虑
根据题目给出的信息,T0时刻系统状态如下:
| 进程 | 已分配资源 | 需要资源 | 最大需求资源 |
|------|------------|----------|--------------|
| P1 | 0 1 0 | 7 5 3 | 7 5 3 |
| P2 | 2 0 0 | 3 2 2 | 3 2 2 |
| P3 | 3 0 2 | 9 0 2 | 9 0 2 |
| P4 | 2 1 1 | 2 2 2 | 3 3 4 |
| P5 | 0 0 2 | 4 3 3 | 6 6 6 |
| Available | 3 3 2 | | |
根据银行家算法,我们需要计算出每个进程需要的资源数和当前系统可用的资源数,然后判断是否存在安全序列。根据需要资源和已分配资源的差值,可以计算出每个进程还需要的资源数:
| 进程 | 需要资源 | 已分配资源 | 还需要资源 |
|------|----------|------------|------------|
| P1 | 7 5 3 | 0 1 0 | 7 4 3 |
| P2 | 3 2 2 | 2 0 0 | 1 2 2 |
| P3 | 9 0 2 | 3 0 2 | 6 0 0 |
| P4 | 2 2 2 | 2 1 1 | 0 1 1 |
| P5 | 4 3 3 | 0 0 2 | 4 3 1 |
然后,我们需要计算出当前系统可用的资源数。根据已分配资源和还需要资源的差值,可以计算出每种资源当前可用的数量:
| 资源 | 已分配资源 | 还需要资源 | 可用资源数 |
|------|------------|------------|------------|
| R1 | 7 | 16 | 3 |
| R2 | 2 | 8 | 3 |
| R3 | 5 | 12 | 2 |
接下来,我们需要尝试找到一个安全序列,满足所有进程都能够完成任务并释放所有资源。可以使用以下步骤来实现:
1. 找到一个进程,其还需要的资源数不超过当前系统可用的资源数。如果找不到这样的进程,则说明当前状态不安全,不存在安全序列。
2. 假设找到的进程是 P1。我们可以暂时将 P1 从系统中移除,并将其已分配的资源释放回系统。此时,系统可用的资源数为:
| 资源 | 已分配资源 | 还需要资源 | 可用资源数 |
|------|------------|------------|------------|
| R1 | 7 | 23 | 4 |
| R2 | 3 | 5 | 6 |
| R3 | 5 | 13 | 3 |
3. 重复步骤 1 和步骤 2,直到找到一个安全序列。根据以上步骤,可以得到安全序列为:P1、P2、P5、P3、P4。
因此,答案为 (A):P1、P2、P5、P3、P4。
2、根据题目给出的信息,P3进程执行完后,已分配资源为 6 0 4,需要资源为 9 0 2,最大需求资源为 9 0 2。根据银行家算法,我们需要计算出可用资源数,即已分配资源和还需要资源的差值:
| 资源 | 已分配资源 | 还需要资源 | 可用资源数 |
|------|------------|------------|------------|
| R1 | 7 | 15 | 3 |
| R2 | 2 | 2 | 0 |
| R3 | 5 | 8 | 4 |
因此,P3进程执行完后,Available表中对应的R1、R2、R3的资源数目为 3 0 4。
阅读全文