check(IM); seatcount--;
for i=1 to 100 do i++
if name[i]==readername then name[i]:=null; release(IM); end
begin
seatcount:=100;name:=null; end
cobegin
process readeri(i=1,2.…) begin
readercome(readername); read the book;
readerleave(readername); leave the readroom; end coend.
6、答:实质上是两个进程的同步问题,设信号量S1和S2分别表示可拣白子和黑子,不失一般性,若令先拣白子。
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 }
11
coend.
16、答:(1)用信号量和P、V操作。 var S,S1,S2,S3;semaphore; S:=1;S1:=S2:=S3:=0;
flag1,flag2,flag3:Boolean; flag1:=flag2:=flag3:=true; cobegin {
process 供应者
begin
repeat P(S);
取两样香烟原料放桌上,由flagi标记; /*flage1、flage2、flage3代表烟草、纸、火柴 if flag2&flag3 then V(S1); /*供纸和火柴 else if flag1&flag3 then V(S2); /*供烟草和火柴 else V(S3); /*供烟草和纸 untile false; end
process 吸烟者1
begin
repeat P(S1); 取原料; 做香烟; V(S); 吸香烟; untile false; process 吸烟者2
begin
repeat P(S2);
取原料; 做香烟; V(S); 吸香烟; untile false; process 吸烟者3
begin
repeat P(S3); 取原料; 做香烟; V(S);
12
吸香烟; untile false; }
coend.
23、
答:(1) P1,P2,P3,P4的Cki-Aki分别为:(2,2,2)、(1,0,2)、(1,0,3)、(4,2,0)
(1) 系统处于安全状态,存在安全序:P2,P1,P3,P4 (2) 可以分配,存在安全序列:P2,P1,P3,P4。 (3) 不可以分配。
24、
答:(1)系统处于安全状态,存在安全序列:P0,P3,P4,P1,P2。 (2)不能分配,否则系统会处于不安全状态。
25、
答:(1)此时可以找出进程安全序列:P4,P1,P5,P2,P3。故系统处于安全状态。
(2)可以分配,存在安全序列:P4,P1,P5,P2,P3。 (3)不可分配,系统进入不安全状态。 31、答:
semaphore wait,mutex1,mutex2; mutex1=mutex2=1;wait=1; int counter1,counter2; count1=count2=0; Cobegin {
Process p1 {
P(mutex1); counter1++;
if (counter1==1) then P(wait); V(mutex1); 过独木桥; P(mutex1); counter1--;
if (counter1==0) then V(wait); V(mutex1);
13
}
Process p2 {
P(mutex2); Counter2++;
if (counter2==1) then P(wait); V(mutex2); 过独木桥; P(mutex2); counter2--;
if (counter2==0) then V(wait); V(mutex2); } } coend
50、答:
答:semaphore mutex1,mutex2; semaphore empty,full,count;
mutex1=mutex2=1;count=3;empty=10;full=0; cobegin
process youngmonki(i=1,2…) process oldmonki(i=1,2…) { { While(true){ while(true){
P(empty);
P(count); P(mutex1); 从井中取水; V(mutex1); P(mutex2); 倒入水缸; V(mutex2); V(count); V(full); } } coend
P(full); P(count); P(mutex2); 从缸中取水; V(mutex2); V(count); V(empty); } }
14
第四章: 一、
1、试述存储管理的基本功能。 答:
(1) 存储分配; (2) 地址映射; (3) 存储保护; (4) 存储共享; (5) 存储扩充。
4、何谓地址转换(重定位)?哪些方法可以实现地址转换? 答:
逻辑地址转换为物理地址的过程称为地址转换(重定位)。
(1) 静态地址重定位; (2) 动态地址重定位;
(3) 运行时链接地址重定位。
18、试述实现虚拟存储器的基本原理。有哪几种实现方法? 答:
虚拟存储器是指在具有层次结构存储器的计算机系统中,自动实现部分装入和部分替换功能,能从逻辑上为用户提供一个比物理内存容量大得多的、可寻址的“内存储器”。是一种具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。
虚拟存储器的实现方式有两种:请求分页系统和请求分段系统。请求分页系统允许只装入少数页面的程序(及数据),便启动运行,以后,再通过调页功能及页面置换功能,陆续地把即将要运行的页面调入内存,同时把暂不运行的页面换出到外存上;请求分段系统允许只装入少数段(而非所有的段)的用户程序和数据,即可启动运行。以后再通过调段功能和段的置换功能将暂不运行的段调出,同时调入即将运行的段。 二、 1、答:
(1)当有3个物理页面时:
使用FIFO算法:缺页16次,缺页中断率16/20=80%; 使用OPT算法:缺页11次,缺页率11/20=55%。 使用LRU算法:缺页12次,缺页率12/20=60%。 (2)当使用4个物理页面时:
(2)当使用5个物理页面时:
(2)当使用6个物理页面时:
15