文件管理实验报告文件管理实验报告
昆明理工大学信息工程与自动化学院学生实验报告
( 2011 —2012 学年 第 二 学期 )
课程名称:操作系统 开课实验室:信自楼444 2012 年5 月28日
年级、专业、班计科101学号201010803116姓名李力成绩实验项目名称文件管理指导教师杨云飞教师评语
教师签名:
年 月 日一、实验目的
用编写和调试一个简单的文件系统,模拟文件管理的。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。要求设计一个的文件系统,。 开始
输入用户名
在MFD中找到该用户名
显示该用户名UFD中所有文件
初始化AFD
操作
命令
CREATE DELTET OPEN CLOSE READ WRITE
保护当前文件目录
结束
主要数据结构
界面采用VC6 MFC环境开发
#define MAXFILE 20 //每个用户最多保存20个文件
#define MAXUSER 10 //假想文件系统最多支持的人数
#define BLOCKSIZE 32 //虚拟磁盘中物理块为每块32字节
#define DISKSIZE BLOCKSIZE*1000 //虚拟磁盘容量为1000*32=32K
struct UFD //说明文件项的结构数组
{
char FileName[15];
char Time[16]; //文件建立或修改时间 如2003/5/6 12:00
bool IsExist; //文件是否存在,删除时标为0
bool IsShared; //共享标记,共享文件可被其它用户所访问
bool AttrRead; //文件是否可读
bool AttrWrite; //文件是否可写
bool AttrExecute; //文件是否可执行
HTREEITEM treeNode; //用于树控件显示的结点句柄
USHORT FileLen; //文件占用字节数
USHORT BlockNum; //文件占用的物理块数
USHORT FileLink[100];//文件物理块地址数组,每块32字节,限定一个文件最大100*32=3200字节
};
struct MFD
{
char UserName[10]; //主目录用户名
bool IsExist; //该用户否存在
UFD ufd[MAXFILE]; //用户文件数组
USHORT nItem;//UFD个数
};
struct HEADBLOCK
{
BYTE pStack; //堆栈指针
SHORT pBlock[10]; //块号 pBlock[10]是下一个盘块号逻辑地址
};
struct BLOCK //虚拟磁盘的物理块数据结构
{
union{
BYTE block[32]; //一块为32字节
HEADBLOCK HeadInfo;
};
};
struct FAT
{
BLOCK SuperBlock; //超级块,指示第一个空闲块逻辑号
USHORT MaxOpen; //该用户同时可打开的最大文件数
USHORT UserNum; //最户数
MFD Mfd[MAXUSER]; //最多可支持10个用户
};
//空闲块成组链接法
bool OpenList[MAXUSER][MAXFILE]; //描述文件是否打开的布尔型数组
FAT FileFAT; //描述文件记录项的FAT结构
CFile FATIO; //负责和VDISK.DAT打交道的文件句柄
CString CurrentUser; //当前登录的用户名
Int CurrentID; //前前登录的用户标识号
说明:本实验采用模拟文件结构的方法,把记录用户帐号,用户文件和磁盘块的信息用当前目录下的VDISK.