如果无法跳转,将出现提示,指示没有目录(生成的目录不能跳转)(生成不了目录的原因)
1.实验目的:学习fat文件系统的组成
能够将您自己的程序应用于系统
熟悉DD、mount、umount等
2 需求描述
2.1基本要求:设计并实现目录列表功能,以显示当前目录中包含的文件信息
设计并实现了文件删除功能。当前目录中要删除的文件名用作删除指定文件的参数。请注意文件的隐藏、只读和其他系统属性
设计并实现文件创建功能,并使用要创建的文件名和文件大小作为参数来创建新文件
2.2改进需求,增加目录创建功能
增加删除目录功能:通常需要判断目录是否为空。如果目录不为空,则需要给出提示并删除其中包含的所有子目录和文件;如果目录为空,可以直接删除
添加对绝对路径和多级目录的支持:在这里,您需要解析输入目录路径字符串,然后逐级查找目录
对于UD:_函数,CF函数已得到改进,因此它可以将实际内容写入文件,并根据写入的内容计算文件的实际大小
对于UD:_ Ls,改进了函数以增加所有非根目录信息的读取
2.3完成
完成以下功能:
程序可以正常运行
您可以执行CF、DF、RM、MKDIR、rmdir、CD、LS和其他命令
CF可以通过外部输入更改内容,并支持输入重定向
在非根目录中,您可以找到该目录占用的所有集群
RM可以支持-R参数
支持所有指令解析和多级路径
支持读取和访问系统时间
已经纠正了几个错误
3 设计说明
3.1基本要求的实施说明
3.1.1程序的正常运行
首先,使用DD命令创建一个空文件。命令如下。
由于虚拟机的问题,使用了128M。无法读取512M或以上FAT16格式文件中的引导目录,并且无法执行测试。因此,所有实验均在128M的高度进行。
并且根据引导目录的内容改变头文件中的内容,从而可以正常启动。
3.1.2基本指令的执行
如上所述,可以正常实现LS、CF和DF。但是,原来的时间有问题,我再次修复了它。
3.2改进要求说明
3.2.1能够执行CF、DF、RM、MKDIR、rmdir、CD、LS和其他指令
首先,运行LS命令。现在,在根目录中创建一个文件。那么成功,DF,成功。然后,运行MKDIR命令创建一个文件夹。成功输入文件夹,在其中创建文件夹,然后跳出。
3.2.2多级目录标识
用于识别多级目录的各种命令的核心代码如上所述。其思想是跳转到目录以运行目标指令。如果无法跳转,将出现提示,指示没有目录。如果成功跳转并创建,则无论创建是否成功,都将跳回原始目录。跳转和跳回功能的屏幕截图如下。
实施情况如下:
利用上述效果,可以识别两种绝对路径和相对路径。并能成功完成创建目录、删除目录、创建文件、删除文件等功能。
3.2.3改进的FD_ Ls功能:
更改描述
原始FD_当查找子目录时,LS函数将仅查找一个扇区的内容。我们制造的USB磁盘大小为128M。因此,当我们在子目录中写入超过64个文件时,LS函数将无法显示超过64个的文件。因此,我对FD_不感兴趣。在LS函数中查找子目录的函数已修改。上半部分是原始代码。我在底部添加了一个while循环,以确定是否找到了最后一个扇区。如果是,跳出循环。如果没有,则继续遍历找到的下一个扇区,以输出该扇区中是否有文件,直到找到最后一个扇区。
遇到的问题
CF的改进
在本实验中,我们有两种改进的CF方法,第一种是通过外部输入添加文件内容,第二种是通过内部文件输入添加文件属性。
其效果如下:
上述内容的实现方法是将实值写入找到的空集群的对应数据区。
猫
为了检查文件内容是否正确并获得更完美的实验结果,添加了cat指令。
如图所示,CF创建的文件显示正确。
测试的优化设置
为了测试LS是否能够成功访问多个集群的文件,手动创建文件太慢,因此添加了bat命令以帮助测试。
输入两个整数创建一个文件,文件名为相应的间隔,大小始终为4。
如图所示,测试后可以访问多个集群的内容。
一个文件夹是32*512,一个集群是4*512,即一个文件夹占用8个集群。一个集群可以有64个目录项目,超过64个项目表示改进成功
LS的改进
由于以前的LS太长,当目录中有许多文件时不容易观察,因此它被更改为与原始系统相同的LS显示,-L是原始LS。
4 收获与思考
收到PPT后的第一周,我不知所措,不知道该怎么办。经过与同学们的学习和讨论,我逐渐明白我们需要做什么。然后按照书中的步骤一步一步地学习,检查是否可行,最后对脂肪有一定的了解。然后接收第二ppt。Ppt讨论了如何改进需求。调整误差花费了很长时间,并做出了许多改进。经过大家的努力,最终的产品效果还是非常令人满意的。
1c 已经纠正了几个错误
发表评论