goto L3; end;
process Daughter ( ) begin
L4: P(Sa);
从盘中取出苹果; V(Sp) 吃苹果; goto L4; end;
(2)
第一步:确定进程
3个进程Father(爸爸)、Mother(妈妈)、Son(儿子) Father进程:
? 将苹果放入盘中 Mother进程:
? 将桔子放入盘中 Son进程:
? 从盘中取出水果(桔子或苹果) ? 吃水果(桔子或苹果)
第二步:确定进程的同步、互斥关系
? 同步:Father当盘中无水果时,才可以将苹果放入盘中 ? 同步:Mother当盘中无水果时,才可以将桔子放入盘中
? 同步:Son当盘中有水果(桔子或苹果)时,才可以从盘中取出水果
第三步:设置信号量
? 盘中无水果,empty,初值1 ? 盘中有水果(桔子或苹果),full,初值0
第四步:用伪代码描述
begin
empty, full:semaphore; empty:=1; full :=0;
cobegin
Father ( ); Mother ( ); Son ( ); coend; end;
process Father ( ) begin
L1: P(empty); 将苹果放入盘中; V(full); goto L1; end;
process Mother ( ) begin
L2: P(empty); 将桔子放入盘中; V(full); goto L2; end;
process Son ( ) begin
L3: P(full); 从盘中取出水果; V(empty); 吃水果; goto L3; end;
18. 有一个阅览室,共有100个座位。读者进入阅览室时必须在入口处进行登记;离开阅览室时必须进行注销。试用PV操作描述读者进入/离开阅览室的同步与互斥关系。
参考答案:
第一步:确定进程
可以进入阅览室的读者可以有很多,这里设为n,即
n个Reader(读者)进程 Reader进程:
? 登记
? 进入阅览室 ? 读书
? 离开阅览室 ? 注销
第二步:确定进程的同步、互斥关系
? 同步:当教室内有空座位时,读者才可以登记,并进入阅览室 ? 互斥:同时只能有一个读者在入口处进行登记 ? 互斥:同时只能有一个读者在出口处进行注销
第三步:设置信号量
? 教室内空座位数量,seat,初值100
? 为入口处进行登记设置互斥信号量Sin,初值 1,表示当前可用 ? 为出口处进行注销设置互斥信号量Sout,初值 1,表示当前可用
第四步:用伪代码描述
begin
Sin, Sout, seat:semaphore; seat :=100; Sin := 1; Sout := 1;
cobegin
process Reader-i ( i = 1,2,…,n ); begin
P(seat); P(Sin);
登记; V(Sin); 进入阅览室; 读书;
离开阅览室; P(Sout); 注销;
V(Sout);
V(seat); end coend; end;
19. 某工厂有一个可以存放设备的仓库,总共可以存放10台设备。生产的每一台设备都必须入库,销售部门可从仓库提出设备供应客户。设备的入库和出库都必须借助运输工具。现只有一台运输工具,每次只能运输一台设备。请设计一个能协调工作的自动调度管理系统。
参考答案:
第一步:确定进程
可以为入库(Pin)和出库(Pout)各设置一个进程 Pin进程:
? 生产了一台设备 ? 使用运输工具入库 Pout进程:
? 使用运输工具出库 ? 提出设备供应客户
第二步:确定进程的同步、互斥关系
? 同步:当仓库中有空余位置存放设备时,设备才可以入库 ? 同步:当仓库中有存放的设备时,设备才可以出库 ? 互斥:运输工具是临界资源,要互斥访问
第三步:设置信号量
? 仓库中有空余位置数量,empty,初值10 ? 仓库中有存放的设备数量,full,初值 0
? 为运输工具设置互斥信号量S,初值 1,表示当前可用
第四步:用伪代码描述
begin
empty, full, S:semaphore; empty := 10;
full := 0; S := 1; cobegin Pin (); Pout (); coend; end;
process Pin ( ) begin
L1: 生产了一台设备 ;
P(empty);
P (S);
使用运输工具入库; V (S);
V(full); goto L1; end;
process Pout ( ) begin
L2: P(full);
P (S);
使用运输工具出库; V (S); V(empty);
提出设备供应客户;
goto L2; end;
20. 进程通信主要有哪几种类型?
参考答案:进程通信的类型主要有:共享存储器系统、消息传递系统以及管道通信系统。
21. 高级调度与低级调度的主要任务是什么?为什么要引入中级调度? 参考答案:高级调度又称作业调度,其任务是从外存上的后备队列中按照一定的原则选择若干个作业调入内存,为他们创建进程,分配必要的资源,如内存、外设等,并将新创建的进程插入就绪队列,准备执行。低级调度通常又称为进程调度,其任务是决定就绪队列中的哪个进程获得处理器,然后由分派程序把处理器分配给该进程,为它恢复运行现场,让其运行。引入中级调度的主要目的是为了提高内存的利用率和系统吞吐量。
22. 引起进程调度的原因有哪些? 参考答案:引起进程调度的原因有:(1)正在执行的进程执行完毕,或因发生某事件而不能再继续执行;(2)执行中的进程因提出I/O请求而暂停执行;(3)在进程通信或同步过程中执行了某种原语操作;(4)当采用基于优先权的强占式调度算法时,就绪队列中出现优先级比当前正在执行的进程优先级更高的进程时;(5)当采用时间片轮转调度算法时,当前进程的时间片用完了。
23. 选择进程调度算法的原则有哪些? 参考答案:一个操作系统如何选择调度方式和算法,在很大程度上取决于操作系统的类型和目标,通常应尽量遵循以下几方面的原则: (1) 周转时间短。从作业提交开始到作业完成为止的时间间隔称为周转时间,它包
括作业等待进入内存、进程在就绪队列中等待、进程在CPU上执行和完成I/O操作所花费的时间总和。它主要用于评价批处理系统。为了能更准确地评价系统的性能,引入了另一个指标:带权周转时间,即作业的周转时间与系统实际为其提供的服务时间之比。 (2) 响应时间快。从用户通过键盘提交一个请求开始,直至系统首次产生响应为止
的时间间隔称为响应时间,主要用于评价分时系统。
(3) 要保证截止时间。所谓截止时间,是指某任务必须开始执行的最迟时间,或必
须完成的最迟时间,主要用于评价实时系统。
(4) CPU利用率高。 当CPU的价格非常昂贵时,希望尽可能使它得到充分利用。
CPU的利用率可从0%到100%,但在实际系统中,一般是在40%~90%之间。 (5) 系统吞吐量高。 所谓系统吞吐量,是指单位时间内系统所完成的作业数量,
主要用于评价批处理系统。
24. 批处理操作系统、分时操作系统和实时操作系统常用哪些进程调度算法? 参考答案:批处理操作系统常用的进程调度算法有:先来先服务调度算法、短进程优先调度算法、高优先权优先调度算法、高响应比优先调度算法;分时操作系统常用的进程调度算法有:时间片轮转调度算法、多级反馈队列调度算法;实时操作系统常用的进程调度算法主要有:高优先权优先调度算法。
25. 什么是静态优先权和动态优先权?各有何优缺点? 参考答案:静态优先级是在进程创建时根据进程的类型、进程对资源的需求以及用户的要求而确定的,在进程的整个运行期间保持不变。对于动态优先级,也是在创建进程时为进程赋予一个初始优先级,以后在进程的运行过程中随着进程特性的变化,不断修改优先级,如随着进程在就绪队列中等待时间的增长,可提高进程的优先级;随着进程连续占用CPU时间的增长,可降低其优先级,防止一个进程长期垄断CPU等。
26. 设有五个进程,它们到达就绪队列的时刻和运行时间如表2-5所示。若分别采用先来先服务算法和短进程优先算法,试给出各进程的调度顺序以及平均周转时间。
表2-5 各进程到达就绪队列的时刻、运行时间
进程 P1 P2 P3 到达时刻 10.1 10.3 10.4 运行时间 0.3 0.9 0.5