加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

比起Windows,怎样解读Linux的文件系统与目录结构?

发布时间:2021-01-11 19:06:33 所属栏目:安全 来源:网络整理
导读:副标题#e# 《比起Windows,怎样解读Linux的文件系统与目录结构?》要点: 本文介绍了比起Windows,怎样解读Linux的文件系统与目录结构?,希望对您有用。如果有疑问,可以联系我们。 Linux 和Windows的文件系统有些不同,在学习使用 Linux 之前,若能够了解这
副标题[/!--empirenews.page--]

《比起Windows,怎样解读Linux的文件系统与目录结构?》要点:
本文介绍了比起Windows,怎样解读Linux的文件系统与目录结构?,希望对您有用。如果有疑问,可以联系我们。

Linux 和Windows的文件系统有些不同,在学习使用 Linux 之前,若能够了解这些不同,会有助于后续学习.

本文先对Windows和 Linux 上面文件系统原理、组织概念进行区分,并给出例子、列举两者的优缺点以具体说明,最后较为详细地介绍了 Linux 系统的目录结构.

Windows 和 Linux 文件系统

下面将介绍启动Windows和 Linux 后,在文件系统的角度上,它们分别是怎样看待自己世界的.

访问原理 ?

在Windows系统中,一切东西都是存放在硬盘上的.启动系统后,先确定硬盘,再确定硬盘上的分区以及每个分区所对应文件系统,最后是存放在某个分区特定的文件系统中的文件. 也就是说,Windows是通过 “某个硬盘-硬盘上的某个分区-分区上的特定文件系统-特定文件系统中的文件” 这样的顺序来访问到一个文件的.

但是与Windows不同,Linux 系统中的一切都是存放在唯一的 虚拟文件系统中的,这个 虚拟文件系统是树状的结构以一个根目录开始.启动系统后,先有这个 虚拟文件系统,再识别出各个硬盘,再把某个硬盘的某个分区挂载到这个 虚拟文件系统的某个子树上(即分区用某个子目录来表示),再确定分区对应的子目录文件系统,最后的文件就存放在这个特定的文件系统中. 也就是说,Linux 系统是通过 “虚拟文件系统-硬盘-硬盘上的分区-分区上的特定文件系统-特定文件系统中的文件” 这样的顺序来访问一个文件的.

可能对习惯了使用Windows的用户来说,Linux 的方式有些不适应,它的 虚拟文件系统,实质就是一颗目录树,最开始的目录叫做根目录,根目录中又有每一级子目录,或者文件,子目录又有子子目录和文件,其中每个子目录都特定的功能这个功能(这些是约定俗成了的,在后面 常用的重要目录 (See section 1.2.1) 中会详细说明).

也许有人会问,没有这个虚拟文件系统就无法使用硬盘,可是最开始没有硬盘,那么这个 虚拟文件系统以及相应的组织结构是怎么存放起来的呢?这个问题,就像先有鸡还是先有蛋这个问题一样看似简单实则……但是,在 Linux 中,很轻易地跳出了这个思维循环,问题的答案并没在 虚拟文件系统 和 硬盘 这两者之间徘徊,而是第三者—— 内存,Linux系统启动起来之后,整个 虚拟文件系统的组织结构,都是随着每次内核系统的启动自动在内存中建立好了的,根本就不需要硬盘.

另外还要注意,就是在我们用户的角度上,无论在Windows还是 Linux 上面,都是使用路径来访问一个文件的.表示文件的路径由 “文件所在的目录+各级目录的分隔符+文件” 三个部分组成,这个策略在两者之间是一样的,所不同的是,Windows下面目录分隔符是 ,Linux 下面是 /,也许这也是两者之间为了表示其各自立场不同的一个原因吧?^_^

系统组织 ?

在Windows系统中,我们可以把文件大体分为两种: 系统文件和用户文件 .一般来说系统文件(例如Windows操作系统本身,一些系统程序,程序运行所需的库文件,以及一些系统配置文件等)存放的默认位置在 C 盘,当然也可以在安装时候指定在其他盘;其它用户文件,包含用户后来安装的程序以及一些数据文件等,用户可以把它们随意存放在任意的分区.

