EXT2文件系统:挂载、卸载、保护与缓冲管理详解
1. 文件系统挂载操作
文件系统挂载操作是将一个文件系统连接到当前文件系统树中的特定挂载点。以下是挂载操作的详细步骤:
1.查找挂载点的inode和内存inode:c ino = getino(pathname); // get ino: mip = iget(dev, ino); // load its inode into memory;
2.检查挂载点:确保挂载点是一个目录且不忙,例如不是某个进程的当前工作目录(CWD)。
3.记录新设备和文件系统信息:在挂载表项中记录新设备和文件系统名称,存储其inode数量、块数量、块位图、inode位图和inode起始块等信息,以便快速访问。
4.标记挂载点内存inode:将挂载点的内存inode标记为已挂载(mounted flag = 1),并让其指向挂载表项,挂载表项也指向挂载点内存inode。
2. 文件系统卸载操作
卸载操作是将已挂载的文件系统从挂载点分离。卸载操作的算法如下:
1.搜索挂载表:检查文件系统是否确实已挂载。
2.检查活动文件:检查已挂载的文件系统中是否有任何文件处于活动状态。如果有,则拒绝卸载。
3.重置挂载点内存inode