FreeBSD 操作系统设计与实现,内容回顾与作者采访

阅读数:2364 2015 年 10 月 28 日 18:55

Pearson/Addison-Wesley Professional 出版的《FreeBSD 操作系统设计与实现》历经人们的期盼而终于完成,它是FreeBSD 内核的权威指南。第二版涵盖了从FreeBSD 5 到11 之间的所有主要更新,根据发行注记,相比于第一版大范围的修改了三分之一的内容,而且还有三分之一的内容是新增加的。

第二版要明显的比第一版增加了很多内容,光页数都超过 900 多页,而且覆盖了 FreeBSD 的诸如虚拟化,沙箱,NFSv4,以及 ZFS 支持等等很多新的特性。

书的第一章介绍了 FreeBSD 的发展历史,第二章简要的概括了 FreeBSD 内核的所有组件,剩下的章节即是根据第二章的结构引导读者进入每个题目的细节。

此书采用的是按照 FreeBSD 的技术架构由内而外的来讲述的,从内核的服务开始,继而是进程和内容管理,然后是 I/O 和设备,文件系统,IPC(进程间通信),网络协议,最后是系统的启动与关闭。内容丰富,知识密集,以清晰明了的方式讲述技术话题,书中采用了大量的伪代码,示意图,表格来说明主要的观点,每一章均是以日常见到的主题开始介绍,然后深入扩展到细节。

尽管此书深入到 FreeBSD 的底层细节,但仍然提供了很多操作系统设计和概念的深刻洞见,这不仅对于 FreeBSD 的开发者有吸引力,任何对现代操作系统的思考和讨论有兴趣的人都是有益处的。

InfoQ 采访了本书的作者之一 Marshall Kirk McKusick

InfoQ:FreeBSD 操作系统设计与实现描述了 FreeBSD 内部的运作机理,而且提供了大量翔实的资料,您此书的目标读者是哪些人?人们能够通过阅读此书能够学习到关于 FreeBSD 的什么内容?

Marshall: 我们的书的目标是哪些工作在 FreeBSD 下的专业人士,应用程序开发者可以学到如何有效的利用接口和系统交互;系统程序员可以学到如何扩展、加强系统;没有 FreeBSD 内核经验的系统管理员们可以学习到如何维护、调试和配置系统;技术和销售支持的个人参与者可以学习到系统具备哪些能力以及有哪些局限。

我们的书提供了 FreeBSD 如何实现它的基本服务的广泛的概述。这对哪些需要学习 FreeBSD 是如何提供服务的人们非常的有帮助。能够从本书中受益的人们包括操作系统实现者,系统程序员,UNIX 应用程序开发者,系统管理与,以及对 FreeBSD 充满好奇的用户。本书针对的是拥有至少一年的使用类 Unix 系统的人们,懂一些 C 语言是非常有帮助的,但不是必须的。读者需要了解基本的算法(搜索、排序、哈希)和数据结构(链表、队列、数组)。

本书讲述了 FreeBSD 内核背后的机理。从介绍内核和服务开始,其中包含了用于并发控制的锁。接下来,就是进程的细节描述,包括诸如调度,信号等进程管理任务。概述了安全的框架和策略,包括 Capsicum 沙箱和 FreeBSD jail,Jail 是一个允许在同一个系统中创建隔离的虚拟主机的程序,以内核和进程的内存管理的描述结束了进程的管理。然后转到内核的 I/O,通过介绍 I/O 的框架,服用 I/O 的基础设施细节,以及本地和远程文件系统的支持。然后描述了如何配置、操作字符设备和批量数据传输设备,例如磁盘,以及如何管理虚拟设备从而支持 Xen 和 bhyve 虚拟化的。也涵盖了三个文件系统的设计和实现,它们分别是:快速文件系统 (FFS),Zettabyte 文件系统(ZFS),和网络文件系统(NFS)。接下来是进程间通信(IPC/ 套接字)接口,通过涵盖了网络的分层和实现进行了详细的描述,网络包括了路由,转发以及安全的 TCP/IP 协议。最后,讲述了内核的启动过程,本书更加的强调代码的组织,数据结构的表示,以及算法本身,而不是过一遍内核的代码。它没有包含机器的某个特定部分,例如设备驱动的实现。

InfoQ: 您认为 FreeBSD 在其它的类 Unix 操作系统中是一个什么样的地位?

