cat userlist

任务列表

Linux文件系统的三层抽象是什么?

  • Linux文件系统的三层抽象是什么?
  • 写出Cat userlist的过程,要详述目录文件,i-node.数据块,要画图示意
  • 假设块大小为4k, userlist的大小不小于10k,自己假设大小

Linux文件系统的三层抽象
1.第一层抽象:从磁盘到分区
一个磁盘能够储存大量的数据,一个磁盘可以被划分成分区,每个分区可以看作是一个独立的磁盘。
2.第二层抽象:从磁盘到序列块
一个硬盘有一些磁性盘片组成。每个盘片的表面都被划分为很多同心圆,这些同心圆称作磁道,每个磁道又被进一步划分为扇区,每个扇区可以储存一定字节数的数据。扇区是磁盘上的基本储存单元。一个磁盘扇区编号的系统使得我们可以把磁盘视为一系列块的组合。
3.第三层抽象:块数组到三个区域的划分()
文件系统可以用来储存文件内容,文件属性和目录Unix把磁盘块分成了3个部分来储存上述信息。

Cat userlist的过程,详述目录文件,i-node.数据块,图示意

1.超级块:文件系统中第一个块被称为超级块。这个块存放文件系统本身的结构信息。比如,超级块记录了每个区域的大小,超级块也存放未被使用的磁盘块的信息。
2.i-node:超级块的下一个部分就是i-节点表。每个i-节点就是一个对应一个文件/目录的结构,这个结构它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一一个元素对应。系统给每个索引节点分配了一个号码,也就是该节点在数组中的索引号,称为索引节点号
3.数据区:文件系统的第3个部分是数据区。文件的内容保存在这个区域。磁盘上所有块的大小都一样。如果文件包含了超过一个块的内容,则文件内容会存放在多个磁盘块中。一个较大的文件很容易分布上千个独产的磁盘块中。

cat userlist过程
1.在目录中寻找文件名
文件名存储在目录文件中。内核在目录文件中寻找包含所在的记录对应编号的i-node节点
2.定位i-节点号并读取内容
内核在文件系统中的i-node区域找到i-节点(假设为50)。定位一个i-节点一些简单的计算,所有的i-节点号大小相同,每个磁盘块都包含相同数量的i-节点。为了提高访问效率,内核有可能将i-节点置于缓冲区中。i-节点包含数据块编号的列表
3.访问存储文件内容的数据块
通过以上调用构成,内核已经可以知道文件内容存放在哪些数据块上,以及它们的顺序。由于cat不断的调用read函数,使得内核不断将字节从磁盘复制到内核缓存区,进而到达用户空间
所有从文件读取数据的命令,比如,cat、cp、more、who等,都是将文件名传给open来访问文件内容,对open的每次调用都是先在目录中寻找文件名,然后根据目录中的i-节点号获得文件的属性,最终找到文件的内容。

示意图如下:

posted @ 2022-10-23 17:20  20201319吴向林  阅读(12)  评论(0编辑  收藏  举报