(郑州轻工业学院教材答案)计算机操作系统第三版课后习题答案-汤(3)
/* 缓冲池数组游标应前移: in:=(in+1) mod n; */ signal(mutex); /* signal(full); */ until false; end
consumer: begin repeat
wait(mutex);
wait(empty); /* 应为wait(full),而且还应该在wait(mutex)的前面 */ nextc:=buffer(out);
out:=out+1; /* 考虑循环,应改为: out:=(out+1) mod n; */ signal(mutex);/* signal(empty); */ consumer item in nextc; until false; end
27.试利用记录型信号量写出一个丌会出现死锁的哲学家迚餐问题的算法. 答:Var chopstick:array[0, ,4] of semaphore;
所有信号量均被初始化为1,第i 位哲学家的活动可描述为: Repeat
Wait(chopstick[i]);
Wait(. chopstick[(i+1) mod 5]); Ea.t ;
Signal(chopstick[i]);
Signal(chopstick[(i+1) mod 5]) Ea.t ; Think; 11
Until false;
28.在测量控制系统中的数据采集仸务,把所采集的数据送一单缓冲区;计算仸务从该单
缓冲中叏出数据迚行计算.试写出利用信号量机制实现两者共享单缓冲的同步算法。 答:
a. Var mutex, empty, full: semaphore:=1, 1, 0;
gather: begin repeat
gather data in nextp; wait(empty); wait(mutex); buffer:=nextp; signal(mutex); signal(full); until false; end
compute: begin repeat
wait(full); wait(mutex); nextc:=buffer; signal(mutex); signal(empty);
compute data in nextc; until false; end
b. Var empty, full: semaphore:=1, 0; gather: begin repeat
gather data in nextp; wait(empty); buffer:=nextp; signal(full); until false; end
compute: begin repeat
wait(full); nextc:=buffer; signal(empty);
compute data in nextc; until false;
end
29.画图说明管程由哪几部分组成,为什么要引入条件发量?
答:管程由四部分组成:①管程的名称;②局部于管程内部的共享数据结构说明;③对该数据结构进行操作的一组过程;④对局部于管程内部的共享数据设臵初始值的语句;
当一个进程调用了管程,在管程中时被阻塞或挂起,直到阻塞或挂起的原因解除,而在此期间,如果该进程不释放管程,则其它进程无法进入管程,被迫长时间地等待。为了解决这个问题,引入了条件变量condition。 30.如何利用管程来解决生产者不消费者问题?
答:首先建立一个管程,命名为ProclucerConsumer,包括两个过程:
(1)Put(item)过程。生产者利用该过程将自己生产的产品放到缓冲池,用整型变
量count 表示在缓冲池中已有的产品数目,当count≥n 时,表示缓冲池已满,生产者须 等待。
(2)get(item)过程。消费者利用该过程从缓冲池中取出一个产品,当count≤0
时,表示缓冲池中已无可取的产品,消费者应等待。 PC 管程可描述如下:
type producer-consumer =monitor Var in,out,count:integer;
buffer:array[0,…,n-1]of item; notfull,notempty:condition; procedure entry dot(item) begin
if count>=n then not full.wait; buffer(in):=nextp; in:=(in+1)mod n; count:=count+1;
if notempty.queue then notempty.signal; end
procedure entry get(item) begin
if count<=0 then not full.wait; nextc:=buffer(out); out:=(out+1)mod n; count:=count-1;
if notfull.quene then notfull.signal; end
begin in:=out:=0; count:=0 end
在利用管程解决生产者一消费者问题时,其中的生产者和消费者可描述为: producer: begin
pepeat
produce an inem in nestp PC.put(item); until false; end
consumer: begin repeat
PC.get(item);
consume the item in enxtc; until false; end 31.什么是AND信号量?试利用AND信号量写出生产者一消费者问题的解法。 答:为解决并行带来的死锁问题,在wait 操作中引入AND 条件,其基本思想是将进
程在整个运行过程中所需要的所有临界资源,一次性地全部分配给进程,用完后一次性释放。
解决生产者-消费者问题可描述如下: var mutex,empty,full: semaphore:=1,n,0; buffer: array[0,...,n-1] of item; in,out: integer:=0,0; begin parbegin 14
producer: begin repeat
produce an item in nextp;
wait(empty);
wait(s1,s2,s3,...,sn); //s1,s2,...,sn为执行生产者进程除empty 外其余的条件 wait(mutex);
buffer(in):=nextp; in:=(in+1) mod n; signal(mutex); signal(full);
signal(s1,s2,s3,...,sn); until false; end
consumer: begin repeat wait(full);
wait(k1,k2,k3,...,kn); //k1,k2,...,kn 为执行消费者进程除full 外其余的条件 wait(mutex);
nextc:=buffer(out);
out:=(out+1) mod n; signal(mutex); signal(empty);
signal(k1,k2,k3,...,kn); consume the item in nextc; until false; end parend end
32.什么是信号量集?试利用信号量集写出读者一写者问题的解法。 答:对AND信号量加以扩充,形成的信号量集合的读写机制。 解法:Var RN integer; L,mx: semaphore:=RN,1; begin parbegin reader:begin repeat
Swait(L,1,1); Swait(mx,1,1);
perform read operation;
Ssignal(L,1); until false end
writer:begin repeat
Swait(mx,1,1;L,RN,0); perform write operation; Ssignal(mx,1); until false end parend end
33.试比较迚程间的低级不高级通信工具。
答:用户用低级通信工具实现进程通信很不方便,效率低,通信对用户不透明,所有操作都 必须由程序员来实现,而高级通信工具弥补了这些缺陷,用户直接利用操作系统提供的一组通信命令,高效地传送大量的数据。 34.当前有哪几种高级通信机制?
答:共享存储器系统、消息传递系统以及管道通信系统。 35.消息队列通信机制有哪几方面的功能? 答:(1)构成消息(2)发送消息(3)接收梢息(4)互斥与同步。 36.为什么要在OS 中引入线程?
答:在操作系统中引入线程,则是为了减少程序在并发执行时所付出的时空开
销,使OS具 有更好的并发性,提高CPU的利用率。进程是分配资源的基本单位,而线程则是系统调度的基本单位。 37.试说明线程具有哪些属性? 答:(1)轻型实体(2)独立调度和分派的基本单位(3)可并发执行(4)共享进程资源。
38. 试从调度性,并収性,拥有资源及系统开销方面对迚程和线程迚行比较。 答:
(1)调度性。线程在OS 中作为调度和分派的基本单位,进程只作为资源拥有的基本单位。
(2)并发性。进程可以并发执行,一个进程的多个线程也可并发执行。
(3)拥有资源。进程始终是拥有资源的基本单位,线程只拥有运行时必不可少的资源,本
身基本不拥有系统资源,但可以访问隶属进程的资源。
(4)系统开销。操作系统在创建、撤消和切换进程时付出的开销显著大于线程。 39. 为了在多线程OS 中实现迚程之间的 …… 此处隐藏:3542字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [高中教育]电子线路高频非线性部分2.1
- [高中教育]中班美术活动——我的小手
- [高中教育]常用三极管参数大全
- [高中教育]计算机常见故障及解决办法
- [高中教育]风机基础环水平度控制方法探讨
- [高中教育]机械安全工程(专升本)阶段性作业3
- [高中教育]2009年安徽省高考语文考试说明刍议
- [高中教育]unit5 let's eat公开课教案设
- [高中教育]计算机网络原理课后习题答案
- [高中教育]2016-2022年中国新能源市场研究与投资
- [高中教育]2015-2020年中国会议行业市场评估及投
- [高中教育]经销商大会峰会主持人串词开场白
- [高中教育]2014新版北师大数学三年级上册小熊购物
- [高中教育]七年级第一学期体育与健康全套教案
- [高中教育]第三章:国际金融市场
- [高中教育]六年级下册数学单元测试-2.比例 北师大
- [高中教育]2016年上海海事大学法学院624刑法之《
- [高中教育]中国碳化钙产业竞争现状及未来五年投资
- [高中教育]网络时代,我们怎么玩
- [高中教育]圆锥曲线——高中数学基础知识与典型例
- 高集医院世界艾滋病宣传日活动方案
- 苏教版六年级英语上册期末试卷含答案
- 全民枪战生化英雄模式幽灵怎么玩 生化
- 灿烂的宋元文化一导学案
- 第2章货币资金与应收款项
- 北师大版八年级下册数学第三章《分式》
- 浅析高分子材料成型加工技术
- 华南理工大学2013年度共青团先进集体及
- 教师资格科目二小学教案模板(共合集)
- 工程扩建可研报告
- 中华人民共和国海事局2014年度招录公务
- 提高农村小学生作文能力的教学尝试
- 徒手心肺复苏术操作步骤
- 毛概试题库7-15章
- 2014-2015学年度(上)初中班主任工作计
- 企业驾驶员安全生产责任书
- 第07章 不等式测试题-2016年高考文科数
- 医疗器械经营企业工作程序
- 考研英语必背36篇_彩版_精华
- 初中9月13-15假期作业 (1)




