首页 > 试题广场 >

正确的安全序列是?

[单选题]

某时刻进程的资源使用情况如下表所示。

进程

已分配资源

尚需分配

可用资源

R1

R2

R3

R1

R2

R3

R1

R2

R3

P1

2

0

0

0

0

1

0

2

1

P2

1

2

0

1

3

2

P3

0

1

1

1

3

1

P4

0

0

1

2

0

0

此时的安全序列是()。

  • P1, P2, P3, P4
  • P1, P3, P2, P4
  • P1, P4, P3, P2
  • 不存在
即使p1p4跑完,释放所有资源也没有3个R2
发表于 2017-01-19 15:51:01 回复(0)
更多回答
用银行家算法,表中已给出available矩阵和need矩阵,只要找到need<available的一行然后加入安全序列,释放之后继续找就可以。从表中看出,第一个是p1加入安全序列,然后available矩阵变为{2,2,1},然后再次比较,把p4加入安全序列,释放p4的资源,available矩阵变为{2,2,2},再次比较发现不能满足进程提出的资源要求了,所以没有安全序列。
发表于 2017-11-07 15:24:52 回复(0)
Allocation表示已分配资源,Need表示尚需分配,Available表示可用资源

由上表可知初始化时Available=[0,2,1]

首先看P1:
P1的Need=[0,0,1],由于可用资源R1=0、R2=2、R3=1都大于或等于P1现在需要的资源,所以可以将P1加入安全序列中,P1运行完后,会释放原来已经分配的资源2个R1资源,所以现在的Available=[2,2,1]

再看P2:
P2的Need=[1,3,2],由于现有可用资源R2=2小于P2需要的R2的资源,所以不能满足要求,故A错

由于P2不满足,所以我们接着看P3:
P3的Need=[1,3,1],由于现在可用资源R2=2小于P3需要的R2的资源,所以也不能满足要求,故B错

再看P4
P4的Need=[2,0,0],由于现有的可用资源Available=[2,2,1]都大于或等于P4需要的资源,所以满足要求,可以将P4加入安全序列,P4运行完后,会释放原来已经分配给P4的2个R1资源,所以现在的Available=[4,2,1]

由于P2,P3还没有加入安全序列,所以再一次查看P2,P3是否满足
由于P2,P3都还需要3个R2资源,而现在可用的R2资源为2,所以不满足要求,所以不存在安全序列。

编辑于 2018-06-21 11:10:08 回复(3)
不存在3个R2资源供进程P2和P3使用,所以不存在安全序列
发表于 2020-07-24 18:48:58 回复(0)
现有R2资源不足以分配给请求的进程, 无论如何调度。所以一直处于堵塞,那么P2、P3一直堵塞,所在资源不能释放。因此发生死锁。
发表于 2017-07-27 17:52:28 回复(0)

要保证安全序列,就需要给每个进程分配足够的资源。P2,P3进程都需要3个R2,就算P1,P4跑完释放所有资源,也凑不够3个R2,所以不存在安全序列。

发表于 2017-06-15 15:07:26 回复(0)