【CO003】操作系统笔记7 —— 文件系统(File System)

笔者:YY同学

生命不息,代码不止。好玩的项目尽在GitHub



OS 与 FS

  1. OS 不等于 FS。
  2. OS 支持 FS,基本上每个 OS 至少有一个独立的文件系统,当然也可以同时支持多个 FS。
  3. 同一个 FS 可以用于多个 OS 上。
  4. 用户通过 OS 的 systemcall 去调用 FS 操作。

存储设备(SD)与 FS

  1. SD 不等于 FS。
  2. FS 必须安装于 SD 之上,但是一个 SD 可以同时有多个 FS,也可能一个 FS 都没有。
  3. SD 不需要知道 FS 的安装细节,只需要通过 OS 的指令将数据存入 FS。

File 存储 vs Memory 存储

  1. 相比之下,Memory 存取更快,但是进程结束后内存消失。
  2. File 存储提供长期的信息存储,即使进程结束了也不会消失;并且 File 具有共享对象,这保证了多个进程访问的并发性。

路径名 vs 文件名

  1. 路径名(Pathname)在整个 FS 中唯一确定。因为路径名是 key,帮助 OS 找到内存地址,获取文件属性和文件内容。
  2. 文件名(Filename)在整个 FS 中不唯一,但在当前路径下唯一。
    在这里插入图片描述

文件属性(File Attribute)

文件由两个重要部分组成:文件属性和文件内容。文件属性是独立于 FS 而不是 OS,可以使用命令 ls -l 查看。
在这里插入图片描述
在这里插入图片描述


文件操作

1. 打开文件:(只涉及路径名和文件属性)

  1. 进程提供路径名给 OS。
  2. OS 查找文件属性,在磁盘中定位文件。
  3. 磁盘返回文件属性。
  4. OS 将文件属性于文件描述符(File Descriptor)关联。
  5. OS 将关联好的文件描述符返回至进程中。

2. 读取文件:

  1. 进程提供 FD 给 OS。
  2. OS 查找文件属性并且在磁盘中定位相关数据。
  3. 磁盘返回数据。
  4. OS 将数据存入缓冲区(buffer)。

3. 写文件:
一般会用到文件写的操作,因为写文件涉及磁盘空间分配与销毁,这一定程度上取决于 FS 的设计。


4. 创建文件:
文件创建的本质就是创建路径,只是创建进入路径的指针节点(entry),不分配空间。


5. 删除文件:
文件删除是作创建文件相反的操作,删除已经创建的路径节点。


路径遍历(Directory Traversal)

路径是一种特殊的文件,有文件内容,根据 FS 不同也有不同的文件属性。路径遍历一般会在一下三种情况下被调用:1.打开文件、2.执行程序、3.使用 dirls 等命令列印当前路径内容。

遍历步骤:

  1. 获取路径名,以 /bin/ls 为例。
  2. OS 会分割转义符,先在 root 下遍历 bin 开头的文件,找到后返回该路径。
  3. OS 获取 /bin 文件下的文件属性,然后继续遍历 ls,以此类推,直至到达目标路径。
  4. 磁盘返回目标路径文件,结束遍历。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值