高级操作系统实验报告课程设计(doc 30页).doc

上传人(卖家):欢乐马 文档编号:279461 上传时间:2020-02-23 格式:DOC 页数:30 大小:487KB
下载 相关 举报
高级操作系统实验报告课程设计(doc 30页).doc_第1页
第1页 / 共30页
高级操作系统实验报告课程设计(doc 30页).doc_第2页
第2页 / 共30页
高级操作系统实验报告课程设计(doc 30页).doc_第3页
第3页 / 共30页
高级操作系统实验报告课程设计(doc 30页).doc_第4页
第4页 / 共30页
高级操作系统实验报告课程设计(doc 30页).doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、 高级操作系统实验高级操作系统实验 报告报告 姓 名: 学 号: 专 业: 任 课 教 师: 2014 年 01 月 18 目目 录录 一、课程设计题目和目的一、课程设计题目和目的 1 二、课程设计要求二、课程设计要求 1 三、程序设计思想三、程序设计思想 1 四、文件系统的实现四、文件系统的实现 1 1.数据结构设计 . 1 2.程序功能图 . 2 3.实体关系图 . 3 4.数据流图 错误错误! !未定义书签。未定义书签。 5.程序流程图 . 3 (1) 建立文件:create(文件名,记录长度) . 4 (2) 写文件:write(文件名,开始位置,字符串) 5 (3) 读文件:read

2、(文件名,开始位置,长度) . 6 (4) 显示文件所有内容 type(文件名) . 错误错误! !未定义书签。未定义书签。 (5) 删除文件 delete(文件名) 错误错误! !未定义书签。未定义书签。 (6) 重命名文件 ren(文件名,新文件名) . 错误错误! !未定义书签。未定义书签。 (7) 查询文件属性 ask(文件名) . 错误错误! !未定义书签。未定义书签。 (8) 关闭文件 close(文件名) . 错误错误! !未定义书签。未定义书签。 五、程序运行结果及分析五、程序运行结果及分析 8 六、课程设计总结六、课程设计总结 10 七、参考文献七、参考文献 11 八八、附录

3、、附录 12 北京联合大学 第 1 页 共 30 页 一、课程设计题目和目的 通过模拟文件系统的实现, 深入理解操作系统中文件系统的理论知识, 加深对教材中的重 要算法的理解。 同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合 运用各专业课知识的能力。 二、课程设计要求 通过组长分工,我主要完成了如下几个功能的操作: 1创建文件:从命令中得到文件名,得到该文件的文件长度,建立文件。修改目录表。 4读文件:read 文件名 显示开始字节 显示的字节数 ,直接显示所需要的字节 数。 5写文件:write 文件名 插入的位置 插入的内容 6修改属性:修改文件属性 文件名,文件权

4、限,文件长度等。 三、程序设计思想 阅读操作系统方面的书籍,了解操作系统的文件系统原理。结合分析课程设计要求, 确定实体以及它们之间的关系。实体关系有三张表(磁盘空间分配表、文件表、打开文件 表)、一个模拟磁盘的数组、命令服务和用户构成。用户负责输入命令。命令服务实现命 令的解释、命令检查、命令帮助以及调用相关模块执行相应的命令功能。 文件夹打开是则把文件夹名称及其地址压入打开文件夹栈,文件关闭则把文件夹名称及其地址从 打开文件夹栈中抛出。 文件打开则把文件的名称及其父指针写到文件列表同时置文件打开标志为 1,文件关闭则把文件 从打开列表中删除,同时置文件打开指针为 0,文件读取和写入都要检查

5、文件是否在文件打开列表中, 未打开文件不能读写,只读文件不能写,只写文件不能读。 文件夹和文件创建,文件夹和文件的创建首先检验目录是否为空,为空则把文件夹或文件连接到 该目录下,不为空则把检查目录下是否有同名文件夹或文件,有则提示创建不成功,没有则把文件夹 或文件连接到该目录下的最后一个子节点,作为它的兄弟节点。 文件夹和文件的删除,文件夹下没有打开的文件或文件没有打开才能删除,否则删除失败,删除 文件夹时利用了中序历遍来删除子树。 四、文件系统的实现 1.数据结构设计 通过分析课程设计要求,具体设计出如下数据结构: 北京联合大学 第 2 页 共 30 页 typedef struct uof

6、 /文件属性 char filename14; /文件名字 int mode; /文件的权限 0-readonly;1-writeonly;2-read/write int length; /文件长度 int addr; /物理块号 int state; /0-建立,1-建立 int readptr; ; 通过结构体,将文件名字、文件在磁盘的开始位置、文件长度、文件最大长度、文件 类型、创建时间结合在一起。文件类型,本模拟程序使用 txt 类型。设置一个线性表 来存储文件。 2.程序功能图 文件系统提供的文件操作有建立文件(create)、删除文件(delete)、条件读取文件 (read)、

