操作系统概念第七版习题答案(中文版)完整版 联系客服

发布时间 : 星期四 文章操作系统概念第七版习题答案(中文版)完整版更新完毕开始阅读9b5451d36f1aff00bed51e4b

和只使用那些未被使用的装置。

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’s RMI 公司提供两种发送,但引用传递一个参数需要声明这个参数是一个远程对象。

D.固定大小和可变大小消息:涉及的太多是有关缓冲问题,带有定长信息,一个拥有具体规模的缓冲课容纳已知数量的信息缓冲能容纳的可变信息数量是未知的。考虑Windows 2000如何处理这种情况。带有定长信息(<256bytes),信息从发送者的地址空间被复制至接受进程的地址空间。更大的信息(如变长信息)使用共享内存传递信息。