5.假定一个阅览室可供50个人同时阅读。
读者进入和离开阅览室时都必须在阅览室入口处的一个登记表上登记,阅览室有50个座位,规定每次只允许一个人登记或注销登记。
要求:(1)用PV操作描述读者进程的实现算法(登记、注销可用自然语言描述);
(2)指出算法中所用信号量的名称、作用及初值。
解答:
(1)信号量设计
empty,代表阅览室可供使用的空座位,其初值为50;
mutex,互斥信号量,代表是否可通过阅览室进行登记或者注销登记,其初值为1。
(2)读者进入阅览室
Process 登记
{
到达阅览室入口处;
P(empty); //申请入阅览室,看是否有空座位
P(mutex); //有空座位的话,申请登记
在入口处登记座位号;
V(mutex); //登记结束,释放通过权
进入座位并阅读;
}
(3)读者出阅览室
Process 注销
{
结束阅读到达阅览室入中处;
P(mutex); //申请注销
在入口处注销座位号;
V(mutex); //成功注销后,释放通过权
V(empty); //释放一个空的阅览室座位
离开入口处;
}
6
并分别计算每个作业的周转时间,3个作业平均周转时间和平均带权周转时间.
解答:
采用单道程序设计。
采用非抢占式的短作业优先调度算法:
(1)3个作业的调度顺序如下:
作业1-----作业3-----作业2
(2)每个作业的周转时间如下:
作业1:提交时间10点;完成时间12点; T1=120(分钟) W1=120/120=1 作业2:提交时间10点01;完成时间13点15;T2=194(分钟) W2=194/60=3.23 作业3:提交时间10点25;完成时间12点15;T3=110(分钟) W3=110/15=7.33
(3)平均周转时间和平均带权周转时间如下:
T=(T1+T2+T3)/3=141.33(分钟)
W=(W 1+ W 2+ W 3)/3=3.85
7、系统中有五个进程P1、P2、P3、P4、P5,有三种类型的资源:R1、R2、和R3。
在T0时刻系统状态如表所示。
若采用银行家算法实施死锁避免策略,回答下列问题:
(1)T0时刻是否为安全状态?为什么?
(2)若这时P4请求资源(1,2,0),是否能实施资源分配?为什么?
(3)在上面的基础上,若进程P3请求资源(0,1,0),是否能实施资源分配?为什么?
T0时刻系统状态
解答:
(1)
NEED如下所示:
【2】先执行进程P1,该进程执行后释放所占用资源,系统可用资源变为(3,3,1);
【3】因为NEED(4)<Available;所以选择执行进程P4,该进程执行后释放所占
用资源,系统可用资源变为(4,4,6);
【4】因为NEED(5)<Available;所以选择执行进程P5,该进程执行后释放所占
用资源,系统可用资源变为(4,7,9);
【5】因为NEED(2)<Available;所以选择执行进程P2,该进程执行后释放所占
用资源,系统可用资源变为(6,7,9);
【6】因为NEED(3)<Available;所以选择执行进程P3,该进程执行后释放所占
用资源,系统可用资源变为(6,7,12);
所以T0时刻是安全的,因为存在安全序列,该序列为:P1,P4,P5,P2,P3。
(2)P4请求资源(1,2,0),根据银行家算法,
【1】由已知,可得出各进程的NEED如下所示:
request(4)< Available
所以假设给进程P4分配请求资源(1,2,0);
则Available为(2,1,0)
Allocation(4)为(2,3,5)
Need(4)为(2,0,0)
【3】先执行进程P1,该进程执行后释放所占用资源,系统可用资源变为(2,1,1);
【4】因为NEED(4)<Available;所以选择执行进程P4,该进程执行后释放所占
用资源,系统可用资源变为(4,4,6);
【5】因为NEED(5)<Available;所以选择执行进程P5,该进程执行后释放所占
用资源,系统可用资源变为(4,7,9);
【6】因为NEED(2)<Available;所以选择执行进程P2,该进程执行后释放所占
用资源,系统可用资源变为(6,7,9);
【7】因为NEED(3)<Available;所以选择执行进程P3,该进程执行后释放所占
用资源,系统可用资源变为(6,7,12);
所以预分配后系统是安全的,安全序列为:P1,P4,P5,P2,P3
(4)在上面的基础上,就是说明可以给P4进程进行分配后的系统状态下,则状态表如下:
【1】由已知,可得出各进程的NEED如下所示:
【2】因为request(3)<need(3);request(3)< Available
所以假设给进程P3分配请求资源(0,1,0);
则Available为(2,0,0)
Allocation(3)为(0,1,3)
Need(3)为(6,5,2)
【3】先执行进程P1,该进程执行后释放所占用资源,系统可用资源变为(2,0,1);
【4】因为NEED(4)<Available;所以选择执行进程P4,该进程执行后释放所占用资源,系统可用资源变为(4,3,6);
【5】因为NEED(5)<Available;所以选择执行进程P5,该进程执行后释放所占用资源,系统可用资源变为(4,6,9);
【6】因为NEED(2)>Available;且NEED(3)>Available;
所以根据银行家算法,预分配后系统不安全,所以不能实施资源分配。