7、写入文件(write)、查询文件的属性(ask)、显示文件所有内容(type)、重命 名文件(ren)、关闭文件(close)。可以通过键盘输入命令来模拟文件的操作。通过 exit 命令退出程序。 模拟文件系统 创 建 文 件 删 除 文 件 条 件 读 取 写 入 文 件 查 询 属 性 显 示 内 容 显 示 目 录 重 命 名 文 件 关 闭 文 件 北京联合大学 第 3 页 共 30 页 3.实体关系图 命令服务使得用户能够输入命令,在需要时提供命令的帮助。同时能够分析命令,调用 相应的命令模块对模拟磁盘、磁盘空间分配表、文件表、打开文件表进行操作。磁盘空间分 配表记录模拟磁盘的使用情

8、况。文件表记录文件的信息和在磁盘里的位置等信息。打开文件 表记录已打开的文件,对应文件表中的文件信息,和文件表里的文件节点类似,记录了文件 在模拟磁盘中的信息。 4.程序流程图 模拟文件系统提供的文件操作有建立(create) ,读取(read) ,显示(type) ,删除(detele) , 写入(write),关闭(close),重命名(ren)和查询(ask)。在模拟程序中可从键盘上输入文件操作 命令来模拟各用户程序中所调用的各种文件操作,用一个结束命令(exit)停止程序的执行。 用 户 命令服务 模拟磁盘 磁盘空间分 配表 文件表 打开文件表 北京联合大学 第 4 页 共 30 页

9、(1) 创建文件:create(文件名,记录长度) 模拟文件系统进行“创建文件”的处理流程如下: 开始 系统格式化 Y/N 输入命令 命令表中有该命令? 分析命令 显示:命令帮助 无 创建 删除 读取 显示 重命名 写入 查询 列表 关闭 退出程序(exit) 执行命令 执行命令 北京联合大学 第 5 页 共 30 页 (2) 写文件:write(文件名,开始位置,字符串) 模拟文件系统进行“建立文件”的处理流程如下: 开始 查询文件表 文件表中有名字? 返回 有 显示重命 申请磁盘空间 空间申请成功? 显示失败 否 返回 无 在磁盘分配表中登记 登记:长度=0,最大长度=申请长度, 开 始位

10、置申请节点位置 空闲情况占用 在文件表中登记 登记:长度=0,最大长度=建立长度, 开 始位置分配位置 文件类型txt,时间当前时间 在打开文件表中登记 登记:信息和文件表中类似 显示创建成功 返回 北京联合大学 第 6 页 共 30 页 (3) 读文件:read(文件名,开始位置,长度) 模拟文件系统进行“读取文件”的处理流程如下: 开始 查询打开文件表 查询文件表 在打开文件表里? 不在 在文件表里? 显示无文件 返回 不在 写进模拟磁盘 在 在 读取文件记录 write 参数合法? 合法 显示成功 返回 显示参数非法 非法 北京联合大学 第 7 页 共 30 页 开始 查询文件表 在打开

11、文件表里? 不在 在文件表里? 显示无文件 返回 不在 在 在 读取文件记录 read 参数合法? 非法 显示参数非法 返回 根据参数读取模拟 磁盘里的记录 返回 合法 北京联合大学 第 8 页 共 30 页 五实验程序说明: 1.创建文件: 2.打开文件: 北京联合大学 第 9 页 共 30 页 3.写文件: 4.修改文件属性: 北京联合大学 第 10 页 共 30 页 六、课程设计总结 通过本次的课程设计,使我能够正确运用操作系统课程中所学的基本理论和知识,加深 了对文件系统基本概念的理解,以及磁盘文件系统的文件操作。还有让我感受挺深的是对软 件工程方法的应用。设计一个软件,先要做好需求分

12、析,这一点很重要,如果没有分析好需 求,到软件设计的最后,发现所做的功能不符合要求,那么一切都得重做,前面所有的努力 都付诸东流。在程序设计的开始,由于分析工作做得不够深入和细致,吃了点小苦头。对于 这样一个小设计来说,都会吃苦头,要是大工程更是无法想像,有可能会项目失败。以后得 加强对软件工程的学习。另外在运用 C 语言的时候,感觉有点生疏,在组织语言时时而出错, 在编程和调试的过程中,经常会出现意想不到的问题,并非每个问题都可以从相关资料中找 到解决方法,有些问题是无法预料到的,这就需要通过自己理性的分析得出问题的解决方案。 在设计过程中,查询了不少相关资料,不断的发现问题、提出问题、解决

13、问题。在对自己 所编写的源程序段的纠错的过程中,使我更好的理解了操作系统中文件系统的理论知识,同 时在编程时用到了模块化的设计思想,这种编程方法可以使我们的编程变的更简单,可以使 我们的查错与纠错变的更方便。总的来说通过这次的设计的学习使我学到了很多在平时的学 习中学不到的很多东西,通过这次课程设计,使我对操作系统和编程产生兴趣,我想我会在 这条路上继续前进下去。我相信,只要不断的严格要求自己,注意培养自己的思维能力,就 一定会有更大更辉煌的发展和提高。 北京联合大学 第 11 页 共 30 页 七、参考文献 1美Abraham Silberschatz Peter Baer Galvin G

