操作系统概念第七版习题答案中文版完整版.docx
- 文档编号:5692195
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:45
- 大小:323.78KB
操作系统概念第七版习题答案中文版完整版.docx
《操作系统概念第七版习题答案中文版完整版.docx》由会员分享,可在线阅读,更多相关《操作系统概念第七版习题答案中文版完整版.docx(45页珍藏版)》请在冰豆网上搜索。
操作系统概念第七版习题答案中文版完整版
2.2列出操作系统提供的五项服务。
说明每项服务如何给用户提供便利。
说明在哪些情况下用户级程序不能够提够这些服务。
Answer:
a.文件执行.操作系统一个文件的目录(或章节)装入到内存并运行。
一个用户程序不能被信任,妥善分配CPU时间。
b.I/O操作.磁盘,磁带,串行线,和其他装置必须在一个非常低的水平下进行通信。
用户只需要指定装置和操作执行要求,然后该系统的要求转换成装置或控制器的具体命令.用户级程序不能被信任只在他们应该获得时获得装置和只使用那些未被使用的装置。
c.文件系统操作.在文件创建、删除、分配和命名时有许多细节是用户不能执行的。
磁盘空间块被文件所使用并被跟踪。
删除一个文件需要清除这个文件的信息和释放被分派给这个文件的空间。
用户程序不仅不能够保证保护方法的有效实施,也不能够被信任只会分配空闲的空间和在删除文件是清空空间。
d.通信.信息在系统间交换要求信息转换成信息包,送到网络控制器中,通过通信媒介进行传播,并由目的地系统重新组装。
信息包调整和数据修改是一定会发生的。
此外,用户程序也许不能够协调网络装置的取得,或者接收完全不同的其他进程的信息包。
e.错误检测.错误检测在硬件和软件水平下都会发生。
在硬件水平下,所有数据转移都必须仔细检查以确保数据在运送中不会被破坏。
在媒介中的所有数据都必须被检查以确保他们在写入媒介时没有被改变。
在软件水平下,为了数据,媒介不需不间断的被检查。
例如,确保信息存储中被分配和还未被分配的空间块的数量和装置中所有块的数量的一致。
进程独立经常有错误(例如,磁盘中数据的破坏),所以必须有一个统筹的程序(操作系统)来处理各种错误。
同样,错误经过操作系统的处理,在一个系统中程序不再需要包含匹配和改正所遇可能错误的代码。
2.3讨论向操作系统传递参数的三个主要的方法。
Answer:
1.通过寄存器来传递参数
2.寄存器传递参数块的首地址
3.参数通过程序存放或压进堆栈中,并通过操作系统弹出堆栈。
2.4描述你怎样能够统计到一个程序运行其不同部分代码时,它的时间花费数量的数据图表,并说明它的重要性。
Answer:
一个能够发布定期计时器打断和监控正在运行的命令或代码段当中断被进行时。
一个满意的配置文件,其中的代码块都应积极覆着被程序在代码的不同的部分花费时间。
一旦这个配置文件被获得,程序员可以尽可能的优化那些消耗大量CPU资源的代码段。
2.5操作系统关于文件管理的五个主要活动是什么?
Answer:
1.创建和删除文件
2.创建和删除目录
3.提供操作文件和目录的原语的支持
4.将文件映射到二级存储器上
5.在稳定(非易失的)的存储媒介上备份文件。
2.6在设备和文件操作上用相同的系统调用接口的好处与不足是什么?
Answer:
每一个设备都可以被得到只要它是一个在文件系统的文件。
因此大多数内核通过文件接口处理设备,这样相对容易,加一个新的设备通过执行硬件确定代码来支持这种抽象的文件接口。
因此,这种方式不仅有利于用户程序代码的发展,用户程序代码可以被写入设备和文件用相同的方式,还有利于设备驱动程序代码,设备驱动程序代码可以书面支持规范定义的API.使用相同接口的缺点是很难获得某些设备档案存取的API范围内的功能,因此,结果或者是丢失功能或者是丢失性能。
但有些能够被克服通过使用ioctl操作,这个操作为了进程在设备上援引操作提供一个通用接口。
2.7命令解释器的用途是什么?
为什么它经常与内核是分开的?
用户有可能通过使用由操作系统提供的系统调用接口发展一个新的命令解释器?
Answer:
命令解释器从用户或文件中读取命令并执行,一般而言把他们转化成系统调用。
它通常是不属于内核,因为命令解释会有所变动。
用户能够利用由操作系统提供的系统调用接口开发新的命令解释器。
这命令解释器允许用户创建、管理进程和确定它们通信的方法(例如通过管道和文件)。
所有的功能都被用户程序通过系统调用来使用,这个也可能有用户开发一个新的命令行解释。
2.8通信的两种模式是什么?
这两种模式的优点和缺点是什么?
Answer:
通信的两种模式是1)共享内存,2)消息传递。
这两种模式的最基本的不同是在它们的性能上。
一个内存共享块是通过系统调用创建的。
然而,一旦内存共享块在两个或更多的进程间建立,这些进程可以借助内存共享块来通信,不再需要内核的协助。
另一方面,当send()和receive()操作被调用时,信息传递通常包含系统调用。
因此,因为内核是直接的包含在进程间通信的,一般而言,它的影响比内存共享小。
然而,消息传递可以用作同步机制来处理通信进程间的行动。
也就是说,send()和receive()段可以用来协调两个通信进程的动作。
另一方面,内存共享没有提供这种同步机制的进程。
2.9为什么要把机制和策略区分开来?
Answer:
机制和策略必须区分开来,来保证系统能够被很容易的修改。
没有两个系统的装置是完全相同的,所以每一个装置都想要把操作系统改为适合自己的。
当机制和政策分开时,政策可以随意的改变但机制还是不能改变。
这种安排提供了一个更灵活的制度
2.10为什么Java提供了从Java程序调用由C或C++编写的本地方法的能力?
举出一个本地方法有用的例子。
Answer:
Java程序的开发是用来作为I/O独立的平台。
因此,这种语言没有提供途径给许多特殊的系统资源,例如从I/O设备读取。
为了运行一个系统特定的I/O操作,你必须用一种支持这些特性的语言(例如C或C++)写。
记住一个Java程序调用由另外一种语言编写的本地方法写将不再结构中立。
2.11有时获得一个分层方法是有困难的如果操作系统的两个部件相互依存。
识别一个方案,在这个方案中并不非常清楚如何为两个作用紧密相连的系统部件分层。
Answer:
虚拟内存子系统和存储子系统通常是紧密耦合,并由于以下的相互作用需要精心设计的层次系统。
许多系统允许文件被映射到一个执行进程的虚拟内存空间。
另一方面,虚拟内存子系统通常使用存储系统来提供当前不在内存中的页。
此外,在刷新磁盘之前,更新的文件有时会缓冲到物理内存,从而需要认真协调使用的内存之间的虚拟内存子系统和文件系统。
2.12采用微内核方法来设计系统的主要优点是什么?
在微内核中如何使客户程
序和系统服务相互作用?
微内核方法的缺点是什么?
Answer:
优点主要包括以下几点:
a)增加一个新的服务不需要修改内核
b)在用户模式中比在内核模式中更安全、更易操作c)一个简单的内核设计和功能一般导致一个更可靠的操作系统用户程序和系统服务通过使用进程件的通信机制在微内核中相互作用,例如发送消息。
这些消息由操作系统运送。
微内核最主要的缺点是与进程间通信的过度联系和为了保证用户程序和系统服务相互作用而频繁使用操作系统的消息传递功能。
2.13模块化内核方法的什么方式与分层方法相似?
什么方式与分层方法不同?
Answer:
模块化内核方法要求子系统通过创建的一般而言狭隘(从功能方面来说是揭露外部模块)的接口来相互作用。
分层内核方法在细节上与分层方法相似。
但是,分层内核必须要是有严格排序的子系统,这样的子系统在较低层次中不允许援引业务相应的上层子系统。
在模块化内核方法中没有太多的限制,模式在哪方面是随意援引彼此的是没有任何约束的。
2.14操作系统设计员采用虚拟机结构的主要优点是什么?
对用户来说主要有
什么好处?
Answer:
系统是容易被调试的,此外,安全问题也是容易解决的。
虚拟机同样为运作体系提供了一个很好的平台,因为许多不同的操作系统只可以在一个物理系统中运行。
2.15为什么说一个JIT编译器对执行一个Java程序是有用的?
Answer:
Java是一种解释语言。
这就意味着Java虚拟机一次解释一个字节代码。
一般来说,绝大多数解释环境是比运行本地二进制慢,因为解释进程要求把每一个命令转化为本地机器代码。
一个JIT编译器把字节代码转换成本地机器代码,第一次这种方法是偶然碰到的。
这就意味着Java程序作为一个本地用途(当然,JIT的这种转换过程是要花费时间的,但并没有像字节代码花费的这么多)是非常重要的一种运行方式。
此外,JIT存储器编译代码以便能够在下一次需要时使用。
一个是被JIT运行的而不是传统的一般的解释运行的Java程序是非常快的。
2.16在一个系统(例如VWware)中,来宾作业系统和主机操作系统的关系是什么?
在选择主机操作系统时哪些因素需要考虑?
Answer:
一个来宾作业系统提供它的服务通过映射到有主机操作系统提供的功能上。
一个主要的事情需要被考虑,为了能够支持与来宾作业系统相联系的功能,选择的主机操作系统,从系统调用接口而言,是否足够一般。
2.17实验性的综合操作系统在内核里有一个汇编器。
为了优化系统调用的性能,内核通过在内核空间内汇编程序来缩短系统调用在内核必须经过的途径。
这是一种与分层设计相对立的方法,经过内核的途径在这种设计中被延伸了,使操作系统的构造更加容易。
分别从支持和反对的角度来综合设计方式对讨论这种内核设计和系统性能优化的影响。
Answer:
综合是令人钦佩的由于这种性能通过即时复杂化取得了成功。
不幸的是,由于代码的流动很难在内核中调试问题。
这种复杂化是系统的详细的表现,让综合很难port(一个新的编译器必须写入每一种架构)。
3.1论述短期,中期和长期调度之间的区别.
Answer:
a.短期调度:
在内存作业中选择就绪执行的作业,并为他们分配CPU。
b.中期调度:
作为一种中等程度的调度程序,尤其被用于分时系统,一个交换方案的实施,将部分运行程序移出内存,之后,从中断处继续执行。
c.长期调度(作业调度程序):
确定哪些作业调入内存以执行.
它们主要的不同之处是它们的执行的频率。
短期调度必须经常调用一个新进程,由于在系统中,长期调度处理移动的作业时,并不频繁被调用,可能在进程离开系统时才被唤起。
3.2问:
描述一下内核在两个进程间进行上下文功换的动作.
Answer:
总的来说,操作系统必须保存正在运行的进程的状态,恢复进程的状态。
保存进程的状态主要包括CPU寄存器的值以及内存分配,上下文切换还必须执行一些确切体系结构的操作,包括刷新数据和指令缓存。
(书中答案)进程关联是由进程的PCB来表示的,它包括CPU寄存器的值和内存管理信息等。
当发生上下文切换时,内核会将旧进程的关联状态保存在其
PCB中,然后装入经调度要执行的新进程的已保存的关联状态。
3.3考虑RPC机制。
考虑的RPC机制。
描述不可取的情况下可能出现或者不执行的”最多一次”或”到底一旦“语义。
说明在没有这些保障的情况下,可能使用的一种机制。
Answer:
如果一个RPC机制无法支持无论是“最多一次”或“至少一次”的语义,那么RPC服务器不能保证远端程序不会引起多个事件的发生。
试想,如果一个远端程序在一个不支持这些语义的系统上从银行账户中撤回投资的资金。
很可能一个单一调用的远程过程会导致多种服务器的撤回。
如果一个系统不能支持这两种语义,那么这样一个系统只能安全提供远程程序,这些远程程序没有改变数据,没有提供时间敏感的结果,用我们的银行账户做例,我们当然需要“最多一次”或“至少一次”的语义执行撤销(或存款)。
然而,账户余额成其它账户信息的查询,如姓名,地址等,不需要这些语义。
3.4图表3.24里显示的程序,说明A行将会输出什么?
Answer:
当控制回到父进程时,它的值会保持在5,而子进程将更新并拷贝这个值。
3.5问:
下面设计的好处和坏处分别是什么?
系统层次和用户层次都要考虑到.
A,对称和非对称通信
B,自动和显式缓冲
C,复制发送和引用发送
D,固定大小和可变大小消息
Answer:
A.对称和非对称通信:
对称通信的影响是它允许发送者和接收者之间有一个集合点。
缺点是阻塞发送时,不需要集合点,而消息不能异步传递。
因此,消息传递系统,往往提供两种形式的同步。
B.自动和显式缓冲:
自动缓冲提供了一个无限长度的队列,从而保证了发送者在复制消息时不会遇到阻塞,如何提供自动缓存的规范,一个方案也许能保存足够大的内存,但许多内存被浪费缓存明确指定缓冲区的大小。
在这种状况下,发送者不能在等待可用空间队列中被阻塞。
然而,缓冲明确的内存不太可能被浪费。
C.复制发送和引用发送:
复制发送不允许接收者改变参数的状态,引用发送是允许的。
引用发送允许的优点之一是它允许程序员写一个分布式版本的一个集中的应用程序。
Java’sRMI公司提供两种发送,但引用传递一个参数需要声明这个参数是一个远程对象。
D.固定大小和可变大小消息:
涉及的太多是有关缓冲问题,带有定长信息,一个拥有具体规模的缓冲课容纳已知数量的信息缓冲能容纳的可变信息数量是未知的。
考虑Windows2000如何处理这种情况。
带有定长信息(<256bytes),信息从发送者的地址空间被复制至接受进程的地址空间。
更大的信息(如变长信息)使用共享内存传递信息。
第四章线程
4.1举两个多线程程序设计的例子来说明多线程不比单线程方案提高性能
答:
1)任何形式的顺序程序对线程来说都不是一个好的形式。
例如一个计算个人报酬的程序。
2)另外一个例子是一个“空壳”程序,如C-shell和kornshell。
这种程序
必须密切检测其本身的工作空间。
如打开的文件、环境变量和当前工作目录。
4.2描述一下线程库采取行动进行用户级线程上下文切换的过程
答:
用户线程之间的上下文切换和内核线程之间的相互转换是非常相似的。
但它依赖于线程库和怎样把用户线程指给内核程序。
一般来说,用户线程之间的上下文切换涉及到用一个用户程序的轻量级进程(LWP)和用另外一个线程来代替。
这种行为通常涉及到寄存器的节约和释放。
4.3在哪些情况下使用多内核线程的多线程方案比单处理器系统的单个线程方案提供更好的性能。
答:
当一个内核线程的页面发生错误时,另外的内核线程会用一种有效的方法被转换成使用交错时间。
另一方面,当页面发生错误时,一个单一线程进程将不能够发挥有效性能。
因此,在一个程序可能有频繁的页面错误或不得不等待其他系统的事件的情况下,多线程方案会有比单处理器系统更好的性能。
4.4以下程序中的哪些组成部分在多线程程序中是被线程共享的?
a.寄存值
b.堆内存
c.全局变量
d.栈内存
答:
一个线程程序的线程共享堆内存和全局变量,但每个线程都有属于自己的一组寄存值和栈内存。
4.5一个采用多用户线程的多线程方案在多进程系统中能够取得比在单处理器系统中更好的性能吗?
答:
一个包括多用户线程的多线程系统无法在多处理系统上同时使用不同的处理器。
操作系统只能看到一个单一的进程且不会调度在不同处理器上的不同进程的线程。
因此,多处理器系统执行多个用户线程是没有性能优势的。
4.6就如4.5.2章节描述的那样,Linux没有区分进程和线程的能力。
且Linux线程都是用相同的方法:
允许一个任务与一组传递给clone()系统调用的标志的进程或线程。
但许多操作系统,例如windowsXP和Solaris,对进程和线程都是一视同仁。
基本上,这种使用notation的系统,一个进程的数据结构包括一个指向属于进程的不同线程的指针。
区别建模过程和在内核中线程的两种方法。
答:
一方面,进程和线程被视为相似实体的系统中,有些系统代码可以简化。
例如,一个调度器可以在平等的基础上考虑不同的进程和线程,且不需要特殊的代码,在调度中审查有关线程的进程。
另一方面,这种统一会使进程资源限制更加困难。
相反,一些额外的复杂性被需要,用来确定哪个线程与哪个进程一致和执行重复的计数任务。
4.7由4.11给出的程序使用了Pthread的应用程序编程接口(API),在程序的第c行和第p行分别会输出什么?
答:
c行会输出5,p行会输出0.
4.8考虑一个多处理器系统和用多线程对多线程模式编写的多线程程序。
让程序中的用户线程数量多于系统中的处理器的数量,讨论下列情况下的性能意义:
a.由程序分配的内核线程的数量比处理器少
b.由程序分配的内核线程的数量与处理器相同
c.由程序分配的内核线程的数量大于处理器数量但少于用户线程的数量
答:
当内核线程的数量少于处理器时,一些处理器将仍然处于空闲状态。
因为,调度图中只有内核线程的处理器,而不是用户线程的处理器。
当程序分配的内核线程的数量与处理器相同时,那么有可能所有处理器将同时使用。
然而,当一个内核块内的内核(因页面错误或同时援引系统调用)相应的处理器将闲置。
当由程序分配的内核线程的数量大于处理器数量时,封锁一个内核线程并调出,换入另一个准备执行的内核线程。
因此,增加多处理器系统的利用率。
第五章CPU调度
5.1为什么对调度来说,区分I/0限制的程序和CPU限制的程序是重要的?
答:
I/0限制的程序有在运行I/O操作前只运行很少数量的计算机操作的性质。
这种程序一般来说不会使用很多的CPU。
另一方面,CPU限制的程序利用整个的时间片,且不做任何阻碍I/O操作的工作。
因此,通过给I/O限制的程序优先权和允许在CPU限制的程序之前运行,可以很好的利用计算机资源。
5.2讨论以下各对调度标准在某种背景下会有的冲突
a.CPU利用率和响应时间
b.平均周转时间和最大等待时间c.I/O设备利用率和CPU利用率
答:
a.CPU利用率和响应时间:
当经常性的上下文切换减少到最低时,CPU利用率增加。
通过减少使用上下文切换程序来降低经常性的上下文切换。
但这样可能会导致进程响应时间的增加。
b.平均周转时间和最大等待时间:
通过最先执行最短任务可以使平均周转时间最短。
然而,这种调度策略可能会使长时间运行的任务永远得不到调度且会增加他们的等待时间。
c.I/O设备利用率和CPU利用率:
CPU利用率的最大化可以通过长时间运行CPU限制的任务和同时不实行上下文切换。
I/O设备利用率的最大化可以通过尽可能调度已经准备好的I/O限制的任务。
因此,导致上下文切换。
5.3考虑指数平均公式来预测下一次CPU区间的长度,使用以下参数值会有什么影响?
a.a=0和t=100毫秒
b.a=0.99和t=10毫秒
答:
当a=0和t=100毫秒时,公式总是会预测下一次的CPU区间为100毫秒。
当a=0.99和t=10毫秒时,进程最近的行为是给予更高的重量和过去的就能成相比。
因此,调度算法几乎是无记忆的,且简单预测未来区间的长度为下一次的CPU执行的时间片。
5.4考虑下列进程集,进程占用的CPU区间长度以毫秒来计算:
进程
区间时间
优先级
P1
10
3
P2
1
1
P3
2
3
P4
1
4
P5
5
2
假设在时刻0以进程P1,P2,P3,P4,P5的顺序到达。
a.画出4个Gantt图分别演示用FCFS、SJF、非抢占优先级(数字小代表优先级高)和
RR(时间片=1)算法调度时进程的执行过程。
b.在a里每个进程在每种调度算法下的周转时间是多少?
c.在a里每个进程在每种调度算法下的等待时间是多少?
d.在a里哪一种调度算法的平均等待时间对所有进程而言最小?
答:
a.甘特图略b.周转时间
FCFS
RR
SJF
非抢占优先级
P1
10
19
19
16
P2
11
2
1
1
P3
13
7
4
18
P4
14
4
2
19
P5
19
14
9
6
c.等待时间
FCFS
RR
SJF
非抢占优先级
P1
0
9
9
6
P2
10
1
0
0
P3
11
5
2
16
P4
13
3
1
18
P5
14
9
4
2
d.SJF
5.5下面哪些算法会引起饥饿
a.先来先服务
b.最短工作优先调度
c.轮换法调度d.优先级调度
答:
最短工作优先调度和优先级调度算法会引起饥饿
5.6考虑RR调度算法的一个变种,在这个算法里,就绪队列里的项是指向PCB的指针。
a.如果把两个指针指向就绪队列中的同一个进程,会有什么效果?
b.这个方案的主要优点和缺点是什么?
c.如何修改基本的RR调度算法,从而不用两个指针达到同样的效果?
答.a.实际上,这个过程将会增加它的优先权,因为通过经常得到时间它能够优先得以运行。
b.优点是越重要的工作可以得到更多的时间。
也就是说,优先级越高越先运行。
然而,结果将由短任务来承担。
c.分配一个更长的时间给优先级越高的程序。
换句话说,可能有两个或多个时间片在RR调度中。
5.7考虑一个运行十个I/O限制任务和一个CPU限制任务的系统。
假设,I/O限制任务一次分配给一个I/O操作1毫秒的CPU计算,但每个I/O操作的完成需要10毫秒。
同时,假设间接的上下文切换要0.1毫秒,所有的进程都是长进程。
对一个RR调度来说,以下情况时CPU的利用率是多少:
a.时间片是1毫秒
b.时间片是10毫秒答:
a.时间片是1毫秒:
不论是哪个进程被调度,这个调度都会为每一次的上下文切换花费一个0.1毫秒的上下文切换。
CPU的利用率是1/1.1*100=92%。
b.时间片是10毫秒:
这I/O限制任务会在使用完1毫秒时间片后进行一次上下文切换。
这个时间片要求在所有的进程间都走一遍,因此,10*1.1+10.1(因为每个I/O限定任务执行为1毫秒,然后承担上下文切换的任务,而CPU限制任务的执行10毫秒在承担一个上下文切换之前)。
因此,CPU的利用率是20、21.1*100=94%。
5.8考虑一个实施多层次的队列调度系统。
什么策略能够使一个计算机用户使用由用户进程分配的最大的CPU时间片。
答:
这个程序可以使分配给它的没有被完全利用的CPU时间最大化。
它可以使用分配给它的时间片中的绝大部分,但在时间片结束前放弃CPU,因此提高了与进程有关的优先级。
1.5.9考虑下面的基于动态改变优先级的可抢占式优先权调度算法。
大的优先权数代表高优先权。
当一个进程在等待CPU时(在就绪队列中,但未执行),优先权以α速率改变;当它运行时,优先权以速率β改变。
所有的进程在进入就绪队列时被给定优先权为0。
参数α和β可以设定给许多不同的调度算法。
a.β>α>0时所得的是什么算法?
b.α<β<0时所得的是什么算法?
答:
a.FCFSb.LIFO
5.10解释下面调度算法对短进程编程度上的区别:
a.FCFS
b.RR
c.多级反馈队列
答:
a.FCFS----区别短任务是因为任何在长任务后到达的短任务都将会有很长的等待时间。
b.RR-----对所有的任务都是能够相同的(给它们相同的CPU时间区间),所以,短任务可以很快的离开系统,只要它们可以先完成。
c.多级反馈队列和RR调度算法相似——它们不会先选择短任务。
5.11用WindowXP的调度算法,下列什么是数字优先的线程。
a.相对优先级的值为REALTIME_PRIORITY_CLASS的属于实体优先类型的线程
b.相对优先级的值为NORMAL_PRIORITY_CLASS的属于NORMAL类型的线程
c.相对优先级的值为HIGH_PRIORITY_CLASS的属于ABOVE_NORMAL类型的线程
答:
a.26
b.8
c.14
5.12考虑在Solaris操作系统中的为分时线程的调度算法:
a:
一个优先权是10的线程的时间片是多少?
优先权是55的呢?
b:
假设优先权是35的一个线程用它所有的时间片在没有任何阻止的情况下,这调度算法将会分配给这个线程什么样新的优先权?
c:
假设一个优先权是35的线程在时间片结束前阻止I/O操作。
这调度算法将会分配给这个线程什么样新的优先权?
答:
a:
160
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 概念 第七 习题 答案 中文版 完整版