这部分是由于历史原因,部分是因为这样更有意义。
多媒体
Multics是第一个引入当今我们所知的分层文件系统的操作系统,其目录可以包含目录。RC Daley和PG Neumann 引用“用于辅助存储的通用文件系统”:
本文的第2节介绍了文件的分层结构,该文件允许灵活使用系统。此结构包含足够的功能来确保多功能性。(...)
为了便于理解,可以将文件结构视为文件树,其中一些是目录。也就是说,除了一个例外,每个文件(例如,每个目录)都会发现自己恰好由一个目录中的一个分支直接指向。唯一的例外是树根目录中的根目录或根目录。尽管未从任何目录中明确指向根,但根由文件系统已知的虚拟分支隐式指向。(...)
在任何时候,都将用户视为在某个目录中操作,该目录称为他的工作目录。只需指定条目名称,他就可以访问其工作目录中的条目有效指向的文件。一个以上的用户可能一次拥有相同的工作目录。
与许多其他方面一样,Multics寻求灵活性。用户可以在文件系统的子树中工作,而忽略其余部分,并且仍然受益于目录来组织其文件。目录还用于访问控制-READ属性允许用户列出目录中的文件,而EXECUTE属性允许用户访问该目录中的文件(这与许多其他功能一样,都存在于unix中)。
Multics还遵循具有单个存储池的原则。本文不涉及这方面。单个存储池与当时的硬件非常匹配:没有可移动存储设备,至少没有用户需要的设备。Multics确实有一个单独的备份存储池,但这对用户是透明的。
Unix系统
Unix从Multics中获得了很多启发,但其目标是简单性,而Multics则是针对灵活性。
单个分层文件系统非常适合Unix。与Multics一样,存储池通常与用户无关。但是,这里有可移动设备,Unix确实通过mount
和umount
命令将它们公开给用户(保留给“超级用户”,即管理员)。在“ UNIX分时系统”中,Dennis Ritchie和Ken Thompson解释了:
尽管文件系统的根目录始终存储在同一设备上,但是不必将整个文件系统层次结构都驻留在该设备上。有一个带有两个参数的挂载系统请求:一个现有普通文件的名称,以及一个特殊文件的名称,该特殊文件的相关存储卷(例如磁盘包)应具有包含其自己的目录层次结构的独立文件系统的结构。挂载的作用是导致对以前普通文件的引用改为引用可移动卷上文件系统的根目录。实际上,mount用一个全新的子树(存储在可移动卷上的层次结构)替换层次结构树(普通文件)的叶子。挂载之后,可移动卷上的文件与永久文件系统中的文件之间几乎没有区别。例如,在我们的安装中,根目录位于我们的一个磁盘驱动器的一个小分区上,而另一个包含用户文件的驱动器则通过系统初始化顺序安装。通过在其对应的特殊文件上写入来生成可安装文件系统。可以使用实用程序来创建一个空文件系统,或者可以仅复制一个现有文件系统。
分层文件系统还具有将管理多个存储设备的复杂性集中到内核中的优势。这意味着内核更加复杂,但是所有应用程序因此都变得更加简单。由于内核必须关心硬件设备,而大多数应用程序则不需要,因此这是一个更自然的设计。
视窗
Windows的起源可以追溯到两个世系:VMS是最初为VAX微型计算机设计的操作系统,CP / M是为早期Intel微型计算机设计的操作系统。
VMS具有分布式的分层文件系统Files-11。在Files-11中,文件的完整路径包含节点名称,该节点上的帐户名称,设备名称,目录树路径,文件名称,文件类型和版本号。VMS具有强大的逻辑名称功能,允许将快捷方式定义到特定目录,因此用户几乎不必关心目录的“真实”位置。
CP / M专为具有64kB RAM和软盘驱动器的计算机而设计,因此它很简单。没有目录,但是文件引用可以包含驱动器指示(A:
或B:
)。
当MS-DOS 2.0引入目录时,它使用的语法与本身遵循CP / M的MS-DOS 1兼容。因此,路径根植于具有单个字母名称的驱动器。(此外,/
VMS和CP / M中使用了斜杠字符来启动命令行选项,因此必须使用不同的字符作为目录分隔符。这就是DOS和更高版本的Windows使用反斜杠的原因,尽管某些内部组件也支持斜杠。 )。
Windows保留了与DOS和VMS方法的兼容性,因此即使它们的相关性降低,它仍保留了驱动器号的概念。如今,Windows在后台使用了UNC路径(最初由Microsoft和IBM为相关祖先的OS / 2 开发)。尽管这是为高级用户保留的(可能由于历史原因),但是Windows确实允许通过重新解析点进行安装。