14、reg Gagne 郑扣根 译.OPERATING SYSTEM CONCEPTSSixth Edition 操作系统概念.高等教育出版社,2004,01 2(美)Roger S.Pressman 著 梅宏 译.软件工程-实践者的研究方法.机械工业出版 社,2002,09 3蔡启先.C 语言程序设计教程(第二版).重庆大学出版社,2003,07 4朱战立.数据结构.西安电子科技大学出版社,2003,05 北京联合大学 第 12 页 共 30 页 八、附录 1.程序源代码及注释 / / 编译工具:Visual c+ 6.0 / / / / 作者:小楚*smill 、蓝色的天空 / / 邮件:qv

15、b20974151 / / / / 复制、传播请保留作者信息,谢谢! / / / / #include #include #include #include #include void fileCreate(char *fileName,int fileLenght); /创建文件 void fileDel(char *fileName); /删除文件 void fileRead(char *fileName,int postion,int lenght); void fileWrite(char *fileName,int position,char *s); /函数声明 void file

16、Ask(char *fileName); /查询文件属性 void fileType(char *fileName); /显示文件内容 void fileRen(char *fileName,char *newName); /重命名文件 void fileDir(); /列出所有文件 void fileClose(char *fileName); /关闭一个文件 int requestDisk(int *startPosition,int *maxLength); /分配磁盘空间 / /模拟磁盘空间 char disk10000; / /磁盘空间管理 struct freeDiskTable

17、int start; /开始位置 int length; /占用长度 int maxLength; /最大长度 int useFlag; /使用标志,1 为占用,0 为空闲 ; / /文件表 struct fileTable 北京联合大学 第 13 页 共 30 页 char fileName20; /文件名字 int start; /开始位置 int length; /文件长度 int maxLength; /最大长度 char fileKind8; /文件种类,此默认为 txt struct tm *timeinfo; /文件创建时间 ; / /打开文件表 struct openFileT

18、able char fileName20; /文件名字 char fileKind8; /文件类型 int start; /文件开始位置 int length; /文件长度 int maxLength; /最大长度 int openCount; /打开文件的进程数 struct tm *timeinfo; /文件创建时间 ; / typedef struct freeDiskTable LinDataType; /定义链表的数据类型 #include “LinList.h“ /链表操作集合 SLNode *freeDiskTableHead; /定义磁盘分配表链表 头指针 #define Ma

19、xSize 100 /定义线性表 最大长度 typedef struct fileTable SeqDataType; /定义线性表数据类型 #include “SeqList.h“ /线性表操作集合 SeqList L; /文件表,模拟文件操作嘛,文件数不多,故可以用 线性表,简化操作_ struct openFileTable OFT10; /打开文件表数组 int OFT_count=0; /打开文件表占用长度 void main() struct orderTable /命令表 char name8; ; char orderInput30; /存储用户输入的命令字符串 char or

20、derName8; /命令名字 char fileName20; /命令参数 1,是文件名字 char parameter26; /命令参数 2,是个数字 char parameter330; /命令参数 3,是字符串或数字 struct orderTable u9; /命令表 int i=0; int flag=0; /用户输入串 读写位置 标志 int flagOrder=-1; / 北京联合大学 第 14 页 共 30 页 LinListInitiate(/磁盘空间分配键表初始化 struct freeDiskTable temp; temp.length=0; temp.maxLeng

21、th=10000; temp.start=0; temp.useFlag=0; if(!LinListInsert(freeDiskTableHead,0,temp) printf(“初始磁盘空闲表失败!“); system(“pause“); exit(0); / /文件表初始化 SeqListInitiate( /初始化 文件表 / for(i=0;i6) /命令名长度 小于 6 printf(“输入的命令有误,请重新输入!n“); continue ; orderNamei=0; flagOrder=-1; /初始化标志位,flagOrder 指明命令在命令表中的位置 for(i=0;i

22、next) if(p-next-data.start=L.listk.start) p-next-data.useFlag=0; printf(“成功删除!n“); break; SeqListDelete(/从文件表中删除 void fileRead(char *fileName,int position,int length) int i; int flag=0; int k=0; for(i=0;i=OFTk.start+position;i-) diski+len=diski; /给插入的字符串 空出位置 for(i=OFTk.start+position;inext) k+;/记录位

23、置,在空闲结点之后插入结点 if(p-next-data.useFlag=0 temp.maxLength=p-next-data.maxLength-*maxLength; temp.start=p-next-data.start+*maxLength; temp.useFlag=0; /分解节点 /= p-next-data.maxLength=*maxLength; p-next-data.useFlag=1; /设置分配的空间标志位 *startPosistion=p-next-data.start; flag=1;/成功分配 break; 北京联合大学 第 28 页 共 30 页 if(1=flag) /成功分配空间,返回成功标志 if(!LinListInsert(freeDiskTableHead,k,temp) printf(“失败!n“); system(“pause“); exit(0); return 1; else return 0; /

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 建筑工程类
版权提示 | 免责声明

1,本文(高级操作系统实验报告课程设计(doc 30页).doc)为本站会员(欢乐马)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|