第4章 文件系统:编写pwd

本文详细介绍了Unix文件系统的目录树结构,包括目录和文件的概念、常用目录命令的使用方法,以及针对目录树的高级命令。深入探讨了Unix文件系统的内部结构,从磁盘到分区、块序列再到超级块、i-节点表和数据区的划分。同时,文章讲解了文件和目录的创建过程,以及cat命令的工作原理,揭示了i-节点在处理大文件中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

4.1 介绍

pwd命令显示在目录树中的当前位置。从树根到所处位置所经过的目录的序列被称做路径(path)。

4.2 从用户角度看文件系统

4.2.1 目录和文件

Unix系统中硬盘上的文件组成一棵目录树。每个目录能包含文件或其他的目录。

4.2.2 目录命令

  • mkdir:创建一个或多个目录
  • rmdir:删除一个或多个目录
  • mv:重命名或移动一个目录
  • cd:转移工作目录
  • pwd:打印出当前工作目录

4.2.3 针对目录树的命令

  • ls -R:列出指定目录及其子目录的所有内容在这里插入图片描述
  • chmod -R:用于修改文件的许可位权限,选项-R要求修改子目录中所有文件的许可权限
  • du:disk usage,该命令给出指定目录及其子目录下所有文件占用硬盘中数据块的总数在这里插入图片描述
  • find:在一个目录及其所有子目录中检索符合要求的文件和目录

4.3 Unix文件系统的内部结构

4.3.1 第一层抽象:从磁盘到分区

一个磁盘可被划分成分区,以便在一个大的实体内创建独立的区域。每个分区都可以看作是一个独立的磁盘。

4.3.2 第二层抽象:从磁盘到块序列

磁盘->磁道->扇区->存储一定字节的数据

4.3.3 第三层抽象:从块序列到三个区域的划分

Unix系统将磁盘块分成了3个部分:
在这里插入图片描述

  1. 超级块:存放文件系统本身的结构信息。例如:每个区域的大小,也存放未被使用的磁盘块的信息。
  2. i-节点表:存储文件的大小、所有者和最近修改时间等一些属性。所有的i-节点都有相同的大小,并且i-节点表是这些结构的一个列表。文件系统中的每个文件在该表中都有一个i-节点。表中的每个i-节点通过为止来标识。
  3. 数据区:文件内容保存在这个区域。

4.3.4 文件系统的实现:创建一个文件的过程

在这里插入图片描述
创建一个新文件的4个主要操作如下:

  1. 存储属性:文件属性的存储。内核先找到一个空的i-节点,上图中,内核找到i-节点47。内核把文件信息记录其中。
  2. 存储数据:文件内容的存储。内核从自由块列表中找出相应数目的块
  3. 记录分配情况
  4. 添加文件名到目录

4.3.5 文件系统的实现:目录的工作过程

目录的抽象模型是一个包含i-节点号和文件名的表。

(1)探讨目录内部

可通过ls -1ia查看目录内容:
在这里插入图片描述
输出的是文件名和对应的i-节点号。

(2)指向同一文件的多重链接

可以使用命令ls -i查看系统上任何一个文件的i-节点号。

4.3.6 文件系统的实现:cat命令的工作原理

(1)在目录中寻找文件名

在这里插入图片描述

(2)定位i-节点47并读取其内容

内核在文件系统中的i-节点区域找到i-节点47。

(3)访问存储文件内容的数据块

通过上述过程,内核已经可以知道文件内容存放在哪些数据块上,以及它们的顺序。由于cat不断调用read函数,使得内核不断将字节从磁盘复制到内核缓冲区,进而到达用户空间。
所有从文件读取数据的命令,如cat、cp、more、who等,都是将文件名传给open来访问文件内容。
open的每次调用都是先在目录中寻找文件名,然后根据目录中i-节点号获得文件的属性,最终找到文件内容。

4.3.7 i-节点和大文件

在这里插入图片描述
将存不下的块编号存放在数据区而不是i-节点。这些用于存放编号的块被称为间接块。相应的,会有二级间接块、三级间接块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值