2020-12-16 14:23:55 阅读(220)
本文翻译自程序员问答社区stackexchange.com上的一个问题。有人可以向我解释为什么Linux的文件系统是“单目录层阶树”结构,而不是像Windows那样有C:\、D:\分区什么的,这样做有什么特别的原因吗?一句话答案:不分区好,Windows就是向下兼容。DougO说到Neal163票,Unix文件系统的道行比Windows早很多年,所以你的问题不得不改成:“为什么Windows要自己做一套硬盘分区符号?“树文件结构的一个优点是,任何子目录或文件都可以沿着根目录找到。因此,如果您需要将本地文件转移到网络硬盘上,它们就不会注意到软件之间的任何区别。假设你有一个系统,操作系统无法焊接和移动,但是有一个程序对I/O有很高的要求,那么你可以很容易地将/usr目录加载为只读,然后将/opt(应用程序安装目录)将目录加载到SSD上。因此,整个文件系统的结构对操作系统没有任何变化。然而,在Windows下,这个问题更令人讨厌,特别是在程序路径前面有一个C:\ProgramFiles\..Gilles70票这些都是有历史原因的,部分原因是这样做在当时更有效。MulticsMultics是历史上第一个采用“层阶树文件结构”的操作系统,目录中嵌入子目录。引用R.C.Daley和P.G.Neumann的通用辅助文件存储(AGeneral-PurposeFileSystemForSecondaryStorage)》本文第二部分阐述了一种“层阶树状文件结构”的文件系统,对操作系统非常有效。这种结构兼顾了可靠性和灵活性...为了便于理解,我们可以把这种结构想象成一棵树和文件树,其中一些目录实际上是文件。但是有一个例外的目录,它自己的指针只指向一个单一确定的目录,那就是Root目录。其他目录并没有明确指出Root目录只是一个虚拟分支,我们称之为“文件系统”。任何时候,用户都在一个目录下,我们称之为“工作目录”(workingdirectory)“用户可以通过指定入口访问工作目录下的文件,多个用户可以同时在同一工作目录下工作。在其他方面,Multics追求灵活性。用户只需在整个文件系统的一个分支上工作,而不需要关心其他分支,但也可以保证目录管理文件的便利性。该目录还用于控制访问权限-该目录的READ属性允许用户访问该目录中的文件,而EXECUTE属性允许用户修改该目录中的文件(该特性由后来的Unix系统继承)。Multics也遵循了“单一存储对象池”的设计原则,但论文没有在这方面展开。“单一存储对象池”非常适合当时的硬件条件。当时没有可移动硬盘,至少没有人关心这个问题。Multics确实有一个备份存储池,但它不存在于用户身上。UnixUnix系统深受Multics的影响,但Unix更注重加强系统的“简洁”,而不是Multics的“灵活性”。“单目录树级”的文件系统非常适合Unix系统。就像Multics一样,存储池的细节往往不需要用户关注,但后来出现了可拆卸硬盘。Unix通过两个命令将存储设备的操作暴露给用户(只有“管理员权限”的用户才能执行此操作)。Unix分时系统设计(TheUnixTime-SharingSystem)》DennisRitchie和KenTompson在一篇文章中解释说,尽管系统根目录通常位于同一存储设备上,但其他分支目录不一定需要这样做。出于两个原因,我们需要mount命令完成存储设备的挂载:普通文件的文件名称一致性,可能与文件所在的存储设备有其独立的文件存储结构。通过mount命令,可以用可移动存储设备上完整的目录结构替换之前的文件。事实上,mount命令通过引用外部数据将文件级别的某一部分替换为新的结构。因此,对于以前的整个文件系统来说,没有任何变化。事实上,以我们的系统安装过程为例,root目录在我们的硬盘上占据了一小部分,但其他用户数据在不同的硬盘上通过mount机制按序列加载形成初始系统。通过读写特殊文件,完全完成了“可挂载”系统。各种应用程序可以创建自己的文件系统,也可以简单地从其他地方复制一份。(注:以上段落的中心思想:在UNIX中,一切都是文件。)“阶级树文件系统”的另一个优点是,管理存储设备的复杂任务可以交给核心处理,这意味着虽然核心越来越复杂,但对于建立其应用程序,结果是保持简单,因为核心包装了脏工作,大多数应用程序不需要关心这部分细节,这是一个更自然的设计。WindowsWindows系统流淌着两条古老的血液:设计VAX微机上运行的VMS操作系统和早期Intel微机(如8080、运行在Z80上的CP/M操作系统。VMS有一个叫Files-11的分布式层级文件系统。在Files-11中,文件的完整路径包括“节点名称”、相关用户账户、设备名称、目录树、文件名和文件类型,以及版本号。VMS具有强大的LogicalNames功能,允许将自定义的“快速方式”定制到指定的路径,因此用户不需要关心目录的“真实”路径。CP/M是为64KB内存和软盘系统设计的。为了简化一切,从诞生起就没有“目录”的概念,但文件是通过引用“驱动位置”来访问的,比如A:或者B:。MSDOS1.0继承了CP/M的特性,所以MSDOS2.0引入“目录”概念后,为了兼容1.0,路径前保留了“盘符”字符,斜杠“/”符号是原VMS和CP/M系统中表示“命令参数开始”的符号,因此必须区分后来的DOS和Windows,并使用反斜杠“\”符号作为路径分隔符。Windows继承了DOS和VMS的习惯,虽然意义不大,但仍保留着“盘符”的传统。如今,UNC路径用于Windows底层(通用命名规则是\servername\sharename的规范),但这只是一些高级Windows用户需要知道的功能,Windows现在确实可以通过“重分析点”(ReparsePoints)将存储设备挂起来(所以不需要C):这样的盘符)。
以上就是关于为什么Linux的文件系统是“单目录层阶树状”结构,这样做有没有特别的原因呢?的相关介绍,更多为什么Linux的文件系统是“单目录层阶树状”结构,这样做有没有特别的原因呢?相关内容可以咨询我们或者浏览页面上的推荐内容。我们将让你对为什么Linux的文件系统是“单目录层阶树状”结构,这样做有没有特别的原因呢?有更深的了解和认识。
推荐阅读
最新文章
猜你喜欢以下内容:
一 客户顾问-张三 一