知识点总结:
十一章EXT2系统
EX2文件系统数据结构
创建虚拟硬盘
mke2fs [-b blksize -N ninodes] device nblocks
虚拟磁盘布局
Block#0:引导块
超级块
Block#1
容纳整个文件系统的信息
超级块的重要字段:
u32 s_inodes_count://文件系统中节点总数
u32 s_blocks_count://文件系统中块总数
u32 s_r_blocks_count://为超级用户保留的块数
u32 s_free_blocks_count: //文件系统中空闲块总数
u32 s_mtime://文件系统的挂接时间
u32 s_wtime://最后一次对该超级块进行写操作的时间
u32 s_magic ://魔数签名,用于确定文件系统版本的标志
u32 s_inodes_per_group://表示每个组块的inode数目,查找文件inode所在块的位置很重要
u32 s_mnt_count://文件系统挂接计数
u32 s_max_mnt_count://文件系统最大挂接计数
u32 s_state://文件系统的状态
块描述符
Block#2
块和索引节点位图
BLOCK#8:块位图
BLOCK:9:索引节点位图
索引节点
BLOCK#10:索引节点
直接块
间接块
双重间接块
三重间接块
数据块
紧跟在索引节点块后面的是文件存储数据块
目录条目
包含dir_entry结构
邮差算法
Linear_address LA = N*block + house;
Block_address BA = (LA/N,LA%N);
C语言中的Test-Set-Clear位
C语言结合使用邮差算法和位屏蔽来进行下面的位操作
将索引节点号转换为磁盘上的索引节点
编程实例
3级文件系统函数
挂载算法
mount filesys mount_point
可将某个文件系统挂载到mount_point目录上
卸载算法同理
卸载算法
交叉挂载点
向下遍历
向上遍历
文件系统项目拓展
多个组-4KB大小块-管道文件-I/O缓冲
苏格拉底挑战