加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

Linux 文件系统

发布时间:2021-04-19 09:39:37 所属栏目:传媒 来源:互联网
导读:Linux 内核中,每个数据块定义为 4KB 的大小,所以一个 128GB 的硬盘可以分为 33554432 个数据块,内核就是以数据块的编号来对硬盘进行读写操作的。 二、什么是文件系统 前面说过,内核是以数据块的形式来对硬盘进行读写的,但是这对人类来说是非常不直观的

 Linux 内核中,每个数据块定义为 4KB 的大小,所以一个 128GB 的硬盘可以分为 33554432 个数据块,内核就是以数据块的编号来对硬盘进行读写操作的。

二、什么是文件系统

前面说过,内核是以数据块的形式来对硬盘进行读写的,但是这对人类来说是非常不直观的,因为我们不可能记住每一个数据块保存了什么数据。

为了让用户在使用上更方便和直观,Linux 内核抽象出两个概念来管理硬盘中的数据:文件(File) 和 目录(Directory)。

文件:用于保存数据。

目录:用于保存文件列表,当然目录也可以保存目录。

由于数据是保存在硬盘数据块中,所以文件只需要记录哪些数据块属于当前文件即可。如下图所示:图可以看出,目录中既可以保存文件,也可以保存目录。而文件中保存的是属于当前文件的数据块编号,所以当读写文件时,只需要找到文件对应的数据块进行读写即可。

三、MINIX 文件系统实现

现在,我们以 MINIX 文件系统来详细介绍文件系统的设计原理。由于 MINIX 文件系统非常简单,所以适合用于教学使用。

1. MINIX 文件与目录

在 MINIX 文件系统中,以 minix2_inode 对象来描述一个文件。我们来看看 minix2_inode 的定义:们需要特别关注 minix2_inode 对象的 i_zone 字段,它就是用来记录属于当前文件的数据块编号。从定义来看,i_zone 是一个用于 10 个元素的整型数组,那么是否就说明 MINIX 的文件只能保存 40 KB 的数据呢?

答案是否定的,因为 MINIX 文件系统将 i_zone 数组分为 4 个部分:前 7 个元素直接指向保存数据的数据块编号,也就是数据会直接存储在这些数据块上,而第 8 个元素是一级间接指向,第 9 个元素是二级间接指向,第 10 个元素是三级间接指向。我们通过下图来说明这个关系:过这种多级指向的方式,一个 MINIX 文件就可以保存超过 40KB 的数据。

有描述文件的对象,那么也应该有描述目录的对象吧?在 MINIX 文件系统中,目录也是使用 minix2_inode 对象来描述的。那么怎么区分文件和目录呢?

在 minix2_inode 对象中有个 名为i_mode 的字段,它保存着 minix2_inode 对应的类型,普通文件使用 S_IFREG 标志来表示,而目录使用 S_IFDIR 来表示。所以从本质来看,目录也是一种特殊的文件。

普通文件的数据块保存的是文件的数据,那么目录的数据块保存的是什么?答案就是文件列表,而文件列表的每个表项使用 minix_dir_entry 对象表示,定义如下:

(编辑:应用网_丽江站长网)

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

    推荐文章
      热点阅读