本的不同是在它们的性能上。 一个内存共享块是通过系统调用创建的。 然而,
一旦内存共享块在两个或更多的进程间建立,这些进程可以借助内存共享块
来通信,不再需要内核的协助。另一方面,当 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)增加一个新的服务不需要修改内核