学号:姓名:班级:..........................................................密.......................................................封...........................................................线.......................................................... 专业级班20学年第一学期课试卷试卷类型:卷
青岛理工大学试卷纸
Var mutex, empty, full:semaphore=1,n,0;
buffer:array[0, …, n-1]
∶
parbegin
proceducer:begin
(1)
(2)
∶
∶
(3)
(4)consumer:begin
(5)
(6)
nextc=buffer(out);
∶
(7)
(8)
parend
end
参考答案:
一、单选题
1、D
2、A
3、A
4、B
5、DB
6、BC
7、CA
8、D
9、D 10、BD
11、D 12、BBC 13、C 14、CB 15、AD 16、ACF 17、DC 18、C 19、A
二、填空题
1、wait(empty);、wait(mutex);、signal(mutex);、signal(full);、wait(full);、wait(mutex);、signal(mutex);、signal(empty);
2、互斥条件、请求与保持条件、不剥夺条件和环路等待条件
3、3071 、7596 、越界中断。
4、51337 、越界中断、75280 、段号不合法
5、输入井输出井、内存中的输入缓冲区和输出缓冲区、输入进程和输出进程
6、132、1
7、4。
7、置换算法选用不当
8、CPU、I/O设备
9、1、4。
三、应用题
答:方法一:从临界资源的角度来思考:本题中有两类临界资源:第一类是计算进程争用的空闲缓冲区,初始状态下有一个空闲缓冲可供使用,设置信号量empty,初值为1;第二类是打印进程争用的已放入缓冲区中的打印结果,初始状态下缓冲区中无结果可打印,设置信号量full,初值为0。
var full, empty: semaphore:=0,1;
begin
end
方法二:从同步角度来思考,本题中存在两种同步关系:1)打印进程必须等待计算进程将计算结果放入缓冲区之后,才能取结果打印,因此,为它们设置初值为0的信号量SA;2)除第一个计算结果可直接放入缓冲区外,计算进程必须等打印进程将缓冲区中的前一个结果取走,缓冲区变空后,才能将下一个计算结果放入缓冲区,因此,可为它们设置初值为0的信号量SB。
var SA, SB: semaphore:=0,0;
begin。