现代操作系统课后习题答案(3)

2019-09-02 18:23

29、画图说明管程由哪几部分组成?(P56)为什么要引入条件变量?(P57) 【解】如图:

条件(不忙)队列 共享数据 进入队列 …… 一组操作进程 初始化代码 通常,由于等待的原因可能有多个,为了区别它们,因此引入条件变量。

第 11 页 共 33 页

30、如何利用管程来解决生产者—消费者问题?(P60) 【解】首先为它们建立一个管程,描述如下: Type producer-consumer=monitor var in, out, count: integer;

buffer: array[0,-----,n-1] of item; notfull,notempty:condition; procedure entry put(item) begin

if count>=n then notfull.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 notempyt.wait; nextc:=buffer(out); out:=(out+1) mod n; count:=count-1;

if notfull.queue then notfull.signal; end

begin in:=out:=0; count:=0; end

生产者和消费者可描述为: producer: begin

repeat

produce an item in nextp; PC.put(item); until false; end

consumer: begin repeat

PC.get(item);

consume the item in nextc until false; end

第 12 页 共 33 页

31、什么是AND信号量?试利用AND信号量写出生产者—消费者问题的解法。

【解】AND信号量是指:将进程在整个运行过程中所需的所有临界资源一次性地全部分配给进程,待该进程使用完后再一起释放。只要尚有一个资源未能分配给该进程,其他所有可能为之分配的资源,也不分配给他,即:对若干临界资源分配,采取原子操作方式,要么全部分配到进程,要么一个也不分配。叫AND信号量。 解法如下:

var mutex,empty,full:semaphore:=1,n,0; buffer: array[0,---,n-1]of item; in,out:integer:=0,0; begin

parbegin

producer: begin repeat

produce an item in nextp Swait(empty,mutex); buffer(in):=nextp; in:=(in+1)mod n; Ssignal(mutex,full); until false; end consumer: begin repeat

Swait(full,mutex); nextc:=buffer(out); out:=(out+1)mod n; Ssignal(mutex,empty);

consume the item in nextc; until false

end;

32、什么是信号量集?试利用信号量集写出读者-写者问题的解法。 33、试比较进程间的低级与高级通信工具。(P65) 34、当前有哪几种高级通信机制?(P65)

【解】共享存储器系统,消息传递系统,管道通信系统。 35、消息队列通信机制有哪几方面功能?(P66)

【解】发送进程利用send原语,将消息直接发送给接收进程;接收进程利用receive原语接收消息。

36、为什么要在OS中引入线程?(P72) 37、试说明线程具有哪些属性?(P73)

第 13 页 共 33 页

38、试从调度性、并发性、拥有资源及系统开销几个方面,对进程和线程进行比较。 【解】

(1)调度性 在传统的OS中,拥有资源的基本单位和独立调度、分派的基本单位都是进程。而在引入线程的OS中,则把线程作为调度和分派的基本单位,而把进程作为资源拥有的基本单位,使传统进程的两个属性分开,线程便能轻装运行,从而显著提高系统并发程度。在同一进程中,线程的切换不会引起进程切换,在由一个进程中的线程切换到另一个进程中的线程时,将会引起进程切换。

(2)并发性 多线程的操作系统中,不仅进程可以并发执行,而且一个进程的多个线程也可并发执行。从而能更有效的使用系统资源和提高系统吞吐量。

(3)拥有资源 进程是拥有资源的独立单位。线程自己使不拥有系统资源,但可访问隶属进程的资源。

(4)系统开销 在创建和撤消进程时,系统要为之分配或回收资源,所以系统开销要显著大于在创建和撤消线程的开销。在进行进程切换时,涉及到整个当前进程CPU环境的保存以及新被调度运行的进程的CPU环境的设置。而线程切换只须保存和设置少量寄存器的内容,并不涉及存储器管理方面的操作。可见,进程切换的开销也远大于线程切换的开销。此外,由于同一进程中的多个线程具有相同的地址空间,致使它们之间的同步和通信的实现也变得比较容易。

39、为了在多线程OS中实现进程之间的同步与通信,通常提供了哪几种同步机制? 【解】互斥锁,条件变量,计数信号量,多读、单写锁。

40、用于实现线程同步的私用信号量和公用信号量之间有何差异?(P76) 41、何谓用户级线程和内核支持线程?(P77)

【解】用户级线程仅存在于用户级中,它的创建、撤消和切换都不利用系统调用实现,与内核无关,相应的,内核也不知道有用户级线程存在。

