适用于现代架构的 Unix 系统

作者:Randolph Bentson

书评

适用于现代架构的 Unix 系统

作者: Curt Schimmel

出版社: Addison-Wesley

ISBN 0-201-63338-8

评论员: Randolph Bentson (bentson@grieg.seaslug.org)

“Linux 的多处理器版本涉及到什么?” 几乎已经成为 Linux 新闻组中的“常见问题”。 答案包含在 Curt Schimmel 的 UNIX Systems for Modern Architectures(适用于现代架构的 UNIX 系统) 中。

Schimmel 可以根据他在该主题上的经验发言。 他曾在 AT&T 贝尔实验室和 Silicon Graphics, Inc. 工作过 Unix 系统,并在 USENIX 和 UKUUG 上提供了关于对称多处理器 Unix 系统的教程。 这本书是那些教程的延伸。

乍一看,这本书似乎为程序员提供了太多关于硬件的细节。 但随着人们的深入,人们会发现,理解硬件缓存-总线-内存交互的微妙之处是为多处理器系统“编写”内核的重要组成部分。

在对 Unix 进程进行简要(17 页)描述后,另外 130 页专门讨论单处理器缓存系统。 我感到惊讶和高兴的是,发现获得正确的结果是多么的困难。 幸运的是,人们似乎在我使用的系统上做对了这件事。

在这个基础上,本书的其余部分处理多处理器系统的新领域。

任何此类系统的关键是保护共享数据和有效的进程间通信。 互斥机制以三种形式出现——短期、中期和长期。 我们展示了 Unix 的单处理器实现如何依赖于单线程内核和中断屏蔽来保护共享数据,更重要的是,我们展示了这些方法如何不适用于多处理器系统。

Schimmel 展示了如何为所有三个级别的互斥构建锁(并指出了它们在典型 Unix 内核中的需求)。 虽然主/从方案易于实现,但它具有单处理器系统的许多风格(和瓶颈)。 更有希望的对称多处理器方案不太容易正确完成。 问题的本质是为临界区找到正确的粒度(或大小)。 粒度太大或太小都会损害系统性能。 我们展示了导致良好设计的分析。

本书最后讨论了更多的内存访问和缓存问题——这次是针对多处理器系统。 一些最新的 RISC 芯片的内存模型允许重新排序存储和加载,使其与程序员的意图不同,以便提高性能。 我们展示了 RISC 芯片如何具有强制实现锁和在临界区中访问数据的正确结果的机制。 即使内存请求以它们被编程的顺序发出,缓存一致性也是多处理器系统中的一个严重问题。 本书的最后几章讨论了严肃的系统设计师必须处理的交互作用。

本书是作为教科书编写的,每章末尾都有问题和参考文献。 选定的问题在附录中提供了答案。 另一个附录总结了 Unix 系统中发现的十几个流行的芯片。

Randolph Bentson 的联系方式:(bentson@grieg.seaslug.org)

加载 Disqus 评论