为什么苹果电脑硬盘不分区?
本文摘要:订阅专栏撤销订阅 80后产品,人生趣味是互联网、旅游、喝茶85020本文翻译自程序员的问答社区stackexchange上的一个问题。有人可以给我解释一下,为何Linux的文件体系是“单目录层阶树状”结构,而不像Windows那样有个C:\、D:\分区啥的,这样做有无特其他原因
订阅专栏撤销订阅 80后产品,人生趣味是互联网、旅游、喝茶

8502

0

本文翻译自程序员的问答社区stackexchange上的一个问题。

有人可以给我解释一下,为何Linux的文件体系是“单目录层阶树状”结构,而不像Windows那样有个C:\、D:\分区啥的,这样做有无特其他原因呢?

一句话答案:不分区的好,Windows那是为了向下兼容。

Doug O Neal 163票

说起来Unix的文件体系的道行要比Windows的早很多年,所以您的问题得改成:“为何Windows要自搞一套弄出个硬盘分区符号来呢?”

树状的文件结构有个优势就是任何子目录或者文件,都能顺着根目录找到,所以,假如你需要把本地文件迁移到一个网络硬盘上,这时候候关于软件来说,它们不会察觉到任何差异。

假设你有一套体系,操作体系焊死不能动,可是有个程序有很高的I/O需求,那么你可以很便利地把/usr目录加载为只读,然后把/opt(应用程序装置目录)目录加载到一块SSD上。这样整个文件体系的结构关于操作体系来说没有发生任何改变。

然而在Windows下,这种问题就比较讨厌,特别是程序途径前面带着个C:\Program Files\的时分……

Gilles 70票

这都是有前史原因在里边的,部分上是因为这样做在当时更有用。

Multics

Multics是我所知的前史上第一个选用“层阶树状文件结构”的操作体系,一个目录里还嵌着子目录这种机制。引用R. C. Daley和P. G. Neumann的《通用辅助文件存储(A General-Purpose File System For Secondary Storage)》一文中的话:

论文第二部分论述了一种“层阶树状文件结构”的文件体系,关于操作体系来说,它十分高效。这种结构兼顾了可靠性和活络性……

为了便于了解,我们可以把这种结设想象成一棵树,文件的树,其间有一些目录其实也是文件。可是有一个破例的目录,它本身的指针只指向一个单一的,确定的目录,那就Root目录。它没有明确地被其他目录所指,Root目录只是隐式地代表一个虚拟的分支,我们称这个分支结构为“文件体系”。

在任何时分,用户都处于一个目录下面,我们称它为“工作目录(working directory)”,用户可以通过指定进口拜访工作目录下面的文件,并且多个用户可以同时工作在同一个工作目录之下。

在其他各个方面,Multics寻求的是活络性,用户只需工作在整个文件体系的一条分支上,其他的不用管,但还能保证用目录管理文件的便捷性。目录还被用来控制拜访权限——目录的READ属性允许用户拜访目录中的文件,而EXECUTE属性允许用户修正目录中的文件(这个特性被后来的unix体系继承下来)。

Multics还遵循了“单一存储对象池”的设计原则,可是论文没有在这方面打开。“单一存储对象池”关于当时的硬件条件来说十分适宜,那时分没有可移动的硬盘,最少是没有人关怀这个问题。Multics确实有一个备用的备份存储池,但关于用户来说,它是不存在的。

Unix

Unix体系深受Multics的影响,可是比起Multics的“活络”,Unix更专注于加强体系的“简洁”。

“单一目录树层级”的文件体系就很合适Unix体系。就和Multics一样,存储池的细节常常不需要用户关怀,可是后来呈现了可拆开的硬盘,Unix通过mount和umount两个命令把对存储设备的操作暴露给用户(只有“管理员权限”的用户才干执行这样的操作)。在《Unix分时体系设计(The Unix Time-Sharing System)》一文中,Dennis Ritchie和Ken Tompson解释道:

虽然体系根目录一般都在同一个存储设备上,可是关于其他分支目录则未必要这样做。出于两种考虑,我们需要mount命令完成存储设备挂载的工作:普通文件的文件名一致性,和文件地点的存储设备可能有其独立的文件存储结构。通过mount命令,可以把之前的一个文件,替换成一个可移动存储设备上的完好的目录结构,事实上,mount命令把文件层级的某一部分,通过引用外部数据,替换成一个新的结构。这样关于之前整个文件体系来说,没有发生任何改变。

其实,拿我们的体系装置过程举例,root目录一直在我们的硬盘上占了一小块当地,但其他用户数据在不同的硬盘上,通过mount机制,按序列加载组成一个初始化的体系。一个“可挂载”的体系,完满是通过读写特殊文件完成的。各种应用可以创建自己的文件体系,或者简略地从他处拷贝一份。(注:上面这段文字的中心思维:在UNIX中,一切都是文件。)

“层阶树状文件体系”还有一个优势,就是可以把管理存储设备的杂乱使命交给内核处理,这就意味着内核虽然愈来愈杂乱,可是关于建立其上的应用来说,其成果就是坚持简洁,因为内核现已把脏活累活都包了,大部分应用都不用关怀这部分细节,这是一种更加天然的设计。

Windows

Windows体系流淌着两支古老血脉:设计运转在VAX微机上的VMS操作体系,和前期Intel微机(如8080、Z80)上运转的CP/M操作体系。

VMS有一个散布式的层级文件体系,叫做Files-11。在Files-11中,一个文件的完好途径包括一个“节点名称”、一个关联的用户账户、设备名称、目录树、文件名和文件类型,以及版本号。VMS有强壮的Logical Names功用,这个功用允许自界说“快捷方式”到指定的途径,所以用户不需要介意目录的“真实”途径。

CP/M是为了64KB的内存和软盘体系设计的。为了一切从简,所以从诞生起,它就没有“目录”这个概念,可是文件是通过引用“驱动器方位”来拜访的,比如A:或者B:。

MSDOS 1.0继承了CP/M的这个特性,所以当MSDOS 2.0引入“目录”的概念今后,为了兼容1.0也在途径前保留了“盘符”字符,而斜杠“/”符号是本来VMS和CP/M体系中表明“命令参数开始”的符号,所今后来的DOS以及Windows有必要区分,并选用反斜杠“\”符号作为途径分隔符。

Windows继承了DOS和VMS的习惯,虽然现已意义不大,可是仍旧保留着“盘符”的传统。如今,在Windows底层选用的是UNC途径(通用命名规则即\servername\sharename的规范),但这只是一些高级Windows用户需要知道的功用,Windows现在确实可以通过“重解析点”(Reparse Points)来挂在存储设备(所以不需要C:这样的盘符了)。

来历:驱动之家


人人都是产品主管(woshipm)是以产品主管、运营为核心的学习、交流、分享平台,集媒体、培训、社群为一体,全方位效劳产品人和运营人,建立9年举行在线讲座500+期,线下分享会300+场,产品主管大会、运营大会20+场,掩盖北上广深杭成都等15个城市,内行业有较高的影响力和知名度。平台集合了众多BAT美团京东滴滴360小米网易等知名互联网公司产品总监和运营总监,他们在这里与你一同生长。

相关内容