其他分享
首页 > 其他分享> > 第十一章学习笔记

第十一章学习笔记

作者:互联网

第十一章 EXT2文件系统

1.EXT2文件系统

2.EXT2文件系统数据结构

mke2fs [-b blksize -N ninodes] device nblocks

在设备上创建一个带有nblocks个块(每个块大小为blksize字节)和ninodes个索引节点的EXT2文件系统。

3.邮差算法

4.遍历算法

  1. 读取超级块;
  2. 读取块组描述符块(1+s_first_data_block),以访问组0描述符;
  3. 读取InodeBeginBlock,获取/的索引节点,即INODE#2;
  4. 将路径名标记为组件字符串,假设组件数量为n;
  5. 从3中的根索引节点开始,在其数据块中搜索name[0];
  6. 使用索引节点号ino来定位相应的索引节点。Ino从1开始计数,使用邮差算法计算包含索引节点的磁盘块及其在该块中的偏移量;
  7. 由于5~6步将会重复n次,所以最好编写一个搜索函数。

5.EXT2文件系统的实现

  1. 是当前运行进程的PROC结构体。在实际系统中,每个文件操作都是由当前执行的进程决定的。每个进程都有一个cwd,指向进程当前工作目录(CWD)的内存索引节点。它还有一个文件描述符数组fd],指向打开的文件实例。
  2. 是文件系统的根指针。它指向内存中的根索引节点。当系统启动时,选择其中一个设备作为根设备,它必须是有效的EXT2文件系统。根设备的根索引节点(inode#2)作为文件系统的根(1)加载到内存中。该操作称为“挂载根文件系统”。
  3. 是一个openTable条目。当某个进程打开文件时,进程fd数组的某个条目会指向openTable,openTable指向打开文件的内存索引节点。
  4. 是内存索引节点。当需要某个文件时,会把它的索引节点加载到minode 槽中以供使用。因为索引节点是唯一的,所以在任何时候每个索引节点在内存中都只能有一个副本。在minode中,(dev,ino)会确定索引节点的来源,以便将修改后的索引节点写回磁盘。refCount字段会记录使用minode的进程数。
    dirty字段表示索引节点是否已被修改。挂载标志表示索引节点是否已被挂载,如果已被挂载,mntabPtr将指向挂载文件系统的挂载表条目。lock字段用于确保内存索引节点一次只能由一个进程访问,例如在修改索引节点时,或者在读/写操作过程中。
  5. 是已挂载的文件系统表。对于每个挂载的文件系统,挂载表中的条目用于记录挂载的文件系统信息,例如挂载的文件系统设备号。在挂载点的内存索引节点中,挂载标志打开,mntabPtr指向挂载表条目。在挂载表条目中,mntPointPtr指向挂载点的内存索引节点。

6.基本文件系统

  1. type.h文件
  2. global.c文件
  3. mount-root文件

7.1级文件系统函数

  1. mkdir算法
  2. creat算法
  3. mkdir-creat的实现
  4. rmdir算法
  5. link算法
  6. unlike算法
  7. symlink算法
  8. readlink算法

8.2级文件系统函数

  1. open算法
  2. lseek
  3. close算法
  4. 读取普通文件
  5. 写普通文件
  6. opendir-readdir

9.3级文件系统函数

  1. 挂载算法
  2. 卸载算法
  3. 交叉挂载点
  4. 文件保护

10.实践

标签:EXT2,第十一章,文件系统,笔记,学习,索引,算法,挂载,节点
来源: https://www.cnblogs.com/zhangwenying/p/15415795.html