Marshall: FreeBSD 是三大主要发行版中最为流行的系统 (另外两个分别是 OpenBSD 和 NetBSD)。FreeBSD 大范围的应用于世界上很多公司的核心基础设施,包括 NetFlix,WhataApp,Yahoo!,Juniper 网络,EMC/Isilon。另外苹果公司的 Darwin 使用的也是 FreeBSD,也就是 Mac OS X 的基础操作系统。也由于它可以构建一个非常小的系统,所以能够在嵌入式系统中的应用逐渐增多。开源界主要替代 FreeBSD 的还是 Linux。FreeBSD 的许可条款允许修改和改进系统而无需再发行,这样使得 FreeBSD 的许可更加的友好,无论是企业还是个人用户。Linux 的许可条款要求所有的更改和改进内核进行源代码可以以最低的成本再发布。因此,若企业需要控制发行版的知识产权,那么使用 FreeBSD 来构建他们的产品就是不错的选择。

InfoQ: FreeBSD 在过去相当长的一段时间里是最为流行的 BSD 系统,你认为导致项目如此成功的主要因素是什么?

Marshall: 从 1993 年成立伊始,FreeBSD 项目的目标就是能够为一些企业和个人提供易用和易安装的发行版。

另外一个让 FreeBSD 成功的原因是 FreeBSD 不像其他开源项目那样设有永久的掌控者 (例如 Linux 中 Linus Torvolds 和他的忠实的副手),FreeBSD 的系统治理是自我组织型的,允许受到鼓舞的人们上升到关键角色,且设置了开发者轮流掌控的机制。

在外围,有 5000 到 6000 名开发者,他们每个人都为系统的某个部分工作,例如,维护 FreeBSD 内核,持续开发 FreeBSD 1000 个核心工具,撰写 FreeBSD 文档,移植其它开源软件到 FreeBSD 中等等。开发者可以访问 FreeBSD 的仓库,但是没有更改的权限。他们若想提交,则必须和级别更高的提交者代为提交,或者是将问题以文件对形式报告给提交者,方可为系统添加代码。

比外围更近一层的是比开发者更高级别的提交者,目前有 300 到 400 名提交者,和开发者一样,他们大多数也是为系统的某个部分工作。和开发者不同的是,他们具有更改属于自己的系统部分,并提交到代码仓库。所有的非同寻常的变更都须有一个或多个其他的提交者审核后才能正式到进入到源码仓库。多数的提交者除了自己的本职工作以及审核之外,均会帮助多个开发者提交代码。

由开发者晋升为提交者的建议是由现有的提交者来做的,绝大多数的情况是提名开发者晋升的提交者,他们往往原来就是在一起共事过的,晋升的描述和评估,以过去的工作和当前的工作为准,然后发送给核心团队等待批准。

