Fork me on GitHub

cat userlist

任务

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

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

在LINUX系统中有一个重要的概念:一切都是文件。

其实这是UNIX哲学的一个体现,而Linux是重写UNIX而来,所以这个概念也就传承了下来。在UNIX系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。

这样带来优势也是显而易见的:
\1. 实现了设备无关性。
\2. UNIX 权限模型也是围绕文件的概念来建立的,所以对设备也就可以同样处理了。

它将磁盘块分为以下三个部分:

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

2. 写出Cat userlist的过程,要详述目录文件,i-node.数据块,要画图示意(假设块大小为4k, userlist的大小不小于10k,自己假设大小)

Cat userlist的过程:

  1. 打开,从目录找到userlist
  2. 从dentry结构体读出innod
  3. 从inode结构体读出i_block[]
  4. 按顺序组织i_block[]中的内容,输出到终端
  • inode包含信息:
    文件字节数
    文件类型
    文件权限
    文件的User ID
    文件的Group ID
    文件在磁盘中的位置
    文件的节点号
    文件链接数
    文件最后修改的时间
    文件最后使用(读取或执行)的时间
    文点自身最后改变的时间,如设置权限。![image-20221023192731803]
posted @ 2022-10-23 19:29  郭幸坤  阅读(30)  评论(0编辑  收藏  举报
1