文件管理实验报告.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页未读,继续阅读
- 粉丝: 199
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 447基于苹果手机ios图书管理系统毕业课程源码设计
- java swing mysql实现的酒店管理系统项目源码+数据库+实验报告
- 448苹果手机ios音频录音播放demo源程序毕业课程源码设计
- ldpc 码,使用近似下三角编码方式 如图所示 matlab运行版本2016b 随机产生的信号经过bpsk调制,通过awgn信道,最后计算得到误码率曲线 可以采用多次蒙特卡洛仿真使得曲线更光滑
- 00898互联网软件应用与开发 电子教案和题库汇总
- JavaScript编程语言:从入门到深入探讨其发展历程、语法特性和广泛应用领域
- 全面解析JavaScript: 动态类型语言特性及其在前后端的应用
- C#视觉工程项目联合visionpro编程,6通道相机独立检测,多线程
- java swing mysql实现的酒店管理系统项目源码 +数据库+文档说明
- 449苹果手机ios基于GPS定位Demo源程序毕业课程源码设计
- 电网不对称故障下VSG峰值电流限制的柔性不平衡控制(文章完全复现) 提出一种在不平衡运行条件下具有峰值电流限制的可变不平衡电流控制方法,可灵活地满足不同操作需求,包括电流平衡、有功或无功恒定运行(即
- 基于在线评测系统的平方数及其倍数解析 - 编程实例
- Java期末大作业 酒店管理系统源代码+设计报告(95分以上项目)
- 自适应的永磁同步电MRAS无位置传感器控制 sinulink仿真 MRAS无传感器控制 交流异步电机 自适应算法实现PMSM的转子速度与位置的辨识,采用矢量控制,构建出PMSM的无传感器控制系统
- 450苹果手机ios邮件发送demo源程序毕业课程源码设计
- 三菱PlC程序大型项目QCPU+QD77MS16 项目说明如下: 1.包含一套完整的电气开发系统资料(包含plc程序,触摸屏程序,伺服模块设置程序,程序开发地址规划表) 2.这套开发程序是用一