答:
当前系统处于安全状态,安全序列如下求解: work = Available = (3 , 3 , 2 )
寻找 Needj <= work = ( 3 , 3 , 2 ) ( j = 0 , 1 , 2 , 3 , 4) j = 1 Need1 = (1 ,2 ,3 ) < = (3 , 3 , 2 ) work : = (3 , 3 , 2 ) + (2 ,0 ,0 ) = (5 , 3 , 2 )
寻找 Needj <= work = ( 5 , 3 , 2 ) ( j = 0 , 2 , 3 , 4) j = 3 Need3 = (0 ,1 ,1 ) < = (5 , 3 , 2 ) work : = (5 , 3 , 2 ) + (2 ,1 ,1 ) = (7 , 4 , 3 ) 寻找 Needj <= work = (7 , 4 , 3 ) ( j = 0 , 2 , 4) j = 4 Need4 = (4 ,3 ,1 ) < = (7 , 4 , 3 ) work : = (7 , 4 , 3 ) + (0 ,0 ,2 ) = (7 , 4 , 5) 寻找 Needj <= work = (7 , 4 , 5) (j = 0 , 2 ) j = 2 Need2 = (6 ,0 ,0 ) < = (7 , 4 , 5 ) work : = (7 , 4 , 5 ) + (3 ,0 ,2 ) = (10 , 4 , 7) 寻找 Needj <= work = (10 , 4 , 7) ( j = 0 ) j = 0 work : = (10 , 4 , 7 ) + (0 ,1 ,0 ) = (10 , 5 , 7) 所以安全序列为<P1,P3,P4,P2,P0>。
15、有一阅览室,读者进入时必须先在一张登记表上登记。该表中每个表项代表阅览室中的一个座位。读者离开时要消掉其登记信息。阅览室共有50个座位。登记表每次仅允许一位读者进行登记或注销。读者登记时,发现登记表满,他在阅览室外等待,直至有空位再登记进入。试用类Pascal语言和P、V操作,描述读者行为。 答:
Begin {initial value of S is 50}
Parbegin Begin {register } P (S) ;
Register and enter into the reading room ; End;
16
Begin {leave off} Register off and leave ; V (S) ; End ; End ;
16、考虑一个共有150个存储单元的系统,如下分配给三个进程,P1最大需求70,己占有25;P2最大需求60,己占有40;P3最大需求60,己占有45。使用银行家算法,以确定下面的任何一个请求是否安全。(1)P4进程到达,P4最大需求60,最初请求25个。(2)P4进程到达,P4最大需求60,最初请求35。如果安全,找出所有的安全序列;如果不安全,给出结果分配情况。 答:
(1) 由于系统目前还有150-25-40-45=40个单元,P4进程到达,把25个单元分给它。这
时系统还余15个单元,可把15个单元分给P3,它执行完后会释放60个单元。于是可供P1(还要45个单元),P2(还要20个单元),P4(还要35个单元)任何一个执行。安全序列为:
P1,P2,P3,P4,P3,P1,P2,P4 P1,P2,P3,P4,P3,P1,P4,P2 P1,P2,P3,P4,P3,P2,P1,P4 P1,P2,P3,P4,P3,P2,P4,P1 P1,P2,P3,P4,P3,P4,P1,P2 P1,P2,P3,P4,P3,P4,P2,P1
(2) P4进程到达,P4最大需求60,最初请求35。如果把35个单元分给P4,系统还余5
个单元,不再能满足任何一个进程的需求,系统进入不安全状态。
17、在一个盒子里,混装了数量相等的黑白围棋子。现在用自动分拣系统把黑子、白子分开,设分拣系统有二个进程P1和P2,其中P1拣白子;P2拣黑子。规定每个进程每次拣一子;当一个进程在拣时,不允许另一个进程去拣;当一个进程拣了一子时,必须让另一个进程去拣。试写出两进程P1和P2能并发正确执行的程序。 答:
实质上是两个进程的同步问题,设信号量S1和S2分别表示可拣白子和黑子,不失一般性,若令先拣白子。
17
var S1,S2:semaphore;
S1:=1;S2:=0; cobegin {
process P1 begin repeat P(S1); 拣白子 V(S2); until false; end process P2 begin repeat P(S2); 拣黑子 V(S1); until false; end } coend.
18、系统有A、B、C、D共4种资源,在某时刻进程P0、P1、P2、P3和P4对资源的占有和需求情况如表,试解答下列问题:
Allocation Process A B C D P0 0 0 3 2 A B C D A B C D 0 0 4 4 1 6 2 2 Claim Available 18
P1 P2 P3 P4
1 0 0 0 1 3 5 4 2 7 5 0 3 6 10 10 0 3 3 2 0 9 8 4 0 0 1 4 0 6 6 10 (1) 系统此时处于安全状态吗?为什么?
(2) 若此时P2发出request1(1、2、2、2),系统能分配资源给它吗?为什么? 答:
(1)系统处于安全状态,存在安全序列: P0,P3,P4,P1,P2 P0,P3,P1,P4,P2 P0,P3,P1,P2,P4
(2)不能分配,否则系统会处于不安全状态。
19、假设有32 个存储区域,其编号为0,1,…,31,用一个32 位的标志字,位号也是0,1,…31,分别描述32 个存储区域使用状态:当某一位为1 时,表示对应存储区域已分配,若为0,表示对应存储区域空闲。
get进程: 负责存储区域分配,每次分配一个区域,找出标志字某为0 的位置成1。 put进程: 负责存储区域回收,把回收存储区域标志字对应位清成0。 要求:
(1)分析get 进程与put 进程的具体同步关系。 答:
get进程分配完32.个存储区域后,再执行分配时必须等待put进程回收区域,而put进程无须等待分配进程get;get与put共享32位的标志字,它们必须互斥访问
(2)采用PV 操作同步工具,写出get 进程与put 进程的同步算法(可用流程图描述,但信号量名称、作用、初值必须说明。)
答:mutex是互斥信号量,初值是1,对32位标志字进行保护;
S是标志字的同步信号量,初值为32,表示系统开始时32个区域均空闲,可供分配。
19
第五章
11.
当分配给改作业的物理页框数为3时
使用opt算法,缺页中断数为6,缺页中断率为50% 使用fifo算法,缺页中断数为9,缺页中断率为75%
使用LRO算法,缺页中断数为7,缺页中断率为7/12=58.3% 13.
(1)物理地址=400+430=830 (2)物理地址=1300+200=1500 (3)地址越界 (4)缺段中断 15.
0A5C=0000 1010 0101 1100 1KB=210B
虚拟地址的高六位为页号,低10位为页内地址
页号=000010B=2 ,对应的物理块号为4,页内地址=1001011100B=604 物理地址=4*1024+604=4700
093C=0000 1001 0011 1100 页号为2,对应的物理块为4,页内地址=100111100=316
物理地址=4*1024+316=4412
20