- 1
- 0
- 约3.3千字
- 约 11页
- 2026-08-24 发布于山东
- 举报
操作系统课程设计-一个简单的文件系统的详细设计
根目录是文件系统的入口点,它有一个固定的inode编号(例如inode0或1)。
三、关键功能设计与实现
3.1文件系统初始化(mkfs)
在使用SFS之前,需要对模拟磁盘进行格式化,即执行`mkfs`操作。
流程:
1.创建并初始化虚拟磁盘文件,将其大小设置为预设值。
2.初始化超级块:填写魔数、计算并设置总块数、块大小、各区域起始块号等。初始时,除引导块、超级块、块位图、inode区本身占用的块外,其余数据块均为空闲。
3.初始化块位图:将已占用的块(引导块、超级块、块位图自身、inode区)对应的位设置为1,其余设为0。
4.初始化inode区:创建根目录的inode,并将其标记为已使用。根目录的inode的`file_type`设为目录,`size`初始化为目录项大小的整数倍。
5.初始化根目录数据块:在根目录的数据块中,创建`.`(当前目录)和`..`(父目录,根目录的`..`指向自身)两个目录项。
3.2空闲块管理
采用块位图进行空闲块管理。
分配空闲块(alloc_block):
1.扫描块位图,寻找第一个值为0的位。
2.找到后,将该位设置为1。
3.更新超级块中的`free_blocks`计数。
4.返回找到的块号。
5.若未找到空闲块,返回错误。
释放块
原创力文档

文档评论(0)