34、EXT2 文件系统与块设备 I/O 缓冲管理详解

EXT2 文件系统与块设备 I/O 缓冲管理详解

1. 文件系统挂载与卸载操作

在文件系统操作中,挂载(mount)和卸载(umount)是重要的功能。

挂载操作步骤
1. 找到挂载点的 ino 和 minode:

ino = getino(pathname);
// get ino:
mip = iget(dev, ino);
// load its inode into memory;
  1. 检查挂载点是一个目录且未被占用,例如不是某个进程的当前工作目录(CWD)。
  2. 在挂载表项中记录新的设备和文件系统名称,并存储其 ninodes、nblocks、bmap、imap 和 inodes 起始块等信息,以便快速访问。
  3. 将挂载点的 minode 标记为已挂载(mounted flag = 1),并让其指向挂载表项,而挂载表项也指向挂载点的 minode。

卸载操作步骤
1. 搜索挂载表,检查文件系统是否确实已挂载。
2. 检查挂载的文件系统中是否有任何文件处于活动状态;如果有,则拒绝卸载。
3. 找到挂载点的内存中的 inode,将 minode 的挂载标志重置为 0,然后调用 iput() 释放该 minode。

可以用以下 mermaid 流程图表示挂载和卸载操作的流程:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值