(当m>n时,每个进程最多可以请求(m+n-1)/n个该类资源)
3-21.考虑某一系统,它有四类资源R1,R2,R3,R4,有5个并发进程P0,P1,P2,P3,P4。
请按照银行家算法回答下列问题:
分配向量
最大需求量
R1
R2
R3
R4
R1
R2
R3
R4
P0
0
0
1
2
0
0
1
2
P1
1
0
0
0
1
7
5
0
P2
1
3
5
4
2
3
5
6
P3
0
6
3
2
0
6
5
2
P4
0
0
1
4
0
6
5
6
当前剩余资源向量
R1
R2
R3
R4
1
5
0
2
(1)个进程的最大资源请求和分配的资源矩阵及系统当前的剩余资源向量如图3.18所示,计算各进程的剩余资源请求向量组成的矩阵。
(2)系统当前处于安全状态吗?
(3)当进程P2申请的资源分别为(1,0,0,1)时,系统能立即满足吗?
(1)
最大需求矩阵
分配矩阵
剩余请求矩阵
0012
0012
0000
1750
1000
0750
Max=
2356
Allocation=
1354
Need=
1002
0652
0632
0020
0656
0014
0642
剩余资源向量:
Available=(1502)
(2)当前系统是安全的。
判断系统是否安全,只要检查系统剩余资源向量能否对各进程的剩余请求向量找到一个进程完成序列,当按照这个序列为各进程分配资源时,各进程都能成功完成。
若能找到,则系统是安全的,否则,为不安全。
先找到p0,因为p0已满足最大资源请求,它可以完成,释放其占有的资源,使系统剩余资源向量为(1514)
之后,系统剩余资源向量(1514),可满足进程p2,使p2可以完成,释放其占有的资源,使系统剩余资源向量为(2868)
之后无论选哪一个进程都可以成功完成。
故找到的进程完成序列可为:
p0,p2,p4,p3,p1;或p0,p2,p3,p1,p4等,故系统是安全的。
(3)因系统剩余可用向量为(1502),p2的剩余请求向量为(1002),即(1502)>(1002)。
故,当p2提出(1001)请求时,能满足。
进程完成序列:
p0,p2,p4,p3,p1。
3-作业生产进程两个P操作顺序互换会发生什么现象?
无论是生产者还是消费者,P操作的顺序是重要的,应该将互斥使用的信号量P操作放在紧挨临界区的位置,如果把生产者进程中的两个P操作交换顺序,当缓冲区满时,生产者欲向缓冲区放产品时,将在P(empty)上等待,但它已得到了使用缓冲区的权力。
若此后,消费者欲取产品时,由于申请使用缓冲区不成功,它将在P(mutex)上等待,从而导致生产者等待消费者取走产品,而消费者却在等待生产者释放缓冲区,这种相互等待是无休止的,从而造成系统死锁。
4-14考虑有一个可变分区系统,含有如下顺序的空闲区:
10K,40K,20K,18K,7K,9K,12K和15K.现有请求分配存储空间的序列:
(1)12K;
(2)10K;(3)9K.
若采用首次适应算法时,将分配哪些空间区;若采用最佳、最坏适应算法呢?
(1)若采用首次适应算法
●12K的请求,将分配40K的空闲块,40K变为剩余的(40-12)K=28K;空闲队列变为:
10K\28K\20K\18K\7K\9K\12K和15K;
●10K的请求将分配10K的空闲块,空闲队列变为:
28K\20K\18K\7K\9K\12K和15K;
●9K的请求将分配28K的空闲块,空闲队列变为(28-9)=19K\20K\18K\7K\9K\12K和15K;
(2)最佳适应算法
●12K的请求将分配12K的空闲块,空闲队列变为:
10K\40K\20K\18K\7K\9K\15K;
●10K的请求将分配10K的空闲块,空闲队列变为:
40K\20K\18K\7K\9K\15K;
●9K的请求将分配9K的空闲块,空闲队列变为:
40K\20K\18K\7K\15K;
(3)最坏适应算法
●12K的请求将分配40K的空闲块,空闲队列变为:
10K\28K\20K\18K\7K\9K\15K;
●10K的请求将分配28K的空闲块,空闲队列变为:
20K\18K\7K\9K\12K\15K;
●9K的请求将分配20K的空闲块,空闲队列变为:
11K\18K\7K\12K\15K
4-15.有如图4.32所示的页表中的虚地址与物理地址之间的关系,即该进程分得6个主存块。
页的大小为4096.给出对应下面虚地址的物理地址。
(1)20;
(2)5100;
(3)8300;
(4)47000;
解:
(1)虚地址20变为页号0和页内偏移20
由页号查页表得0页对应内存块号为2,可计算得物理地址=块号*页的大小+页内偏移=2*4096+20=8212
(2)虚地址5100变为页号1和页内偏移1004(5100/4096)
由页号查页表得1页对应内存块号为1,可计算得物理地址=块号*页的大小+页内偏移=1*4096+1004=5100
(3)虚地址8300变为页号2和页内偏移108
由页号查页表得2页对应内存块号为6,可计算得物理地址=块号*页的大小+页内偏移=6*4069+108=24684
(4)虚地址47000变为页号11和页内偏移1944
11>7页号越界。