2 2/4 5 3 4(不安全) 4 5/3 3 5 2(不安全) 6 (5+3)/0 0(8) 7 4/3 4 8 (2+2)/2 2 9 (1) P1占有5个资源,剩余3个资源请求。 P2占有2个资源,剩余4个资源请求。 P3占有0个资源,剩余7个资源请求。 系统剩余3个资源。
(2)P1的请求最先满足。进程完成序列:P1,P2,P3。
3-21.
(1)
最大需求矩阵: 分配矩阵: 剩余请求矩阵:
0 0 1 2 0 0 1 2 0 0 0 0
1 7 5 0 1 0 0 0 Max = Allocation = Need = 0 7 5 0 2 3 5 6 1 3 5 4 1 0 0 2
0 6 5 2 0 6 3 2 0 0 2 0
0 6 5 6 0 0 1 4 0 6 4 2
剩余资源向量:Available=(1 5 0 2)
(2)当前系统是安全的。
判断系统是否安全,只要检查系统剩余资源向量能否对各进程的剩余请求向量找到一个进程完成序列,当按照这个序列为各进程分配资源时,各进程都能成功完成。若能找到,则系统是安全的,否则,为不安全。
先找到p0, 因为p0已满足最大资源请求,它可以完成,释放其占有的资源,使系统剩余资源向量为(1 5 1 4)
之后,系统剩余资源向量(1 5 1 4),可满足进程p2, 使p2 可以完成,释放其占有的资源,使系统剩余资源向量为(2 8 6 8)。
之后无论选哪一个进程都可成功完成。
16
故找到的进程完成序列可为:p0,p2,p4,p3,p1; 或 p0,p2,p3,p1,p4 等,故系统是安全的。
(3)因系统剩余可用向量为(1502),p2的剩余请求向量为(1002),即(1502)>(1002)。故,当p2提出(1001)请求时,能满足。进程完成序列:p0,p2,p4,p3,p1
17
第4 章 习题答案
4-14 内存有如下顺序排列的空闲块:10K,40K,20K,18K,7K,9K,12K和15K,有如下的请求序列:12K,10K,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)=18K,
20K,18K,7K,9K,12K和15K; (2)若采用最佳适应法: ? 12K的请求:将分配12K的空闲块,空闲队列变为:10K,40K,20K,
18K,7K,9K和15K; ? 10K的请求:将分配10K的空闲块,空闲队列变为:40K,20K,18K,
7K,9K,12K和15K; ? 9K的请求:将分配9K的空闲块,空闲队列变为: 40K,20K,18K,
7K, 12K和15K; (3)若采用最坏适应法: ? 12K的请求,将分配40K的空闲块,空闲队列变为:10K,28K,20K,
18K,7K,9K和15K;
? 10K的请求:将分配28K的空闲块,空闲队列变为: 20K,18K,
7K,9K,12K和15K;
? 9K的请求:将分配20K的空闲块,空闲队列变为:10K,18K,11K,
18K,7K, 12K和15K。
4-15 有如下图所示的页表中的虚地址与物理地址之间的关系,即该进程分得6个内存块。页的大小为4096。给出对应下面虚地址的物理地址:(1)20; (2) 5100; (3) 8300; (4) 47000. 0 1 2 3 4 5 6 7 2 1 6 0 4 3 x x 解:
(1)虚地址 20变为页号0 和页内偏移20
由页号查页表得0页对应内存块号为2 ,可计算得 物理地址=块号*页的大小+页内偏移=2*4096+20=8212
18
(2)虚地址 5100变为页号1 和页内偏移1004(5100/4096) 由页号查页表得1页对应内存块号为1 ,可计算得 物理地址=块号*页的大小+页内偏移=1*4096+1004=5100 (3)虚地址 8300变为页号2 和页内偏移108
由页号查页表得2页对应内存块号为6 ,可计算得 物理地址=块号*页的大小+页内偏移=6*4096+108=24684 (4)虚地址 47000变为页号11 和页内偏移1944 11>7 页号越界
4-16?一个作业在执行过程中,按如下顺序依次访问各页,作业分得四个主存块,问分别采用FIFO、LRU和OPT算法时,要产生多少次缺页中断?设进程开始运行时,主存没有页面。
页访问串顺序为:0 1 7 2 3 2 7 1 0 3 2 5 1 7 (1)FIFO
0 1 7 2 3 2 7 1 0 3 2 5 1 7
0 1 7 2 3 3 3 3 0 0 0 5 1 7
0 1 7 2 2 2 2 3 3 3 0 5 1
0 1 7 7 7 7 2 2 2 3 0 5
0 1 1 1 1 7 7 7 2 3 0
F F F F F S S S F S S F F F
采用FIFO淘汰算法,产生9次缺页中断。
(2)LRU
0 1 7 2 3 2 7 1 0 3 2 5 1 7
0 1 7 2 3 2 7 1 0 3 2 5 1 7
0 1 7 2 3 2 7 1 0 3 2 5 1
0 1 7 7 3 2 7 1 0 3 2 5
0 1 1 1 3 2 7 1 0 3 2
F F F F F S S S F F F F F F
采用LRU算法时,产生11次缺页中断。
19
4-17 考虑如图所示的段表,给出如下所示的逻辑地址所对应的物理地址。 (1)0,430 ? 219+430=649 段始址 段的长度 (2)1,10 ? 2300+10=2310 219 600 (3)2,500 ? 500>100段内地址越界 2300 14 (4)3,400 ? 1326+400=1726 92 100 (5)4,112 ? 112>96 段内地址越界 1326 580 1954 96
4-18 一台计算机含有65536字节的存储空间,这一空间被分成许多长度为4096字节的页。有一程序,其代码段为32768字节,数据段为16386字节,栈段为15870字节。试问该机器的主存空间适合这个作业吗?如果每页改成512字节,适合吗? 答: (1)
存储空间每块为4096个字节,共可分成16块。
程序代码段占32768/4096=8块,数据段占16386/4096=5块,栈段占15870/4096=4块,合计为8+5+4=17块,故该机器的主存空间不适合这个作业。
(2)
当存储空间每块为512个字节,共可分成128块。
程序代码段占32768/512=64块,数据段占16386/512=33块,栈段占15870/512=31块,合计为64+33+31=128块,故该机器的主存空间是适合这个作业的。
4-19 逻辑地址中,用9位表示页号,用10位表示页内地址。
4-20 (1)缺页中断50次; 5000次 (2)缺页中断100次; 10000次
4-21 0.9×(0.75×1+0.25×8)+0.10×(8+5000+8)+8
4-23 8192/4=2048 64=7+11+11+11+11+13 5级页表
20