11章教材知识点
-
EXT2概述:
- EXT2是一种磁盘文件系统,用于存储和组织文件和目录。
- 支持文件和目录的权限、链接、文件系统的挂载和卸载等功能。
- 使用磁盘上的数据结构来组织文件和目录的存储。
-
EXT2数据结构:
- 虚拟磁盘:通过mkfs命令创建的EXT2文件系统。
- 虚拟磁盘布局:由超级块、块组描述符表、块位图、索引节点位图、索引节点表和数据块组成。
- 超级块:存储文件系统的全局信息,如文件系统的大小、块大小等。
- 块组描述符:存储每个块组的信息,如块位图、索引节点位图、索引节点表的位置等。
- 块位图:记录每个数据块的使用情况。
- 索引节点位图:记录每个索引节点的使用情况。
- 索引节点:存储文件或目录的元数据,如权限、大小、时间戳等。
- 数据块:存储文件或目录的实际数据。
- 目录条目:记录目录中的文件或子目录的名称和对应的索引节点号。
-
邮差算法:
- 用于查找目录中的文件或子目录的索引节点号。
- 邮差算法通过目录的索引节点号和偏移量计算出目标文件或子目录的位置。
-
遍历EXT2文件系统树:
- 从根目录开始,通过读取目录条目获取子文件或子目录的索引节点号。
- 根据索引节点号获取子文件或子目录的信息,继续遍历子目录,直到遍历完整个文件系统。
-
EXT2文件系统实现:
-
基本文件系统:提供对文件和目录的创建、删除、修改等操作。
-
1级文件系统:包括mkdir、creat、mkdir-creat、rmdir、link、unlink、symlink、readlink等功能。
- mkdir算法:创建一个新目录,并在父目录中添加一个新的目录条目。
- creat算法:创建一个新文件,并在父目录中添加一个新的目录条目。
- mkdir-creat的实现:如果要创建的目录或文件不存在,则先创建目录或文件,然后再执行相应的操作。
- rmdir算法:删除一个目录,并从父目录中删除相应的目录条目。
- link算法:创建一个硬链接,即在一个目录中创建一个新的目录条目,指向已存在的文件。
- unlink算法:删除一个文件,并从父目录中删除相应的目录条目,如果该文件有其他硬链接,则只删除目录条目。
- symlink算法:创建一个符号链接,即在一个目录中创建一个新的目录条目,指向另一个文件或目录。
- readlink算法:读取一个符号链接的目标文件或目录。
-
2级文件系统函数:包括open、lseek、close、读取普通文件、写普通文件、opendir、readdir等功能。
- open算法:打开一个文件,并返回文件描述符。
- lseek算法:设置文件读写指针的位置。
- close算法:关闭一个文件。
- 读取普通文件:从文件中读取数据,可以使用read函数。
- 写普通文件:向文件中写入数据,可以使用write函数。
- opendir算法:打开一个目录,并返回目录流。
- readdir算法:读取目录流中的下一个目录条目。
-
3级文件系统:包括挂载算法、卸载算法、交叉挂载点、文件保护、实际uid和有效uid、文件锁定等功能。
- 挂载算法:将一个文件系统挂载到另一个文件系统的某个目录下。
- 卸载算法:卸载一个文件系统。
- 交叉挂载点:将一个文件系统挂载到另一个文件系统的某个目录下,使得两个文件系统可以共享数据。
- 文件保护:通过文件权限和所有权来保护文件的安全性。
- 实际uid和有效uid:实际uid是进程的真实用户ID,有效uid是进程的有效用户ID。
- 文件锁定:通过文件锁定机制来防止多个进程同时修改同一个文件。
-
苏格拉底挑战