处于项目中心的是核心团队。核心团队由 9 人组成,每 2 年一次选举出来的。核心团队的候选人来自提交者,且由提交者选举。核心团队扮演着源代码最后的守护者的角色,他们会监控已经提交的内容,以及在两个或多个提交者就如何解决特定问题无法达成共识的情况下解决他们的冲突。核心团队还有一项职责是批准开发者晋升为提交者,(在罕见情况下) 暂时或永久的将一些人从提交者组中清除。被清除的原因多数是不再活跃 (超过一年的时间对系统没有任何的更改)。 ```

InfoQ: 是什么让 FreeBSD 成为独特的,或者说,你个人意愿,为什么选择 FreeBSD 而不是其它 BSD 系统?

Marshall: 不像其它的 BSD 系统或者是通常的开源项目,FreeBSD 对于每个大版本的维护最少周期为 5 年,在整个支持期间提供 bug 修复和安全更新。在这加大的支持期间,哪些基于某个版本开发自己产品的公司就无须为其自己所构建的产品失去支持而担心不已。

InfoQ: FreeBSD 在过去几年中增加的最为引人注目的特性有哪些?

Marshall: FreeBSD 最近新增的一个引人注目的特性是:Capsicum 接口,允许来历不明不明的代码在沙箱中运行,Capsicum 允许具有安全影响的应用程序有非常紧密的边界,从而确保应用不能访问到,修改或盗取任何未授权到信息。

另外一个引人注目的特性是为 FreeBSD 添加了非常重要的 ZFS 文件系统,ZFS 文件系统来自 Open Solaris。不像 Linux 因为许可的冲突不允许引入 ZFS,FreeBSD 将 ZFS 完全整入内核,并且交付 ZFS 的全部功能集以及性能。

InfoQ: 在 2012 年对 FreeBSD 基金会的总监 Dru Lavigne 的采访中, 他说:“FreeBSD 一直很幸运的是具有吸引安全研究经费和与学术界在安全领域的合作的能力。”这对FreeBSD 过去几年产生了什么样的影响?

Marshall: 我们刚才提到的 Capsicum 项目,就是来自剑桥大学(UK)的研究项目。这完全是研究员们使用 FreeBSD 作为他们的开发平台的功劳,简直是天作之合,今天由 FreeBSD 所提供的产品接口,辅助库以及支持的程序均非常的适应他们的研究。真如 Dru 所指出的,FreeBSD 基金会筹集资金来将研究原型转化为产品,这些转换工作离不开这些发掘,掏腰包和管理的人们。

InfoQ: 你认为 FreeBSD 能够为学习关于操作系统提供一个很好的参考吗?如果是的话,作为学习工具它能提供何种优势?

Marshall: 三位作者均倡导以 FreeBSD 作为教学工具。我们开发教学计划,课程笔记,以及实验室试验,用于教授高年级的本科生或者是第一、两年的研究生课程,这些我们开发的课程我们都发布在 www.teachbsd.com 网站上了,关于此项目我们才刚刚开始做,希望在一、两后有更多丰富的内容。

FreeBSD 基金会最近开始了一个项目,将 FreeBSD 引入高中计算机科学课程。虽然这个项目才刚刚开始, 愿景是希望能够提高高中学生对计算机技术的兴趣,尤其是 FreeBSD。

InfoQ: 哪里是 FreeBSD 所引导的方向?其未来有何愿景?

Marshall: 项目的 RoadMap 由开发者们来驱动,这一般是在每年至少举办两次的 FreeBSD 开发者峰会上引入新的想法,开发者峰会分别是 BSDCan(在加拿大的渥太华) 和 EruoBSD(在欧盟国家轮流) 研讨会。当然,它也有来自 FreeBSD 用户社区的反馈,这一般是来自于每年 3-4 次的 FreeBSD 供应商峰会。

传统的 FreeBSD 发行主要是针对服务器和嵌入式系统的。 PC-BSD 的目标用户则是桌面用户,它基于当前的 FreeBSD 发行版,从移植集中将一些软件包整合在一起 (桌面、浏览器、邮件客户端等),打造为一个简单易用且轻松安装的桌面 (笔记本) 系统。

此采访基于 ‘FreeBSD 操作系统设计与实现’, 第二版一书,作者:Marshall Kirk McKusick, George V. Neville-Neil , Robert N.M. Watson, Pearson/Addison-Wesley Professional 出版, 2014 年 9 月, ISBN 978–0–321–96897–5. 更多信息请访问出版商网站

在 2015 年 9 月,出版商又发行了 McKuscik 新的视频教程:“ FreeBSD 开源操作系统介绍在线课程”。

关于作者

FreeBSD操作系统设计与实现,内容回顾与作者采访Marshall Kirk McKusick 长期从事于 Unix 和 BSD 相关的写作、咨询和教授学生的工作,在加利福利亚伯克利分校期间完成了 4.2BSD 的快速文件系统。他还是伯克利计算系统研究小组的一名科学家,负责开发和发布 4.3BSD 和 4.4BSD,他是 FreeBSD 基金会的董事会成员,FreeBSD 的长期贡献者,USENIX 协会的两届主席,他还是 ACM, IEEE, 和 AAAS 的成员。

FreeBSD操作系统设计与实现,内容回顾与作者采访George V. Neville-Neil 安全、网络、操作系统方面的黑客,作家,教师,和咨询师。FreeBSD 基金会董事成员,在 FreeBSD 核心团队工作了 4 年,2004 年起,他为 ACM 的队列和通信写专栏“Kode Vicious”,他是 ACM 的从业者委员会副主席,也是 Usenix 协会,ACM,IEEE 和美国科学促进会的成员。

FreeBSD操作系统设计与实现,内容回顾与作者采访Robert N.M. Watson 大学讲师,剑桥大学计算机实验室的安全研究小组中讲授系统,安全以及架构。他负责监督计算机体系结构,编译器,程序分析,操作系统,网络和安全等先进领域的研究。FreeBSD 基金会董事成员,在 FreeBSD 核心团队 10 年,作为贡献者有 15 年的历史,他是在 Usenix 协会和 ACM 的会员。

查看英文原文: The Design and Implementaiton of FreeBSD Operating System, Review and Q&A With Author


感谢张龙对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群FreeBSD操作系统设计与实现,内容回顾与作者采访)。

评论

发布