在 Linux 系统中,主要有两个概念: 虚拟文件系统中的文件和 Linux操作系统内核本身.逻辑上可以认为前者属于上层,后者在下层,前者基于后者,后者依赖前者而存在.

Linux 把除了它本身(Linux操作系统内核)以外的一切事物都看作是在 虚拟文件系统中的文件了.无论是键盘,鼠标,数据,程序,CPU,内存,网卡……无论是硬件、软件、数据还是内存中的东西,我们都可以在 虚拟文件系统中的相应子目录对他们进行访问和操作,操作统一.而实现这些管理的幕后就是Linux操作系统内核本身:启动 Linux 系统的时候,首先电脑把Linux操作系统内核加载到内存中,内核本身提供了文件管理,设备管理,内存管理,CPU进程调度管理,网络管理等功能,等内核运行起来之后,就在内存中建立起相应的 虚拟文件系统,最后就是内核利用它提供的那些功能,通过管理文件的方式,来管理 虚拟文件系统中的硬件软件等各种资源了.

Linux 把提供操作系统本身功能(管理计算机软硬件资源)的那些部分划给了Linux操作系统内核,使得Linux操作系统内核成为一个独立的部分,有它自己独立的开源代码;而其它的一切(软件应用,硬件驱动,数据)都根据其特性有自己的开源代码、或者自由地组织并且存放在那个 虚拟文件系统中由Linux操作系统内核来管理.这样,将系统本身和系统所管理的资源分开,并开放源代码,有助于对系统或者系统所管理的资源进行灵活的定制和扩展,还能按需快速建立起只适合自己使用的操作系统,也利于操作系统本身的发展.实际 Ubuntu,Fedora,RedHat 等各种不同的 Linux 操作系统发行版,简单来说就是不同厂商对其文件系统和内核进行了不同的配置而产生的 “大众化” 的操作系统.相比之下,Windows就显得非常地零乱复杂,将系统、软件、硬件、数据都混在了一起,其不同版本只能由 Microsoft一家公司发行.

举例说明

下面用直观的例子,来说明两者的不同,以加深理解.假设我们的机器上面有一个硬盘,硬盘分为三个区.

在Windows系统中,我们启动系统之后就会看到 C,D,E,盘符,它们分别对应硬盘上的三个分区,增加硬盘,或者分区,会导致盘符的增加(注意由于历史原因,A,B 用于表示软驱,硬盘分区盘符从 C 开始按字母递增),这里的每个分区都各自可以被格式化为不同的文件系统(这里的文件系统,包括例如 NTFS 格式,FAT32 格式等),文件系统的基本功能就是为了存放文件的,不同文件系统区别一般在于管理其中存放的文件的功能的强弱,所以分区被格式化成指定格式的文件系统之后,就可以存放任何文件和目录了,我们看到的 C,E 内容也就对应了硬盘中相应分区的数据内容.

但是,与Windows中把硬盘分区看成 C,E 盘符不同,Linux 中最开始根本就没有硬盘的概念,就只有一个纯粹的 虚拟文件系统.如果想要使用哪个硬盘的某个分区,就把那个分区“挂载” 到某个子目录之下,这样硬盘中的分区,文件系统,目录等内容就呈现到了那个子目录里面.也就是说,我们使用硬盘中的数据,实际是先把硬盘的某个分区“挂载” 到某个子目录下,然后通过那个子目录来访问的.这个例子中,通常硬盘会对应 虚拟文件系统中的 /dev/sda (如有多个硬盘,则为 /dev/sda,/dev/sdb,……,按字母递增),其三个分区对应 /dev/sda1,/dev/sda2,/dev/sda3 (多个分区按数字递增,不同硬盘的分区,对应为 /dev/sdb1,/dev/sdb2 等等),默认硬盘各个分区会被挂载到 虚拟文件系统系统中类似 /mnt/sda1/,/mnt/sda2/,/mnt/sda3/ 的目录(在 Linux 又叫挂载点)中,在/etc/fstab 文件中,我们可以找到分区文件和挂载点的对应关系描述.这样,硬盘相应的分区就做为整个 虚拟文件系统根目录下的一颗子树,反映到了子目录(挂载点)上,子目录中的内容就对应分区中的数据.

假设访问上述硬盘第三个分区 dir1 目录中的文件 test.file

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读