因为这样可能导致系统死锁。当系统中没有空缓冲时,生产者进程的wait(mutex)操作获取了缓冲队列的控制权,而wait(empty) 导致生产者进程阻塞,这时消费者进程也无法执行。(3分)
六 算法题
10.进程的基本状态有哪些?这些状态之间是如何转换的?
进程的基本状态有:就绪,阻塞,执行三种。(2分)
就绪到执行:进程调度 执行到就绪:时间片完
执行到阻塞:I/O请求或等待事件发
生
阻塞到就绪:I/O完成或事件已发生 (3分)
3.设系统有三种类型的资源,数量为(4,2,2),系统中有进程A,B,C按如下顺序请求资源: 进程A申请(3,2,1) 进程B申请(1,0,1) 进程A申请(0,1,0) 进程C申请(2,0,0)
请你给出一和防止死锁的资源剥夺分配策略,完成上述请求序列,并列出资源分配过程,指明哪些进程需要等待,哪些资源被剥夺。(10分)
5、某虚拟存储器的用户编程空间共321KB,内存为16KB。假定某时刻一用户页表中已调入内存的页面的页号和物理块号的对照表如下:
页号 物理块号 1 2 3 4
6、某段表内容如下:
5 10 4 7 解:(10分)
① 分配策略为:当进程Pi申请ri类资源时,检查ri中有无可
分配的资源:有则分配给Pi;否则将Pi占有的资源全部释放而进入等待状态。(Pi等待原占有的所有资源和新申请的资源)
② 资源分配过程: 剩余资源 进程A:(3,2,1) (1,0,1) 进程B:(1,0,1) (0,0,0) 进程A:(0,1,0)(不满足) (3,2,1) A的所有资源被剥夺,A处于等待 进程C:(2,0,0) (1,2,1) C,B完成之后,A可完成。
则逻辑地址0A5C(H)所对应的物理地址是什么?
答:逻辑地址0A5CH)所对应的二进制表示形式是:0000 1010 0101 1100 ,由于1K=210,下划线部分前的编码为000010,表示该逻辑地址对应的页号为3查页表,得到物理块号是4(十进制),即物理块地址为:0001 0010 0000 0000 ,拼接块内地址0000 0000 0101 1100,得0001 0010 0101 1100,即125C(H).
一逻辑地址为(2,154)的实际物理地址为多少?
段号 0 1 2 3
10.系统运行有三个进程:输入进程、计算进程和打印进程,它们协同完成工作。输入进程和计算进程之间共用缓冲区buffer1,计算进程和打印进程之间共用缓冲区buffer2。输入进程接收外部数据放入buffer1中;计算进程从buffer1中取出数据进行计算,然后将结果放入buffer2;打印进程从buffer2
取出数据打印输出。
用算法描述这三个进程的工作情况,并用wait和signal原语实现其同步操作。(共8分)
解:(共8分)
解答:输入进程、计算进程和打印进程之间的同步问题描述如下:
var:mutex1,mutex2,empty1,empty2,full1,full2:=1,1,1,1,0,0; InP:begin repeat
wait(empty1); wait(mutex1);
input a data from keyboard;
段首地址 120K 760K 480K 370K 段长度 40K 30K 20K 20K 答:逻辑地址(2154)表示段号为2,即段首地址为480K,
154为单元号,则实际物理地址为480K+154。
Add to buffer1; signal(mutex1); signal(full1); until false end CalP:begin repeat
wait(full1); wait(mutex1);
Take a data form buffer1; Add to ch1; signal(mutex1);
end
signal(empty1); calculate ch1; wait (empty2); wait(mutex2); Take a data form ch1; Add to buffer2; signal (mutex2); signal (full2);
until false
OutP:begin repeat
end
wait(full2); wait(mutex2);
Take a data from buffer2; Add to printer controler; signal(mutex2); signal(empty2); start printer;
until false
(评分标准:信号量设置2分,输入进程、计算进程、打印进程各2分)
11.在一个请求分页系统中,有一个长度为 5 页的进程,假如系统为它分配 3 个物理块 ,并且此进程的页面走向为 2,3,2,1,5,2,4,5,3,2,5,2。试用 FIFO 和 LRU 两种算法分别计算出程序访问过程中所发生的缺页次数。(10分) 解:FIFO:
2 3 2 1 5 2 4 5 3 2 5 2 第1页 2 2 2 5 5 5 3 3 3 第2页 3 3 3 2 2 2 5 5 第3页 1 1 1 4 4 4 2
缺页中断次数 = 6 LUR:
2 3 2 1 5 2 4 5 3 2 5 2 第1页 2 2 2 2 5 5 5 3 第2页 3 3 5 2 3 3 5 第3页 1 1 4 4 2 2
缺页中断次数 = 5
18、若干个等待访问磁盘者依次要访问的磁道为20,44,40,4,80,12,76,假设每移动一个磁道需要3毫秒时间,移动臂当前位于40号柱面,请按下列算法分别写出访问序列并计算为完成上述各次访问总共花费的寻道时间。 (1)先来先服务算法;
(2)最短寻道时间优先算法。
(3)扫描算法(当前磁头移动的方向为磁道递增)(10分)
解:
(1)磁道访问顺序为:20,44,40,4,80,12,76 寻道时间=(20+24+4+36+76+68+64)*3=292*3=876 (2)磁道访问顺序为:40,44,20,12,4,76,80 寻道时间=(0+4+24+8+8+72+4)*3=120*3=360 (3)磁道访问顺序为:40,44,76,80,20,12,4 寻道时间=(0+4+32+4+60+8+8)*3=116*3=348