Professordeng's Blog

UNIX 将 “标准” 的文件描述符,管道,和便于操作它们的 shell 命令整合在一起,这是编写通用、可重用程序的重大进步。这个想法激发了 UNIX 强大和流行的 “软件工具” 文化,而且 shell 也是首个所谓的 “脚本语言”。UNIX 的系统调用接口在今天仍然存在于许多操作系统中,诸如 BSD,Linux,以及 Mac OS X。

现代内核提供了比 XV6 要多得多的系统调用和内核服务。最重要的一点,现代基于 Unix 的操作系统并不遵循早期 Unix 将设备暴露为特殊文件的设计,比如刚才所说的控制台文件。Unix 的作者继续打造 Plan 9 项目,它将 “资源是文件” 的概念应用到现代设备上,将网络、图形和其他资源都视作文件或者文件树。

文件系统抽象是一个强大的想法,它被以万维网的形式广泛的应用在互联网资源上。即使如此,也存在着其他的操作系统接口的模型。Multics,一个 Unix 的前辈,将文件抽象为一种类似内存的概念,产生了十分不同的系统接口。Multics 的设计的复杂性对 Unix 的设计者们产生了直接的影响,他们因此想把文件系统的设计做的更简单。

这本书考察 XV6 是如何实现类似 Unix 的接口的,但涉及的想法和概念可以运用到 Unix 之外很多地方上。任何一个操作系统都需要让多个进程复用硬件,实现进程之间的相互隔离,并提供进程间通讯的机制。在学习 XV6 之后,你应该了解一些其他的更加复杂的操作系统,看一下他们当中蕴含的 XV6 的概念。