实现文件系统FAT12。
[toc]
1. 实验目的
FAT12大概是最简单的文件系统,搞清楚FAT12工作原理,可以窥见文件系统的原理:文件、目录、磁盘管理、文件系统布局。
2. 实验内容
在U盘上实现FAT12。
注:U盘需要自备,如果没有U盘,又不想买一个,可以用虚拟机(如VMware)来做。
实现思路:
(1)格式化磁盘
这一步,先通过磁盘一些分区工具来做。也欢迎同学将这部分作为挑战内容用代码实现。
(2)实现文件系统基本功能
- 打印当前目录下所有文件和目录名,类似于
ls
简易版 - 打印文件/目录的文件控制块
- 打印整个文件分配表
- 切换目录,类似于
cd
功能 - 创建文件、删除文件
- 创建目录、删除目录
(3)挑战性任务
自行实现格式化磁盘功能。
模板代码已下发,见目录os_exp/exp9_FAT12/
,仅作为参考,可自行安排自己的项目目录。
3. 实验要求
- 实验基本要求见:所有实验要求
- 截止时间:以课程派为准
- 实验报告提交:提交到课堂派,同时上传pdf和markdown文档,源码压缩包
4. 实验评分
满分20。具体评分如下:
- [x] 打印当前目录下所有文件和目录名,类似于
ls
简易版,4分 - [x] 打印文件/目录的文件控制块,4分
- [x] 打印整个文件分配表,4分
- [ ] 切换目录,类似于
cd
功能,4分 - [ ] 创建文件、删除文件,4分
- [ ] 创建目录、删除目录,4分
- [ ] 其他,视情况而定
- [ ] 挑战性任务:实现格式化磁盘功能,额外+10分
注:
- 前3项,是必须完成的,因为后续的功能测试会用到
- 从第四项开始,可以自行选择要实现的功能
以下行为,会被扣分:
- 抄袭,一经发现,视情况严重程度,倒扣[0, 20]
- 报告可读性差,倒扣[0, 20]
5. 建议思路
如果觉得这个实验无从下手,建议按以下步骤走:
- 理解FAT12原理,FAT12原理-详细版 ,真的不难,你静下心,好好阅读,理解:文件系统布局 + 文件 + 目录 + 磁盘管理
- 下载模板代码,跑起来,可以打印出第一个扇区的内容
- 参照模板代码中的打出出第一扇区的代码,写出打印文件分配表、根目录区内容的源代码,并对打印出来的内容进行分析(有点类似于协议的分析,每个字段表示什么含义)
- 完成文件/目录创建和删除功能
如果觉得还是有些乱,建议边完成上述步骤,边整理文档。哪里不懂,大胆问,不丢脸。
6. 其他
最后,感谢计算2113班李康炜同学为本次实验做了很多探索,也提供了一些模板代码。