77范文网 - 专业文章范例文档资料分享平台

计算机操作系统(第三版)前六章课后习题--与题号对应(3)

来源:网络收集 时间:2019-04-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

signal(mutex)不 signal(full)互换位置,结果如何? 不 ( )互换位置,结果如何? 互换位置后,

答:将 wait(full)和 wait(mutex)互换位置后,可能引起死锁。考虑系统中缓冲区 和 互换位置后 可能引起死锁。 全满时, 操作并获得成功, 全满时 , 若一生产者进程先执行了 wait(mutex)操作并获得成功, 则当再执行 操作并获得成功 wait(empty) 操 作时 , 它将因失败而进入 阻塞状态 , 它期待消 费者进程执 行 signal(empty)来唤醒自己,在此之前,它不可能执行 signal(mutex)操作,从而使 来唤醒自己, 操作, 来唤醒自己 在此之前, 操作 试图通过执行 wait(mutex)操作而进入自己的临界区的其他生产者和所有消费者 操作而进入自己的临界区的其他生产者和所有消费者 进程全部进入阻塞状态, 这样容易引起系统死锁。 和 进程全部进入阻塞状态, 这样容易引起系统死锁。

signal(mutex)和 signal(full) 若 互换位置后只是影响进程对临界资源的释放次序,而不会引起系统死锁, 互换位置后只是影响进程对临界资源的释放次序,而不会引起系统死锁,因此 可以互换位置。 可以互换位置。 25.我们在为某一临界资源设置一把锁 W,当 W=1 时表示关锁,当 W=0 时表 时表示关锁, . , 示锁已打开。 示锁已打开。 试写出开锁和关锁的原因,并利用他们实现互斥。 试写出开锁和关锁的原因,并利用他们实现互斥。 整型信号量: 答:整型信号量:lock(W): while W=1 do no-op W:=1; unlock(W): W:=0; 记录型信号量: 记录型信号量:lock(W): W:=W+1; if(W>1) then block(W, L) unlock(W): W:=W-1; if(W>0) then wakeup(W, L) 例子: 例子: Var

W:semaphore:=0; ; begin repeat lock(W); critical section unlock(W); remainder section until false; end

