cat userlist
目录
任务
- Linux文件系统的三层抽象是什么?
- 写出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的过程:
- 打开,从目录找到userlist
- 从dentry结构体读出innod
- 从inode结构体读出i_block[]
- 按顺序组织i_block[]中的内容,输出到终端
- inode包含信息:
文件字节数
文件类型
文件权限
文件的User ID
文件的Group ID
文件在磁盘中的位置
文件的节点号
文件链接数
文件最后修改的时间
文件最后使用(读取或执行)的时间
文点自身最后改变的时间,如设置权限。![image-20221023192731803]