实验八FAT12文件系统汇总.docx
《实验八FAT12文件系统汇总.docx》由会员分享,可在线阅读,更多相关《实验八FAT12文件系统汇总.docx(15页珍藏版)》请在冰豆网上搜索。
实验八FAT12文件系统汇总
上海应用技术学院
程序设计语言实验报告
实验名称
FAT12文件系统
实验序号
实验八
实验日期
姓名
学号
指导教师
专业
计算机科学与技术
班级
成绩
1、实验目的及要求
了解FAT12文件系统在软盘上的应用。
通过为EOS的FAT12文件系统添加写文件功能,加深对磁盘存储器管理原理的理解。
2、实验环境
WindowsXP;TevationOSLab。
三、实验内容
1准备实验
1.启动OSLab。
2.新建一个EOSKernel项目。
如图1.
图1
3.分别使用Debug配置和Release配置生成此项目,从而在该项目文件夹中生成完全版本的EOSSDK文件夹,如图2、图3。
图2
图3
4.新建一个EOS应用程序项目,如图4。
图4
5.使用在第3步生成的SDK文件夹覆盖EOS应用程序项目文件夹中的SDK文件夹.
2编写代码调用EOSAPI函数读取文件中的数据
使用OSLab打开本实验文件夹中的FileApp.c文件(将此文件拖动到OSLab窗口中释放即可)如图5所示。
图5
按照下面的步骤查看EOS应用程序读取文件中数据的执行结果:
1.使用OSLab打开在3.1中创建的EOS应用程序项目。
2.在“项目管理器”窗口中双击Floppy.img文件,使用FloppyImageEditor工具打开此软盘镜像。
3.将本实验文件夹中的a.txt文件添加到软盘镜像的根目录中。
打开a.txt文件查看其中的数据。
如图6图7所示。
图6
图7
4.点击FloppyImageEditor工具栏上的保存按钮,关闭该工具。
5.使用FileApp.c文件中的源代码替换EOS应用程序项目中的EOSApp.c文件内的源代码。
如图8。
图8
6.按F7生成修改后的EOS应用程序项目。
如图9。
图9
7.按F5启动调试。
自动运行EOS应用程序EOSApp.exe时,会由于输入的命令行参数无效而失败。
如图10。
图10
8.在EOS控制台中输入命令“A:
\EOSApp.exeA:
\a.txt”后按回车,EOSApp.exe会读取a.txt文件中的内容并显示在屏幕上。
如图11。
图11
9.结束此次调试。
如图12。
图12
3调试FAT12文件系统的读文件功能
FAT12文件系统的读文件功能是由EOS内核项目fat12.c文件中的FatReadFile函数完成的。
按照下面的步骤准备调试该函数:
1.使用Windows资源管理器打开在3.1中创建的EOS内核项目的项目文件夹,并找到fat12.c文件。
如图13。
图13
2.将fat12.c文件拖动到OSLab窗口中释放,打开此文件。
注意,一定要拖动到3.2中已经打开EOS应用程序项目的OSLab中(如图14),这样该OSLab就同时打开了EOS应用程序项目和EOS内核项目中的fat12.c文件,方便后面的调试。
图14
按照下面的步骤调试该函数:
1.取消注释EOSApp.c文件中的第62行,允许调试该EOS应用程序。
如图15。
图15
2.按F7生成。
如图16。
图16
3.按F5启动调试。
自动运行EOS应用程序EOSApp.exe时,会由于输入的命令行参数无效而失败。
如图17。
图17
4.在EOS控制台中输入命令“A:
\EOSApp.exeA:
\a.txt”后按回车,EOSApp.exe会读取a.txt文件中的内容。
此时OSLab会弹出一个调试异常对话框,并中断应用程序的执行。
如图18。
图18
5.选择“是”调试异常,调试会中断。
6.在读文件时调用的API函数ReadFile最终会调用FatReadFile函数,所以,在fat12.c文件的FatReadFile函数开始(第700行)添加一个断点。
7.按F5继续执行,在断点处中断。
如图19。
图19
4为FAT12文件系统添加写文件功能
由于写文件功能会涉及到为文件分配新的簇、修改文件大小等问题,所以这里首先完成一个最简单的情况:
向一个空文件中写入数个字节的数据。
1.使用OSLab打开3.1中创建的EOS内核项目。
2.从“项目管理器”窗口中打开源文件io/driver/fat12.c,目前fat12.c中的函数FatWriteFile(第782行)为空。
3.将本实验文件夹中的FatAllocateCluster.c文件拖动到OSLab窗口中打开(如图20),将该文件中FatAllocateCluster函数复制到fat12.c文件中FatWriteFile函数的前面。
在FatWriteFile函数中需要调用FatAllocateCluster函数来获得一个空闲簇。
图20
4.将本实验文件夹中的FatWriteFile.c文件拖动到OSLab窗口中打开(如图21),使用该文件中FatWriteFile函数的函数体替换fat12.c文件中FatWriteFile函数的函数体。
图21
5.在“项目管理器”窗口中双击Floppy.img文件,使用FloppyImageEditor工具打开此软盘镜像。
6.打开EOS应用程序项目文件夹,将Release文件夹中的EOSApp.exe(没有调试信息)添加到软盘镜像中。
7.将本实验文件夹中的a.txt、b.txt、c.txt和d.txt文件添加到软盘镜像中。
如图22。
图22
8.点击FloppyImageEditor工具栏上的保存按钮,关闭该工具
9.按F7生成修改后的EOS内核项目。
注意,要使用Debug配置。
10.按F5启动调试。
在EOS控制台中分别执行下面三组命令,查看写文件的结果:
分别如图23图24图25。
●输出a.txt文件内容:
A:
\EOSApp.exeA:
\a.txt
输出b.txt文件内容(无内容):
A:
\EOSApp.exeA:
\b.txt
将a.txt文件内容写入b.txt文件:
A:
\EOSApp.exeA:
\a.txtA:
\b.txt
输出b.txt文件内容:
A:
\EOSApp.exeA:
\b.txt
图23
●输出d.txt文件内容:
A:
\EOSApp.exeA:
\d.txt
将d.txt文件内容写入b.txt文件:
A:
\EOSApp.exeA:
\d.txtA:
\b.txt
输出b.txt文件内容:
A:
\EOSApp.exeA:
\b.txt
图24
●输出c.txt文件内容:
A:
\EOSApp.exeA:
\c.txt
将c.txt文件内容写入b.txt文件:
A:
\EOSApp.exeA:
\c.txtA:
\b.txt
输出b.txt文件内容:
A:
\EOSApp.exeA:
\b.txt
图25