内核级线程依赖于内核,无论用户进程中的线程还是系统进程中的线程,其创建、撤消、切换都由内核实现。在内核中保留了一张线程控制块,内核根据控制块感知线程的存在并对其进行控制。

比较:

(1)线程的调度与切换速度 内核支持线程的调度和切换与进程的调度和切换十分相似。例如,在线程调度时的调度方式,同样也是抢占方式和非抢占方式两种。在线程的调度算法上,也同样可采用时间片轮转、优先权算法等。当由线程调度选中一个线程后,再将处理机分配给它。当然,线程在调度和切换上所花费的开销要比进程的小得多。对于用户级线程的切换,通常是发生在一个应用程序的多线程之间,这时,不仅无须通过中断进入OS的内核,而且切换的规则也远比进程调度和切换的规则简单。例如,当一个线程阻塞后会自动切换到下一个具有相同功能的线程,因此,用户级线程的切换速度特别快。

(2)系统调用 当传统的用户进程调用一个系统调用时,要由用户态转入核心态,用户进程将被阻塞。当内核完成系统调用而返回时,才将该进程唤醒,继续执行。而在用户级线程调用一个系统调用时,由于内核并不知道有该用户级线程的存在,因而把系统调用看作是整个进程的行为,于是使该进程等待,而调度另一个进程执行,同样是在内核完成系统调用而返回时,进程才能继续执行。如果系统中设置的是内核支持线程,则调度是以线程为单位。当一个线程调用一个系统调用时,内核把系统调用只看作是该线程的行为,因而阻塞该线程,于是可以再调度该进程中的其他线程执行。

(3)线程执行时间 对于只设置了用户级线程的系统,调度是以进程为单位进行的。在采用轮转调度算法时,各个进程轮流执行一个时间片,这对诸进程而言,似是公平。但假如在进程A中包含了一个用户级线程,而进程B中含有100个线程,这样,进程A中线程的运行时间,

第 14 页 共 33 页

将是进程B中各线程运行时间的100倍;相应地,速度就快100倍。假如系统中设置的是内核支持线程,其调度是以线程为单位进行的,这样,进程B可以获得的CPU时间是进程A的100倍,进程B可使100个系统调用并发工作。 42、试说明用户级线程的实现方法。(P77) 43、试说明内核支持线程的实现方法。(P77)

如何保证诸进程互斥地访问临界资源?

答:为了互斥地访问临界资源,系统必须保证进程互斥地进入临界区。为此,必须在临界区前增加一段称为进入区的代码,以检查是否有其他进程已进入临界区使用临界资源。若有,则进程必须等待;否则,允许进程进入临界区,同时设置标志表示有进程正在临界区内。同样地,在临界区后必须增加一段称作退出区的代码,用于将已有进程进入临界区访问临界资源的标志改为无进程进入临界区使用临界资源。进入区、退出区具体可用多种同步机制实现,如锁、信号量机制等。

何谓“忙等”?它有什么缺点?

答:所谓“忙等”是指“不让权”的等待,即进程因某事件的发生而无法继续执行时,它仍占有CPU,并通过不断地执行循环测试指令来等待该事件的完成。

“忙等”的主要缺点是浪费CPU的时间,另外,它还可能引起预料不到的后果。例如,考虑某个采取高优先权优先调度原则的系统,目前有2个进程A和B共享某个临界资源,A的优先权较高,B的优先权较低,且B已处于临界区内,而A欲进入自己的临界区,则A、B都不可能继续向前推进,陷入“死等”状态。

进程之间存在着哪几种制约关系?各是什么原因引起的?下列活动分别属于哪种制约关系? (1) 若干同学去图书馆借书; (2) 两队举行篮球比赛; (3) 流水线生产的各道工序; (4) 商品生产和社会消费。

答:进程之间存在着直接制约和间接制约两种制约关系,其中直接制约(同步)是由于进程间的相互合作而引起的,而间接制约(互斥)则是由于进程间共享临界资源而引起的。 (1) 若干同学去图书馆借书是间接制约,其中书是临界资源。 (2) 两队举行篮球比赛是间接制约,其中篮球是临界资源。 (3) 流水线生产的各道工序是直接制约,各道工序间需要相互合作,每道工序的开始都依赖

于前一道工序的完成。

(4) 商品生产和社会消费是直接制约,两者也需要相互合作:商品生产出来后才可以被消费;

商品被消费后才需要再生产。

第 15 页 共 33 页


现代操作系统课后习题答案(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:上海市文明工地标准

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: