{
While(true) {
P(rmutex);
If(count==0) p(wmutex); Count ++; V(rmutex); 读数据库; P(rmutex); Count --;
If (count==0) v(wmutex); V(rmutex); } }
Writer() {
While(true) {
P(wmutex); 写数据库;
V(wmutex); } }
注意:正确理解信号量rmutex的意义是理解读者-写者问题的关键。Rmutex是一个互斥信号量,用于使读进程互斥地访问共享变量count。信号量rmutex并不表示读进程的数目,表示读进程数目的是共享变量count。当一个读进程要读数据库时,应将读进程计数count增加1;如果此前(count加1以前)数据库中无读进程,还应对写互斥信号量wmutex做p操作,这样,若数据库中无写进程则通过p操作阻止后续写进程写,若数据库中有写进程,则通过p操作让读进程等待。同理,当一个读进程完成读数据库操作时,应将读进程计数count减少1;如果此时(count减1以后)数据库中已无读进程,还应对写互斥信号量wmutex做v操作,以允许写进程写。
9. 就绪队列中有10个进程,系统将时间片设为200ms,CPU进行进程切换要花费10ms,试问系统开销所占的比率约为多少?
解:因就绪队列中有10个进程,它们以时间片轮转的方式使用CPU,时间片长度为200ms。当一个时间片用完时,调度进程将当前运行进程设置为就绪状态并放入就绪队列尾,再从就绪队列首选择进程投入运行,这一过程(进程切换)要花费时间10ms。因此系统开销所占比率为:10/(200+10)=4.8%
10. 在单CPU和两台输入/输出设备(I1,I2)的多道程序设计环境下,同时投入三个作业Job1、Job2、Job3运行。这三个作业对CPU和输入/输出设备的使用顺序和时间如下所示:
Job1:I2(30ms);CPU(10ms);I1(30ms);CPU(10ms);I2(20ms)
第 33 页 共 36 页
Job2:I2(20ms);CPU(20ms);I2(40ms)
Job3:CPU(30ms);I1(20ms); CPU(10ms);I1(10ms)
假定CPU、I1、I2都能并行工作,Job1优先级最高,Job2次之,Job3优先级最低,优先级高的作业可以抢占优先级低的作业的CPU但不抢占I1和I2。试求: 三个作业从投入到完成分别需要的时间 从投入到完成的CPU利用率 I/O设备利用率。
解:三个作业并发执行时的工作情况如图4.2所示。 (1)由上图可以看出Job1从投入到运行完成需要110ms,Job2从投入到运行完成需要90ms,Job3从投入到运行完成需要110ms.
(2)CPU在时间段60ms到70ms,80ms至90ms,100ms至110ms期间空闲,所以CPU的利用率为:(110-30)/110=72.7%
(4) 设备I1在时间段20ms到40ms,90ms至100ms期间空闲,所以设备I1
的利用率为:(110-30)/110=72.7%;设备I2在时间段30ms至50ms期间空闲,所以设备I2的利用率为:(110-20)/110=81.8%。
11.试利用Bernstein 条件证明上题中的S2和S3语句是可以并发执行的,而S3和S4语句是不能并发执行的? 【解】(1) ∵R(S2) ∩ W( S3)={}; W(S2) ∩ R(S3)={}; W(S2) ∩ W(S3)={};
∴R(S2) ∩ W( S3)∪ W(S2) ∩ R(S3) ∪ W(S2) ∩ W(S3)={}
∴S2、S3可以并发执行
(2)∵R(S3) ∩ W( S4)={};
W(S3) ∩ R(S4)={c}; W(S3) ∩ W(S4)={};
∴R(S3) ∩ W( S4)∪ W(S3) ∩ R(S4) ∪ W(S3) ∩ W(S4)={c}不是空集
∴S3,S4不能并发执行
12.什么是临界资源(P16)和临界区(P50)? 【解】那些多个进程必须互斥访问的方式来实现资源共享的硬件资源和软件资源叫临界资源。
我们把在每个进程中访问临界资源的那段代码称为临界区。
13、在OS中引起进程调度的主要因素有哪些? 【解】
在OS中引起进程调度的主要因素有:
(1)缺乏资源。正在运行的进程因为某个条件不能满足,不得不进入阻塞状态,此时,运行进程被撤下,引起调度使另一个进程进入运行
(2)时间片到。如果是分时系统或者以时间片作为激励调度的系统,时间片是引起硬件激励的主要因素,每当时间片到,正在运行的进程被暂时停止,将它再次排入就绪队列,引起调度使另一就绪进程进入运行。
(3)外部中断。外部中断信号也将引起调度,如打印机打印完成,通过打印通道或者信号线路传送一激励信号,将原等待进程唤醒重新进入运行,或引起调度
第 34 页 共 36 页
使另一进程运行。
(4)进程结束。进程正常执行完毕,退出并终止,此时将激励系统调度另一进程进入运行。
14.有两个进程P1和P2,它们执行的过程如下: P1: 10秒CPU操作、20秒I/O操作(设备1)、5秒CPU操作、10秒I/O操作(设备2)、5秒CPU操作、结束 P2: 15秒I/O操作(设备1)、10秒CPU操作、15秒I/O操作(设备2)、10秒CPU操作、结束
(1) 如果进程P1和P2顺序执行,请画出进程P1和P2执行情况图; (2) 如果进程P1和P2并发执行,请画出进程P1和P2执行情况图; (3) 分别计算在(1)和(2)情况下,CPU的利用率、设备1和设备2的
利用率。
解: (1) P1: CPU I/O(DEV1) CPU I/O(DEV2) CPU 0 10 30 35 45 50 P2: I/O(DEV1) CPU I/O(DEV2) CPU 50 65 75 90 100 (2)
P1 P1 CPU(P1) CPU(P2) CPU CPU(P2) CPU I/O(DEV1)(P2) I/O(DEV1)(P1) I/O(DEV2)(P2) I/O(DEV2) 0 10 15 25 35 40 50 55 (3)
在情况(1)下,
CPU的利用率=40/100=40% 设备1的利用率=35/100=35% 设备2的利用率=25/100=25% 在情况(2)下,
CPU的利用率=40/55=73% 设备1的利用率=35/55=64% 设备2的利用率=25/55=45%
15.在五状态图中,假如计算机只有一个CPU,如果系统中有N个进程:
(1)运行的进程最多几个,最少几个;就绪进程最多几个最少几个;等待进程
最多几个,最少几个?
第 35 页 共 36 页
(2)有没有这样的状态转换,为什么? 等待—>运行 ; 就绪—>等待
(3)一个进程状态的转换是否会导致另一个进程的状态转换,请列出所有的可
能。 解:
(1)如果系统中有N个进程,运行的进程最多1个,最少0个;就绪进程最多N-1个最少0个;等待进程最多N个,最少0个。 (2)没有这样的状态转换。
(3) 新建 到 就绪 导致 运行 到 就绪 就绪 到 运行 导致 无
运行 到 运行 到 等待 到 运行 到 就绪 导致 就绪 到 等待 导致 就绪 到 就绪 导致 就绪 到 结束 导致 就绪 到 第 36 页 共 36 页
运行 运行 等待 运行