- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验三 文件管理
一、实验目的
理解文件系统的主要概念及文件系统内部功能和实现过程。
二、实验内容
采用二级文件目录结构,编写程序实现文件系统的文件存储空间的管理、文件的物理结构、目录结构管理和文件操作。具体如下:
1、设计一个有m个用户的文件系统,每个用户最少可保存一个文件。
2、规定用户在一次运行中只能打开K个文件。
3、系统能检查键入命令的正确性,出错时应能显示出错原因。
4、对文件应能设置保护措施,如只能执行、允许读、允许写等。
5、对文件的操作设计提供一套文件操作:
CREATE建立文件;
DELETE删除文件;
OPEN打开文件;
CLOSE关闭文件;
READ读文件;
WRITE写文件。
三、实验要求
详细描述实验设计细想、程序结构及各模块设计思路。
详细描述程序所用数据结构及算法
给出测试用例及实验结构
为增加程序可读性,在程序中进行适当注释说明
认真进行实验总结,包括:设计中遇到的问题、解决方法和收获
实验报告撰写要求结构清晰、描述准确逻辑性强
四、实验过程
举例:主文件目录
mfd=record
username :string[maxlen];
files :array[1..K] of ufd;
ofiles :arrau[1..S] of uod
end;
用户打开文件目录表:
uod=record
filename:string[maxlen];
attrib:attrib;
len:integer;
status:(open,create);
rp,up:integer;
end;
用户文件目录:
ufd=record
fielname:string[maxlen];
attrib?ro,rw);
len:integer;
addr:integer;
end;
流程图:
开始
输入用户名
在MFD中找到该用户名
显示该用户名UFD中所有文件
初始化AFD
操作
命令
CREATE DELTET OPEN CLOSE READ WRITE
保护当前文件目录
结束
二、主要数据结构
界面采用VC6 MFC环境开发
#define MINFILE 1 //每个用户最少可保存一个文件
#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 Super
文档评论(0)