教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 高中教育 >

(郑州轻工业学院教材答案)计算机操作系统第三版课后习题答案-汤(3)

来源:网络收集 时间:2026-09-02
导读: /* 缓冲池数组游标应前移: in:=(in+1) mod n; */ signal(mutex); /* signal(full); */ until false; end consumer: begin repeat wait(mutex); wait(empty); /* 应为wait(full),而且还应该在wait(mutex)的前面 */ n

/* 缓冲池数组游标应前移: 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字,全部文档内容请下载后查看。喜欢就下载吧 ……

(郑州轻工业学院教材答案)计算机操作系统第三版课后习题答案-汤(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/131091.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)