Files
2023-07-05 12:37:58 +08:00

2.2 KiB
Raw Permalink Blame History

1.5 真实世界

Unix将“标准”文件描述符、管道和方便的shell语法结合起来进行操作这是编写通用可重用程序方面的一大进步。这个想法引发了一种“软件工具”的文化这种文化对Unix的强大和流行做出了卓越贡献shell是第一个所谓的“脚本语言”。Unix系统调用接口今天仍然存在于BSD、Linux和MacOSx等系统中。

Unix系统调用接口已经通过可移植操作系统接口(POSIX)标准进行了标准化。Xv6与POSIX不兼容:它缺少许多系统调用(包括lseek等基本系统调用)并且它提供的许多系统调用与标准不同。我们xv6的主要目标是简单明了同时提供一个简单的类unix系统调用接口。为了运行基本的Unix程序有些人扩展了xv6增加了一些系统调用和一个简单的c库。然而现代内核比xv6提供了更多的系统调用和更多种类的内核服务。例如它们支持网络工作、窗口系统、用户级线程、许多设备的驱动程序等等。现代内核不断快速发展提供了许多超越POSIX的特性。

Unix通过一组文件名和文件描述符接口统一访问多种类型的资源(文件、目录和设备)。这个想法可以扩展到更多种类的资源;一个很好的例子是Plan9它将“资源是文件”的概念应用到网络、图形等等。然而大多数unix衍生的操作系统并没有遵循这条路。

文件系统和文件描述符是强大的抽象。即便如此还有其他的操作系统接口模型。MulticsUnix的前身以一种看起来像内存的方式抽象了文件存储产生了一种非常不同的接口风格。Multics设计的复杂性直接影响了Unix的设计者他们试图使设计更简单。

Xv6没有提供一个用户概念或者保护一个用户不受另一个用户的伤害;用Unix的术语来说所有的Xv6进程都作为root运行。

本书研究了xv6如何实现其类Unix接口但这些思想和概念不仅仅适用于Unix。任何操作系统都必须在底层硬件上复用进程彼此隔离进程并提供受控制的进程间通讯机制。在学习了xv6之后你应该去看看更复杂的操作系统以及这些系统中与xv6相同的底层基本概念。