26.试修改下面生产者-消费者问题解法中的错误: .试修改下面生产者-消费者问题解法中的错误 答: producer: begin repeat ? 计算机操作系统第三版答案 10 / 47 producer an item in nextp; wait(mutex); wait(full); /* 应为 wait(empty),而且还应该在 wait(mutex)的前面 */ 而且还应该在 的前面 buffer(in):=nextp; 缓冲池数组游标应前移: /* 缓冲池数组游标应前移 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; 计算机操作系统第三版答案 11 / 47 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; 计算机操作系统第三版答案 12 / 47 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 计算机操作系统第三版答案 13 / 47 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); 计算机操作系统第三版答案 14 / 47 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 中引入线程? 中引入线程? . 在操作系统中引入线程, 答:在操作系统中引入线程,则是为了减少程序在并发执行时所付出的时空开 计算机操作系统第三版答案 15 / 47 有更好的并发性, 的利用率。 销,使 OS 具 有更好的并发性,提高 CPU 的利用率。进程是分配资源的基本单 而线程则是系统调度的基本单位。 位,而线程则是系统调度的基本单位。 而线程则是系统调度的基本单位

37.试说明线程具有哪些属性? .试说明线程具有哪些属性?

(1)轻型实体 答: 轻型实体(2)独立调度和分派的基本单位(3)可并发执行(4)共享进 ( 轻型实体( )独立调度和分派的基本单位( )可并发执行( ) 程资源。 程资源。

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

答: 中作为调度和分派的基本单位, (1)调度性。线程在 OS 中作为调度和分派的基本单位,进程只作为资源拥 )调度性。 有的基本单位。 有的基本单位。 (2)并发性。进程可以并发执行,一个进程的多个线程也可并发执行。 )并发性。进程可以并发执行,一个进程的多个线程也可并发执行。 (3)拥有资源。进程始终是拥有资源的基本单位,线程只拥有运行时必不可少 )拥有资源。进程始终是拥有资源的基本单位, 的资源, 的资源,本 身基本不拥有系统资源,但可以访问隶属进程的资源。 身基本不拥有系统资源,但可以访问隶属进程的资源。 (4)系统开销。操作系统在创建、撤消和切换进程时付出的开销显著大于线程。 )系统开销。操作系统在创建、撤消和切换进程时付出的开销显著大于线程。

39. 为了在多线程 OS 中实现进程之间的同步不通信, 中实现进程之间的同步不通信, 通常提供了哪几种同步 机制? 机制? 同步功能可以控制程序流并访问共享数据,从而并发执行多个线程。 答:同步功能可以控制程序流并访问共享数据,从而并发执行多个线程。共有 四种同步模型: 四种同步模型: 互斥锁、读写锁、条件变量和信号。 互斥锁、读写锁、条件变量和信号。

40.用于实现线程同步的私用信号量和公用信号量之间有何差别? .用于实现线程同步的私用信号量和公用信号量之间有何差别?

答: 私用信号量 当某线程需利用信号量实现同一进程中各线程之间的同步时, 信号量。 当某线程需利用信号量实现同一进程中各线程之间的同步时, (1) )

私用信号量。 可调用创 建信号量的命令来创建一个私用信号量, 建信号量的命令来创建一个私用信号量,其数据结构存放在应用程序的地址空 间中。 间中。 (2)公用信号量。公用信号量是为实现不同进程间或不同进程中各线程之间的 )公用信号量。 同步而设置 其数据结构是存放在受保护的系统存储区中, 的。其数据结构是存放在受保护的系统存储区中,由 OS 为它分配空间并进行管 理。

41.何谓用户级线程和内核支持线程? .何谓用户级线程和内核支持线程? 答: (1)用户级线程:仅存在于用户空间中的线程,无须内核支持。这种线程的创 )用户级线程:仅存在于用户空间中的线程,无须内核支持。 撤销、 建、撤销、 线程间的同步与通信等功能,都无需利用系统调用实现。 线程间的同步与通信等功能,都无需利用系统调用实现。用户级线程的切换通 常发生在一个 应用进程的诸多线程之间,同样无需内核支持。 应用进程的诸多线程之间,同样无需内核支持。 (2)内核支持线程:在内核支持下运行的线程。无论是用户进程中的线程,还 )内核支持线程:在内核支持下运行的线程。无论是用户进程中的线程, 是系统线程 其创建、撤销和切换等都是依靠内核,在内核空间中实现的。 中的线 程,其创建、撤销和切换等都是依靠内核,在内核空间中实现的。在 内核空间里还 为每个内核支持线程设置了线程控制块, 为每个内核支持线程设置了线程控制块,内核根据该控制块感知某线程的存在 并实施控制。 并实施控制。

42.试说明用户级线程的实现方法。 .试说明用户级线程的实现方法。 用户级线程是在用户空间中的实现的,运行在“运行时系统”

答:用户级线程是在用户空间中的实现的,运行在“运行时系统”与“内核控 计算机操作系统第三版答案 16 / 47 制线程” 制线程”的中 间系统上 运行时系统用于管理和控制线程的函数的集合。 间系统上。运行时系统用于管理和控制线程的函数的集合。内核控制线程或轻 型进程 LWP 可通过系统调用获得内核提供服务, 进程作为中间系统。 可通过系统调用获得内核提供服务,利用 LWP 进程作为中间系统。

43.试说明内核支持线程的实现方法。 .试说明内核支持线程的实现方法。 系统在创建新进程时, 答:系统在创建新进程时,分配一个任务数据区 PTDA,其中包括若干个线程控 , 制块 TCB 空间。 为之分配必要的资源。 空间。创建一个线程分配一个 TCB, ,有关信息写入 TCB, , 为之分配必要的资源。 当 PTDA 用完,而进程又有新线程时, 中的 TCB 用完,而进程又有新线程时,只要所创建的线程数目未超过系统允 许值, 许值,系统可 在为之分配新的 TCB;在撤销一个线程时,也应回收线程的所有资源和 TCB。 ;在撤销一个线程时, 。

第三章

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库计算机操作系统(第三版)前六章课后习题--与题号对应(3)在线全文阅读。

计算机操作系统(第三版)前六章课后习题--与题号对应(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/607690.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: