文件访问接口设计_第1页
文件访问接口设计_第2页
文件访问接口设计_第3页
文件访问接口设计_第4页
文件访问接口设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计说明书设计名称:操作系统课程设计题目:文件访问接口设计学生姓名:余德威专业:计算机科学与技术班级:13计算机 1 班学号:2013314111指导教师:任朝晖日期:2015年 9月 18日佛山科学技术学院课程设计用纸课程设计任务书一、 设计题目文件访问接口设计二、 目的与要求本设计的目的是通过 BIOS 调用设计简单的文件访问接口,使学生掌握程序接口的设计方法。要求学生在熟悉比BIOS、DOS操作系统的中断接口及程序接口的基础上,利用 C 语言设计简单的文件访问接口,最后通过程序验证接口的正确性。三、 设计内容利用 C 语言设计,具体包括:1、基本文件内容输入2、基本文件内容输出3、创

2、建文件4、打开文件5、关闭文件6、文件缓冲区管理7、文件句柄管理8、读顺序文件9、写顺序文件10、读随机文件11、写随机文件12、文本文件操作验证程序上述功能由两部分程序验证,中断驻留程序和验证程序。首先运行中断驻留佛山科学技术学院课程设计用纸程序,然后运行验证程序得到预期结果。四、完成方式独立完成:完成设计内容全部12 个小项或至少 3 项以上。五、 具体要求本设计的目的是通过 BIOS 调用设计简单的文件访问接口,使学生掌握程序接口的设计方法。要求学生在熟悉比BIOS、DOS操作系统的中断接口及程序接口的基础上,利用 C 语言设计简单的文件访问接口,最后通过程序验证接口的正确性。六、 进度

3、安排依照教学计划,课程设计时间为:2 周。1.要求讲解、资料查找、系统分析,概要设计(2 天)2. 系统详细设计、功能设计( 2 天)3. 算法实现、编程调试( 5 天)4. 功能演示、资料整理、课程设计说明书编写。 (1 天)七、 完成后应上交的材料课程设计说明书纸质文档八、 总评成绩指导教师签名日期年月日系 主 任审核日期年月日佛山科学技术学院课程设计用纸目录一、程序概述11.1 完成的任务11.2 解决的问题1二、概念原理12.1 基本概念12.2 基本原理2三、总体设计33.1 实现方法33.2 技术路线3四、详细设计34.1 主要函数3五、完成情况3六、使用说明4七、设计总结107.

4、1 系统特色107.2 经验教训107.3 实践感受10参考资料10附录11佛山科学技术学院课程设计用纸一、程序概述1.1 完成的任务本设计要求编写一个简单的文件访问接口设计,利用C 语言, DOS 与 BIOS 中断调用进行设计。主要完成要求中所提到的功能如 : 创建文件,删除文件,打开文件,关闭文件,基本文件内容输入,基本文件内容输出,读顺序文件,写顺序文件,文本文件操作验证程序,文件缓冲区管理的实现。1.2 解决的问题在设计过程遇到了以下的问题: 一是有关文件的操作,如文件夹的创建与删除;二是在理解了中断的意义之后,进行中断函数如int86(),int86x(),intdos(),int

5、dos()等函数的调用有点模糊。解决的过程 : 通过在网上查阅了相关资料及参考在图书馆借的C 高级实用设计和上学期学过的汇编语言的书后,再有不懂的疑惑向老师解答和与同学讨论解决方法。有关函数的调用参数的设计,基本上是基于这些: 结构体 WORDREGS,BYTEREGS,SREGS,联合体 REGS,文件属性字节,以及汇编语言中 int 21H dos 系统功能调用中中断类型 ( 主要是21H)以及调用功能号的查询和设置。下面主要介绍上述提及的几个结构体跟联合体:/ 以字作为单位的寄存器所组合的结构体Struct WORDREGSUnsigned int ax,bx,cx,dx,si,di,c

6、flag,flags;/ 以字节作为单位的寄存器做组合的结构体Struct BYTEREGSUnsigned char al,ah,bl,bh,cl,ch,dl,dh;/ 由上述两个结构体所组合的共用体 ( 联合体 )Union REGSStruct WORDREGS x ;Struct BYTEREGS h;/ 由段寄存器组合的结构体Struct SREGSUnsigned int es,cs,ss,ds; ;二、概念原理2.1 基本概念中断中断:顾名思义,是指当出现需要时,CPU 暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中,系统出现了一个必须由CPU 立即

7、处理的情况,此时,CPU 暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。本课题中涉及的为dos 中断跟 bios 中断。文件访问接口所谓访问接口,实际上即为用户通过dos 状态下的提示,键入相关命令后,作为访问相关文件操作的1佛山科学技术学院课程设计用纸中介,即类似一个中转站。而系统同时也需要在响应了用户键入的命令后执行预先编写好的相应程序,并将程序的执行结果通过中介,即文件访问接口,输出给用户。而事实上在系统响应一次用户的命令时,系统进行了一次 IO 中断。中断驻留程序中断驻留程序,指的是当加载进内存的程序执行完毕后,依然能够保存产生的临时数据跟临时状态,而在下一次调用时继续执行。

8、验证程序本课题的验证程序,指的是,当用dos, bios 中断调用编写好相关用于文件访问的函数并执行之后,用 C 语言高级的函数如fopen(),fprintf(),fgetc(),fclose()等函数来验证上述编写的访问函数是否可行。本课题中用fopen(),fclose()来验证用dos 中断调用所编写的函数CloseFile(), CreateFile()和CloseFile();用fgetc(),fprintf()等 函 数 来 验 证 用dos中 断 调 用 所 编 写 的WriteToFile()和ReadFromFile()函数;除此之外, 像 ftell(),fseek()等

9、的验证是同样的道理。只需基于上述由dos ,bios中断调用所编写的函数.系统调用系统调用,顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”接口。用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务,比如用户可以通过文件系统相关的调用请求系统打开文件、关闭文件或读写文件,可以通过时钟相关的系统调用获得系统时间或设置定时器等。从逻辑上来说,系统调用可被看成是一个内核与用户空间程序交互的接口,它好比一个中间人,把用户进程的请求传达给内核,待内核把请求处理完毕后再将处理结果送回给用户空间。2.2 基本原理本课题的运行结果,首先是在运行开始时给定了10 个选择开关,供用户选择,每当接收

10、一次用户的选择时, 系统将进行一次的 IO 中断,之后执行相应的中断服务程序, 在这里是指由 dos,bios 中断调用编写好的函数,调用结束时,将临时结果保存,并退出中断,继续响应用户的选择,直到用户选择了退出。如下图所示 :图 2-12佛山科学技术学院课程设计用纸三、总体设计3.1 实现方法程序通过选择开关switch.case将用 dos,bios调用编写的函数组合起来供用户做出选择。在对应处理用户的选择编写的函数中,主要的核心是 dos 功能中断调用函数的编写,其中包括中断类型号,中断功能调用号等的设置,以及响应用户选择后中断服务程序的编写。另外,可以通过参看当前工作目录下的文件信息或

11、者通过 Validate 开头的相关函数进行程序运行结果的验证3.2 技术路线整个程序的设计流程,围绕着 bios,dos 功能中断调用这一主线 , 编写好相关文件操作函数,在响应用户选择之后,对应执行相关的函数四、详细设计4.1 主要函数Int OperOfSel():用于显示可供用户选择的功能,并提示用户作出相应的功能选择Void CreateFile(char filename80):用于创建一个新的文件 : 根据用户输入的文件名进行文件的创建,如果文件创建失败 : 如磁盘空间已满或者已经存在该文件,即创建失败Int DeleteFile(char filename80):用于删除一个文

12、件,如果删除成功,将返回文件代号,否则删除失败:可能是不存在该文件Int OpenFile(char filename80):用于打开一个文件,如果打开成功,则返回文件代号,否则打开失败,可能是不存在该文件Void CloseFile(filename80):用于关闭一个文件Void WriteToFile(filename80):用于写顺序文件 基本文件内容的输入 以及文件缓冲区的管理 : 首先根据用户输入的文件名打开一个文件,如果存在该文件,则打开成功,开始写入内容,此时继续接受用户输入的内容,注意,输入直到用户键入回车键即表示输入完毕,此时将输入的内容根据文件缓冲区管理规则将用户输入的内

13、容进行存储至指定文件名的文件中Void ReadFromFile(filename80):用于读顺序文件 基本文件内容的输出 以及文件缓冲区的管理:从指定的文件中读取文件中的内容,并输出 ;Void ValidateOpenFile(char filename80):用于验证上述文件访问函数编写的正确性:用于验证创建文件打开文件是否成功Void ValidateReadFile(char filename80):用于验证上述文件访问函数编写的正确性:用于验证上述中WriteToFile(filename80)以及 ReadFromFile(filename80):函数4.2 引用函数Clrsc

14、r() :用于清空屏幕的作用五、完成情况本程序完成了其中的 9 项,能够实现文件的创建,打开,关闭,基本文件内容的输入,输出,文件缓冲区的管理,以及文本文件的验证程序,写顺序文件,读顺序文件。3佛山科学技术学院课程设计用纸六、使用说明运行成功后进行首页,开始接受用户的选择图 5-1接着进行相应功能选项前面对应数字的输入:1 号功能:为创建一个新的文件图 5-2查看目录,目录下果然生成my 文件 ,所以文件创建成功;4佛山科学技术学院课程设计用纸图 5-3当该文件已经存在时,再创建该文件时,会提示文件已存在,创建已失败;图 5-42 号功能:删除文件若文件不存在,则操作失败;否则,文件被删除,如

15、下图:yuyu 文件删除成功;图 5-5图 5-63 号打开文件功能打开已存在的文件,显示打开文件成功。5佛山科学技术学院课程设计用纸图 5-7图 5-8若输入的文件是不存在的,会提示打开操作失败;6佛山科学技术学院课程设计用纸图 5-94 号功能:关闭文件图 5-105 号功能:写入文件的内容,如下在文件中输入wearetheworld图 5-117佛山科学技术学院课程设计用纸图 5-126 号功能:读出文件内容图 5-137 号功能:确认文件是否打开图 5-148 号功能:从文件读内容输出8佛山科学技术学院课程设计用纸图 5-159 号功能 :清屏结果将出现清空屏幕的效果图 5-16图 5

16、-170 号功能:退出图 5-189佛山科学技术学院课程设计用纸七、设计总结7.1 系统特色在本系统中已初步实现一个可访问的文件接口,能够正常的解析命令并执行,在解析命令方面,采用中断函数调用以及功能类型号选择设置的形式,达到直接与底层“打交道”的作用,效率比较高。7.2 经验教训由于在开始做操作系统课程设计时,对要选择的题目,自己没有很快确定下来,所以时而找找这道题的资料,时而找找第三题的资料,又看看有参考样本的第一道题,这过程中确实耽误了不少,但同时也让我明白,目标的重要性,只有有了目标,奋斗起来才会快且成长多,所以一旦定下来任务,就加把劲地把它做完;不懂就想办法把它搞懂。另外,由于这次是

17、比较偏低层,所以,很多我们平常调用的函数不能用到,确实有点不适,也让我明白现在的我存在的依赖性及知识点的不足。所以,在接下来的时段里,我要加油,加把劲充实自己。遇到问题时多与老师及同学讨论,这样很有利于自己跳出思维定势。7.3 实践感受每次的课程设计对我们来说, 都是课堂知识所学的一个深化, 在实践这个过程中, 我们不免会遇到许多我们未曾想过的问题, 但是,我们无须害怕, 因为我们需要成长, 我们需要养成遇到问题, 能分析问题,进而解决问题,这样当我们的课程设计完成了,当我们的学业完成了,我们也就渐渐养成了如何解决问题的思维及如何去做的行动观。这次的课程设计, 让我看到了我上学期所学知识的不牢

18、固, 让我知道我上学期的懒惰成为了我现在成长的阻碍。操作系统这门课程的理论性很强,如果单单靠我们上学期所学的理论知识,完全不足于我们使用,所以,无论是为了什么,都得学着把操作系统的知识实践化,无论是文件访问接口设计还是操作系统命令接口,都有它存在的意义;而且通过此次的课程设计,认识了讨论的重要性,个人的力量有限,如果没有团队的话,很多事情都是很难完成的,三个臭皮匠顶过一个诸葛亮。如果遇到了一个人难以解决,那么最好是提出来与伙伴或者同学一同探讨,这不但能知道别人的想法,也能解决自己的困惑,何乐而不为啊?参考资料1、操作系统实验指导任爱华李鹏刘方毅清华大学出版社2、 C 高级编程及实例分析王为青刘

19、变红编著人民邮电出版社3、 C 高级实用程序设计王世元编著清华大学出版社4、 80x86 汇编语言程序设计沈美明,温冬婵编著,清华大学出版社5、操作系统实验教程核心技术与编程实例顾宝根王立松顾喜梅科学出版社10佛山科学技术学院课程设计用纸附录/*时间: 2015 年 09 月 07 日程序:文件访问接口设计班级: 13 计算机 1 班姓名:余德威学号: 2013314111*/#include#include#include#include#include#include#define INTER 0x21#define Num 80#define CNum 9/选择功能int OperOfS

20、el()printf(nnFunction Of Selectionn);printf(*n);printf(|n);printf(|1Create a file|n);printf(2Delete a file-n);printf(3Opena file n);printf(4Closea file n);printf(5Inputcontents to filen);printf(6Output contents from filen);printf(|7Validate the file is open or not|n);printf(|8Validate the reading co

21、ntents from file|n);printf(|9Clean the screen|n);printf(|0Exit|n);printf(|n);printf(/n);printf(nFunction Of Selection);int sel;printf(nInput Your Selction:);scanf(%d,&sel);return sel;/创文件void CreateFile(char filename80)11佛山科学技术学院课程设计用纸union REGS inregs,outregs;struct SREGS segregs;inregs.h.ah=0x5B;/

22、 创建文件的中断指令是5Binregs.x.dx=FP_OFF(filename);/ 设置段地址和有效地址segregs.ds=FP_SEG(filename);inregs.x.cx=0;/ 设置文件属性是0; cx 文件属性int86x(INTER,&inregs,&outregs,&segregs);if(outregs.x.ax=2)printf(Fail To Create New Filen);return;if(outregs.x.ax=80)printf(Fail to create file: %sThe file has benn existedn,filename);r

23、eturn;printf(Create New File:%sSuccessfully!n,filename);printf(The Files Attribute is:%dn,outregs.x.cx);printf(The Filecode is:%dn,outregs.x.ax);/删除文件int DeleteFile(char filename80)union REGS inregs,outregs;struct SREGS segregs;inregs.h.ah=0x41;/删除文件的中断指令是41inregs.x.dx=FP_OFF(filename);segregs.ds=FP

24、_SEG(filename);intdosx(&inregs,&outregs,&segregs);int result = outregs.x.ax;return result;/打开文件int OpenFile(char filename80)union REGS inregs,outregs;struct SREGS segregs;int result;12佛山科学技术学院课程设计用纸inregs.h.ah=0x3D;inregs.x.dx=FP_OFF(filename);segregs.ds=FP_SEG(filename);inregs.h.al=2;/ 设置文件路径int86x

25、(INTER,&inregs,&outregs,&segregs);result = outregs.x.ax;return result;/关闭文件void CloseFile(char filename80)union REGS inregs,outregs;struct SREGS segregs;int result;int FileCode;inregs.h.ah=0x3D;/打开文件用于读,写或补充inregs.x.dx=FP_OFF(filename);segregs.ds=FP_SEG(filename);inregs.h.al=2;int86x(INTER,&inregs,&

26、outregs,&segregs);result = outregs.x.ax;if(2=result)printf(nFail to close the file: %sIt may not existn,filename);elseFileCode = outregs.x.ax;inregs.h.ah = 0x3E;/强迫清除所有缓冲区,更新目录inregs.x.bx = FileCode;int rel = intdos(&inregs,&outregs);printf(nClose File: %sSuccessfully! rel=%d n,filename,rel);/在写入文件内

27、容void WriteToFile(char filename80)union REGS inregs,outregs;struct SREGS segregs;int result;13佛山科学技术学院课程设计用纸int FileCode;char WriteContentsCNum;inregs.h.ah=0x3D;inregs.x.dx=FP_OFF(filename);segregs.ds=FP_SEG(filename);inregs.h.al=2;int86x(INTER,&inregs,&outregs,&segregs);result = outregs.x.ax;if(2=r

28、esult)printf(nCan not input contents to file: %s !It may not exist.n,filename);elsegetchar();printf(nInput The Writting Contents:n);int count=0;int temp=0;int sumChar=0;for(int i=0;i=CNum-1;i+)if(count=1)WriteContentsi=temp;i+;count=0;scanf(%c,&WriteContentsi);if(WriteContentsi=n)break;if(i=CNum-1)F

29、ileCode = result;inregs.h.ah=0x40;/ 写文件或设备inregs.x.dx=FP_OFF(WriteContents);segregs.ds=FP_SEG(WriteContents);inregs.x.bx=FileCode;inregs.x.cx=i;intdosx(&inregs,&outregs,&segregs);temp = WriteContentsi;count = count+1;i = -1;14佛山科学技术学院课程设计用纸sumChar += outregs.x.ax;FileCode = result;inregs.h.ah=0x40;i

30、nregs.x.dx=FP_OFF(WriteContents);segregs.ds=FP_SEG(WriteContents);inregs.x.bx=FileCode;inregs.x.cx=i;intdosx(&inregs,&outregs,&segregs);sumChar += outregs.x.ax;printf(nnThe number of contents you have write to file are: %dn,sumChar);/读取文件中内容void ReadFromFile(char filename80)union REGS inregs,outregs

31、;struct SREGS segregs;int result;char ReadContentsCNum*1024;inregs.h.ah=0x3D;inregs.x.dx=FP_OFF(filename);segregs.ds=FP_SEG(filename);inregs.h.al=2;intdosx(&inregs,&outregs,&segregs);result = outregs.x.ax;if(2=result)printf(nCan not read contents from file: %s !The file may not exist.n,filename);els

32、einregs.x.bx=result;inregs.h.ah=0x3F;inregs.x.dx=FP_OFF(ReadContents);segregs.ds=FP_SEG(ReadContents);inregs.x.cx=1024;intdosx(&inregs,&outregs,&segregs);printf(Real Number Of Read Characters in file:%s : %dn,filename,outregs.x.ax);printf(nThe Contents Of File: %s Are Listed Below: n,filename); for(

33、int i=0;ioutregs.x.ax;i+)printf(%c,ReadContentsi);15佛山科学技术学院课程设计用纸printf(n);/确认文件是否打开void ValidateOpenFile(char filename80)FILE *fp;fp=fopen(filename,r);if(!fp)printf(nOpen file: %s Failly! fail to validate open file function.n,filename); return;elseprintf(nOpen file: %s Successfully! success to val

34、idate open file function.n,filename);fclose(fp);/确认文件void ValidateReadFile(char filename80)FILE *fp;fp = fopen(filename,r);if(!fp)printf(nCan not read contents from file:%sIt may not exist.n,filename);return;elseint count=0;printf(nRead contents from file:%s successfully! The below are the contents.

35、n,filename);char ch;while(ch=fgetc(fp)!=EOF)count+;printf(%c,ch);printf(n);printf(nThe total number of contents of the file: %s are: %d.n,filename,count);16佛山科学技术学院课程设计用纸fclose(fp);int main()clrscr();char CreateFileNameNum;char DeleteFileNameNum;char OpenFileNameNum;char CloseFileNameNum;char Writti

36、ngFileNameNum;char ReadingFileNameNum;char ValidateOpenFileNameNum;char ValidateReadFileNameNum;int sel;dosel = OperOfSel();switch(sel)case 0:printf(nExit the systemn);exit(0);break;case 1:printf(nSelection Of Creating A NewFilen);printf(nInput the name of file to create:);scanf(%s,CreateFileName);C

37、reateFile(CreateFileName);break;case 2:printf(nSelection Of Deleting A ExistingFilen);printf(nInput the name of existing file to delete: );scanf(%s,DeleteFileName);int RelOfDel = DeleteFile(DeleteFileName);if(0=RelOfDel)printf(nThe File: %shas been delete successfullyn,DeleteFileName);elseprintf(nCan not delete the file:%sIt may not be existn,DeleteFileName);17佛山科学技术学院课程设计用纸break;case 3:printf(nThe Selection Of Opening an Existing Filen);printf(nInput the name of existing opening file:);scanf(%s,OpenFile

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论