




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
操作系统实习,南京工业大学信息学院计算机系,2,实验题目,文件管理系统的设计,实验目的,了解有关文件管理的知识; 理解FAT16的存储格式; 掌握文件管理系统的开发方法。,3,基本要求,目录操作命令: cd 改变当前目录 create del dir md rd ,设计并实现以下文件和目录系统操作命令:,4,文件操作命令: open write insert read close type copy ren attrib ,5,程序初始化时构造如图1所示的目录结构。,7,目录项(FCB)结构,struct FCB /每个目录项16个字节 char FileName11; /文件名最多10个字符且以0结尾 char Fattrib; /文件属性 short int Addr; /文件首块号 short int Fsize; /文件长度 ;,详细说明参见指导书,8,1表示目录,1表示系统,1表示隐藏,1表示只读,目录项中的属性字节:,9,根目录,本系统的根目录存储在130号盘块中,即存储在Disk1Disk30的盘块中。因每个盘块64B,每个目录项16B,故每个盘块可存储4个目录项,因此本系统根目录中的文件目录项及子目录项最多共计120个。 从31号盘块开始为文件区,用于存储文件及子目录。子目录中的文件目录项个数任意(即不受“最多120个”的限制),只要磁盘文件区有空余空间。,10,用户已打开文件表(UOF),设置一张“用户已打开文件表”(UOF),用于记录用户当前正在使用文件的情况。,struct UOF /定义用户打开文件表的结构 char fnamePATH_LEN; /文件全路径名 char attr; /文件属性,1=只可读;0=可读写 short int faddr; /文件的首块号 short int fsize; /文件大小(字节数) FCB *fp; /指向该文件的目录项指针 short int state; /状态:0=空表项;1=新建;2=打开 short int readp; /读指针,0=空文件 short int writep; /写指针 ;,本程序中,用户打开文件表用数组UOF uof32表示,即最多允许同时打开32个文件。,11,当前目录curpath数据结构,struct CurPath short int fblock; /当前目录的首块号 char cpathPATH_LEN; /当前目录路径名 ;,当前目录用全局变量CurPath curpath存储。 根目录的路径字符串cpath是“/”,首块号为1。,12,删除文件恢复表udtab数据结构,struct UnDel /恢复被删除文件信息表的数据结构 char gpathPATH_LEN; /被删除文件的全路径名(不含文件名) char ufnameFILENAME_LEN; /被删除文件名 short ufaddr; /被删除文件的首块号 short fb; /存储被删除文件块号的链表头指针 ;,本系统的被删除文件恢复表用全局数组udtab存储,定义为:UnDel udtab40; 退出系统时,该数组以文件名“UdTab2008.dat”存盘,以便下次启动时调入使用。,13,fb所指的盘块中记录了对应的被删除文件的所有盘块号(包括文件首块号)。由于只用一个盘块存储被删除文件的块号,因此只适用于盘块数不超过31的情况(以-1作为结束标记)。 功能完整程序“OS实验.exe“中已作了如下改进:,udtab表存于Disk的一片连续盘块空间; 修改了struct UnDel,使之包含FCB的全部信息,这样即使原先的目录项位置已被占用,仍可能恢复该文件; 文件的块号允许用多个盘块存储,即被删除文件长度不受最多31个盘块的限制。 盘块大小改为256B, UnDel表项128B,每个盘块存储2个表项, UnDel表占20个连续盘块。,14,全局变量ffbp和Udelp,short Udelp; 它是udtab表的第一个空表项的下标,系统初始化时为0。 short ffbp; 它是分配盘块时FAT表的起始指针(下标),这样使得分配盘块类似于分区存储管理的“循环首次适应”分配算法,这有利于被删除文件的恢复。 退出系统时, Udelp和ffbp保存到0号盘块Disk0中。 “功能完整程序”中,udtab表的首块号以及回收站recycled的首块号也存储在0号盘块中。,15,定义的若干符号常量,#define S 32 /假设最多同时打开32个文件 #define K 5000 /假设磁盘共有5000个盘块 #define SIZE 64 /假设磁盘的大小是64字节 #define CK 8 /命令分解后的段数 #define INPUT_LEN 128 /输入缓冲区长度 #define COMMAND_LEN 11 /命令字符串长度 #define FILENAME_LEN 11 /文件名长度 #define PATH_LEN INPUT_LEN-COMMAND_LEN #define DM 40 /恢复被删除文件表的表项数,16,命令行缓冲区char cmdINPUT_LEN; 用于存储输入的命令。 全局数组char comdCKPATH_LEN;用于存储分解命令后各个参数。其中CK=8,因此本系统的命令最多允许有8段。 执行语句k=ParseCommand(cmd);分解命令后 comd0中为命令字符串; comd1中为命令的第一个参数; comd2中为命令的第二个参数; comd7中为命令的第七个参数; k=参数个数。 例如,输入的命令为copy test box,则分解该命令后 comd0=“copy“,comd1=“test“,comd2=“box“ k=2,17,主程序的简单流程如下:,等待输入命令cmd,显示提示符,调用ParseCommand(cmd)分解命令,调用ExecComd(k)执行命令,ParseCommand(cmd)中以空格或“/“作为分隔符来分解命令; ExecComd(k)中用comd0匹配命令表,然后执行匹配的命令或报错。,18,ExecComd(k)函数的程序清单示意如下:,19,本系统命令不区分大小写,但文件名和子目录名区分大小写。同学们很容易修改程序,使后者也不区分大小写。 同学们在自己编写程序前,除了搞清程序的总体结构、读懂有关命令函数外,还应仔细读懂一些重要的函数,例如FindPath()、FindFCB()等与目录查找有关的函数。 例如执行命令:,copy /usr/user/abc /bin/xyz,此命令的功能是将根目录下usr子目录中user子目录中的文件复制到根目录下bin子目录中,新文件名为xyz。命令执行过程中要调用目录查找函数。,20,实验任务,指导书的4.14.17实验任务中,每个学生可在4.14.8中任选6项任务(浦计学生可任选4项)。4.94.17为“选做内容”,能力较强的学生可在完成上述必做题目基础上,选择几项“选做”任务并努力完成之。 4.14.17中的各项功能,在“OS实验.exe”程序都已实现,同学们可运行该程序,观察各项功能的执行情况并模仿之。,21,学生应提交的实验材料,每个学生至少应提交如下三种材料:,实验报告 源程序清单 程序测试、运行的结果,上述材料以电子文档形式发送到下列邮箱中: qjian
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 惠州消防安全知识培训课件
- 情感剧创作思路探究
- 2026届江西省玉山县二中高一化学第一学期期中检测试题含解析
- 2026届江苏南京玄武区化学高一上期中调研模拟试题含解析
- 同学聚会活动背景图片策划方案
- 中继间技术措施的方案
- 清明节策划活动的方案
- 网球教学考试题及答案
- 现代日语面试题及答案
- 日语阅读试题及答案
- 2024至2030年中国品牌战略咨询服务市场现状研究分析与发展前景预测报告
- 2022版新《物理》义务教育课程标准教师培训测试题附答案
- 辽宁省丹东市2023-2024学年八年级下学期期末数学试卷(含答案)
- TSG+11-2020锅炉安全技术规程
- 从高考改卷谈对物理教学的几点启示
- DB32-T 4757-2024 连栋塑料薄膜温室建造技术规范
- 个人征信查询授权书范本
- 2024新版实习律师协议
- 县乡教师选调进城考试《教育心理学》题库含完整答案【全优】
- 2024年莆田辖区新华书店招聘笔试参考题库附带答案详解
- 初中化学酸碱中和反应省公开课一等奖全国示范课微课金奖课件
评论
0/150
提交评论