文件管理实验报告.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
文件管理 一、实验目的: 1.了解os中文件的组织和管理。 2.熟悉文件中所用的数据结构。 二、实验要求: 1. 设计一个N个用户的文件系统,每个用户最多保存m个文件。 2. 限制用户在一次使用中只能打开L个文件。 3. 系统应能检查输入命令的正确性,出错能显示出原因。 4. 对文件必须设置保护措施,如只读、写、执行等。在每次打开时再次设置保护级别,即 可有二级保护。 5. 对文件的操作至少有以下几条命令 create:建文件 delete:删文件 open:打开文件 close:关闭文件 read:读文件 write:写文件 举例:主文件目录 mfd=record username :string[maxlen]; files :array[1..L] 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 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.DAT来记录,可以把VDISK.DAT看成是一个虚拟的磁盘,其头部是 FAT结构,用来记录各个用户和文件信息,紧接着是空闲 文件管理是操作系统中的核心组成部分,它负责管理和组织文件在存储设备上的存储,以及提供用户与文件交互的接口。在这个实验报告中,我们关注的是一个模拟的文件系统设计,旨在帮助理解实际操作系统中文件管理的基本原理。 实验的目标在于让学生了解文件在操作系统中的组织方式和管理方法,并熟悉文件系统中涉及的数据结构。实验的具体要求包括: 1. 设计一个可以容纳N个用户且每个用户最多可以保存m个文件的系统。 2. 用户在一次会话中只能打开L个文件。 3. 系统需要验证输入命令的合法性,并在出错时给出错误信息。 4. 实现文件的访问权限控制,如只读、读写、执行等,每次打开文件时都会重新设置这些保护级别。 5. 提供基本的文件操作命令,如创建、删除、打开、关闭、读取和写入。 实验中使用的主要数据结构包括: 1. 主文件目录(MFD):记录了所有用户的用户名及其对应的文件信息。每个用户有一个文件目录,包含用户可以打开的文件列表。 2. 用户打开文件目录表(UOD):记录用户当前已打开的文件,包括文件名、属性、长度、状态(打开或创建)以及读写位置等。 3. 用户文件目录(UFD):存储每个文件的详细信息,如文件名、属性(只读、写、执行)、长度和物理地址。 实验采用了虚拟磁盘的概念,使用一个名为VDISK.DAT的文件来模拟实际磁盘。磁盘的组织结构包括: 1. 头部的FAT(文件分配表)结构,记录了用户信息和文件信息,以及空闲块的链接。 2. 各个物理块(BLOCK),每个32字节,用作存储文件内容。 3. 使用空闲块成组链接法管理磁盘空间,确保有效利用。 4. 还有一个OpenList数组,用于追踪哪些文件被哪个用户打开。 此外,实验使用VC6的MFC(Microsoft Foundation Classes)环境进行界面开发,这允许用户通过图形界面与模拟文件系统交互。 实验流程包括: 1. 用户输入用户名。 2. 在MFD中查找用户名并显示其对应的UFD信息。 3. 初始化打开文件目录(AFD)。 4. 执行各种文件操作命令。 5. 操作后更新并保护当前文件目录。 6. 系统结束。 这个实验通过模拟实际文件系统的操作,让学习者深入理解文件系统的工作原理,包括文件的组织、存储、权限控制以及错误处理等方面,为理解实际操作系统中的文件管理打下坚实的基础。
剩余11页未读,继续阅读
- 粉丝: 192
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助