解:(10)
评分:变量、进程、程序主体每项一分。
var a,b,c,d,e,f,g,h,i:semaphore := 0,0,0,0,0,0,0,0; begin parbegin begin S1;signal(a); signal(b); end begin wait(a); S2; signal(c);signal(d); end begin wait(c); S3; signal(e);signal(f); end begin wait(b); S4; signal(g); end begin wait(d);wait(e) S5; signal(h); end begin wait(f); wait(g); S6 ; signal(i); end begin wait(h); wait(i); S7; end parend end
24、在公共汽车上,乘客上完后,售票员关门,驾驶员开车,售票员售票,到站汽车停稳后,售票员开门,乘客上下车,售票员和驾驶员之间密切配合,直到下班。请用信号量描述公共汽车上售票员与驾驶员的工作过程。(10分) 解:建立驾驶员和售票员两进程,驾驶员进程执行过程如下:
(1) 判售票员关门没有 (2) 开车 (3) 到站后停车
(4) 重复(1)-(3)
售票员执行过程如下:
(1) 判断乘客上完没有 (2) 关门 (3) 售票
(4) 判车停稳没有 (5) 开门
(6) 重复(1)-(5)
评分标准:执行过程完善3分, 驾驶员与售票员合作消息正确3分 售票员与驾驶员合作消息正确3分 书写格式1分
25、设某作业占有7个页面,如果在主存中只允许装入4个工作页面(即工作集为4),作业运行时,实际访问页面的顺序是:1, 2, 3, 6, 4, 7, 3, 2, 1, 4, 7, 5, 6, 5, 2, 1。试用FIFO、LRU和CLOCK页面置换算法,列出各自的页面淘汰顺序和页面置换次数。 (10分) 解:FIFO:
1, 2, 3, 6, 4, 7, 3, 2, 1, 4, 7, 5, 6, 5, 2, 1 1 1 1 1 4 4 4 4 5 5 2 2 2 2 7 7 7 7 6
3 3 3 3 2 2 2 2
6 6 6 6 1 1 1
页面置换次数为:6次 LRU:
1, 2, 3, 6, 4, 7, 3, 2, 1, 4, 7, 5, 6, 5, 2, 1 1 1 1 1 4 4 4 1 1 1 1 6 6 6 2 2 2 2 7 7 7 4 4 4 4 2 2
3 3 3 3 3 3 3 7 7 7 7 1
6 6 6 2 2 2 2 5 5 5 5
页面置换次数为:10次 CLOCK:
1, 2, 3, 6, 4, 7, 3, 2, 1, 4, 7, 5, 6, 5, 2, 1 1 1 1 1 4 4 4 1 1 1 1 6 6 6 2 2 2 2 7 7 7 4 4 4 4 2 2
3 3 3 3 3 3 3 7 7 7 7 1
6 6 6 2 2 2 2 5 5 5 5
页面置换次数为:10次
26、某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,则厅外的购票者可立即进入,否则需在外面等待。若把一个购票者看作一个进程,请回答下列问题:
(1)用wait和signal操作管理这些并发进程时,应怎样定义信号量,写出信号量的初值以及信号量各种取值的含义。
(2)根据所定义的信号量,加上wait和signal原语,写出购票者进程的算法,以保证进程能够正确地并发执行。
(3)若欲购票者最多为n个人,写出信号量可能的变化范围(最大值和最小值)。
解:(1)定义一信号量S,初始值为20。 意义:
S>0 S的值表示可继续进入售 票厅的人数 S=0 表示售票厅中已有20名顾 客(购票者) S<0 |S|的值为等待进入售票 厅的人数 (2) int S=20;
COBEGIN PROCESS PI(I=1,2,??) begin
进入售票厅;
wait(S);
购票;
signal(S);
退出;
end; COEND
(3)S的最大值为20 S的最小值为20-n
27.设正在处理器上执行的一个进程的页表如下表所示,表中的虚页号和物理块号是十进制数,起始页号(块号)均为0。所有的地址均是存储器字节地址。页的大小为1024字节。(10分)
① 详述在设有快表的请求分页存储管理系统中,一个虚地址转换成物理内存地址的过程。 ② 下列虚地址对应于什么物理地址:5499,2221。
进程的页表
虚页号 0 1 2 3 4 5 状态位 1 1 0 1 0 1 访问位 1 1 0 0 0 0 修改位 0 1 0 0 0 1 物理块号 4 7 - 2 - 0 解:
5499的物理地址为:379
2221的物理地址为 :3*1024+173=3245
28、假定系统有三个并发进程read, move和print共享缓冲器B1和B2。进程read负责从输入设备上读信息,每读出一个记录后把它存放到缓冲器B1中。进程move从缓冲器B1中取出一记录,加工后存入缓冲器B2。进程print将B2中的记录取出打印输出。缓冲器B1和B2每次只能存放一个记录。要求三个进程协调完成任务,使打印出来的与读入的记录的个数,次序完全一样。请用wait和signal原语写出它们的并发程
序。(10分)
解:begin SR,SM1,SM2,SP:semaphore;
B1,B2:record;
SR:=1;SM1:=0;SM2:=1;SP:=0 Cobegin process read
X:record;
begin R: (接收来自输入设备上一个记录) X:=接收的一个记录; waiut(SR); B1:=X;
signal(SM1); goto R; end;
Process move
Y:record; Begin
M:wait(SM1); Y:=B1; signal(SR) 加工 Y
wait(SM2); B2:=Y; signal(SP); goto M; end;
Process print
Z:record; Begin
P:wait(SP); Z:=B2;
signal(SM2) 打印Z goto P; end; coend; end;
29、考虑下述页面走向:
12,3,42,1,56,2,12,3,76,3,21,2,36 当内存块数量分别为3时,试问FIFO、LRU、OPT