虚拟文件课程设计报告.docx
《虚拟文件课程设计报告.docx》由会员分享,可在线阅读,更多相关《虚拟文件课程设计报告.docx(70页珍藏版)》请在冰豆网上搜索。
虚拟文件课程设计报告
武汉工程大学
计算机科学与工程学院
综合设计报告
设计名称:
操作系统综合设计
设计题目:
虚拟文件系统的设计与实现
学生学号:
1105080207
专业班级:
2011计算机工程2班
学生姓名:
胡文博
学生成绩:
指导教师(职称):
蔡琼(副教授)
完成时间:
14年2月17日至14年2月28日
武汉工程大学计算机科学与工程学院制
说明:
1、报告中的第一、二、三项由指导教师在综合设计开始前填写并发给每个学生;四、五两项(中英文摘要)由学生在完成综合设计后填写。
2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。
3、指导教师评语一栏由指导教师就学生在整个综合设计期间的表现、设计完成情况、报告的质量及答辩等方面,给出客观、全面的评价。
4、所有学生必须参加综合设计的答辩环节。
凡不参加答辩者,其成绩一律按不及格处理。
答辩小组成员应由2人及以上教师组成。
5、报告正文字数一般应不少于5000字,也可由指导教师根据本门综合设计的情况另行规定。
6、平时表现成绩低于6分的学生,其综合设计成绩按不及格处理。
7、此表格式为武汉工程大学计算机科学与工程学院提供的基本格式(适用于学院各类综合设计),各教研室可根据本门综合设计的特点及内容做适当的调整,并上报学院批准。
答辩记录表
学生姓名:
胡文博学号:
1105080207班级:
2011计算机工程2班
答辩地点:
计算机大楼403机房
答辩内容记录:
答辩成绩
合计
分值
各项分值
评分标准
实际得分
合计得分
备注
25
10
在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。
15
在规定时间内能准确、完整、流利地回答教师所提出的问题。
答辩小组成员(签字):
2014年2月28日
成绩评定表
学生姓名:
胡文博学号:
1105080207班级:
2011计算机工程2班
类别
合计
分值
各项分值
评分标准
实际得分
合计得分
备注
平时表现
10
10
按时参加综合设计,无旷课、迟到、早退、违反实验室纪律等情况。
完成情况
30
20
按设计任务书的要求完成了全部任务,能完整演示其设计内容,符合要求。
10
能对其设计内容进行详细、完整的介绍,并能就指导教师提出的问题进行正确的回答。
报告质量
35
10
报告文字通顺,内容翔实,论述充分、完整,立论正确,结构严谨合理;报告字数符合相关要求,工整规范,整齐划一。
5
课题背景介绍清楚,综述分析充分。
5
设计方案合理、可行,论证严谨,逻辑性强,具有说服力。
5
符号统一;图表完备、符合规范要求。
5
能对整个设计过程进行全面的总结,得出有价值的结论或结果。
5
参考文献数量在3篇以上,格式符合要求,在正文中正确引用。
答辩情况
25
10
在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。
15
在规定时间内能准确、完整、流利地回答教师所提出的问题。
总评成绩
指导教师评语
指导教师:
(签字)日期:
2014年2月28日
一、综合设计目的、条件、任务和内容要求:
《操作系统》在计算机科学中是一门核心专业基础课,涉及较多硬件和软件知识。
在计算机软、硬件课程的设置上,它起着承上启下的作用。
其特点是概念多、较抽象、涉及的知识面广。
《操作系统综合设计》是计算机科学与技术专业学生的一门实践课程,是学习完操作系统课程后的综合设计,本课程的教学目的是,理解操作系统的基本概念、组成和各部分的功能;掌握计算机操作系统的基本原理和基本方法;理解常见操作系统的结构原理并能熟练使用。
《虚拟文件系统的设计与实现》课题,要求学生了解文件类型及文件系统模型,理解文件的逻辑结构类型及特点,理解文件外存的分配方式,掌握文件的目录管理及存储空间管理,理解文件的安全性和数据的一致性。
培养学生的抽象思维能力、逻辑推理能力和形式化思维方法,增强分析问题和解决问题的能力。
设计任务和内容要求:
在Windows或者Linux下设计一个二级(或者树型)结构文件系统,要求至少实现以下功能:
login用户登录、dir列出文件目录、create创建文件、del删除文件、open打开文件、close关闭文件、read读文件、write写文件、cd进入子目录、rd删除子目录、md创建子目录等。
设计提示:
实现虚拟文件系统的一般思路是调用系统的文件创建(如c中的fopen函数的w方式即可)一个新文件,将此文件作为虚拟磁盘,在完成本设计要求的内容时,要求所生成的文件目录以及文件等内容都是存储在此磁盘中。
二、进度安排:
第1周(2.17-2.18):
学生熟悉课题的任务和要求,查阅相关文献和资料,并做好编码准备
第1周(2.19-2.21):
程序编码、调试
第2周(2.24-2.27):
程序编码、调试和测试,书写报告
第2周(2.28):
答辩、检查、验收、递交设计报告
三、应收集资料及主要参考文献:
应收集的资料:
面向对象程序设计思想和方法
高级程序设计语言参考手册
操作系统、数据结构、软件工程方面参考书籍
主要参考文献:
[1]姬涛,周启生.计算机程序设计基础(上册)教程.北京:
中国传媒大学出版社,2010.
[2]张俊,张彦铎.c++面向对象程序设计.第一版,北京:
中国铁道出版社,2008.
[3]谭浩强.c++程序设计.北京:
清华大学出版社,2011.
[4]李春葆,尹为民.数据结构教程(第三版).北京:
清华大学出版社,2008.
[5]庞丽萍.操作系统原理(第四版).武汉:
华中科技大学出版社,2007.
四、摘要:
《虚拟文件系统》模拟的是一个小型的Linux系统,此程序实现的功能主要包括十一项内容,即用户登录、列出文件目录、创建文件、删除文件、打开文件、关闭文件、读文件、写文件、进入子目录、删除子目录、创建子目录等。
涉及到的数据结构主要包括用户、文件节点、文件表三类结构体。
本程序的主要目的是利用平时编写程序以及调试程序的能力,结合教学环节,运用操作系统知识解决实际问题的能力,为后续计算机专业课程的学习打下坚实的基础。
整个程序在用户输入用户名和密码后使用时,都会有选项可供用户选择,用户只需通过程序的提示,便可以一步一步完成操作,不管是普通的用户还是程序设计人员,都可以方便快捷的通过本程序完成对虚拟文件的掌握,给每一个用户一个非常不错的体验。
关键词:
虚拟文件;操作系统;数据结构
五、Abstract:
"VirtualFileSystem"AnalogisasmallLinuxsystem,themainfunctionofthisprogramincludeselevencontentthatuserslogthatliststhefiledirectory,createafile,deletethefile,openthefile,closethefile,readthefile,writefilesintoasubdirectory,deletethesubdirectory,createasubdirectoryandsoon.Relatestoadatastructureincludingusers,filenode,threetypesoffiletablestructure.Themainpurposeofthisprocedureistousetheusualprogramminganddebuggingcapabilities,combinedwithteaching,theuseoftheoperatingsystemknowledgetosolvepracticalproblems,andlayasolidfoundationforsubsequentlearningcomputersciencecourses.
Aftertheentireprogramwhentheuserentersausernameandpassword,willhavetheoptiontochoosefrom,userssimplybypromptingtheprogram,theycancompletetheoperationstepbystep,whetheritisanormaluserorprogrammer,canbeconvenientcompletionofthemasterofthevirtualfilethroughthisprogram,givingeachuseraverygoodexperience
Keywords:
virtualfile;operatingsystem;datastructures
摘要………………………………………………………………………………………II
Abstract…………………………………………………………………………………...II
第一章课题背景……………………………………................................………………..1
1.1设计的背景………………….…………………….………………………………...1
1.2设计的目的.……………….………………………......……………………………1
1.3设计的意义.……….……………………………..………........……………………1
1.4解决的主要问题.………........……….………………..……………………………1
1.5技术要求.…………..….…..…………………………..……………………………1
第二章设计简介及设计方案论述………………………............………………………..2
2.1程序主要流程图……………..…..………..…………..………………………….…2
2.2主要设计思路……………………………....…………..………….………….…….2
第三章详细设计…………………………………………………………...…………….…..4
3.1所有定义的功能函数……………….............………..……………..…………….…4
3.2主要功能函数介绍……………………………...........…………………..……….…4
3.2.1列出文件目录函数……………………..….........………………..……….…4
3.2.2创建一个新文件函数…………….......................………………..……….…5
3.2.3删除文件函数……………..............…………….................……..……….…6
3.2.4创建子目录函数…………...............…..............………………..……..….…6
3.2.5删除子目录函数………….......…………………..........................……….…7
3.2.6进入子目录函数……..…...............……………..………...........................…9
第四章设计结果及分析…………………………………………………...………………..11
4.1调试过程及分析………………………………….………………….…….……..…....11
总结…….……………………………………………………..………….……………..….20
致谢…….……………………………………………………..………….………………...22
参考文献…….………………..………………………………..…………………………....23
附录主要程序代码………...………………………………..…………………...……….24
摘要
《虚拟文件系统》模拟的是一个小型的Linux系统,此程序实现的功能主要包括十一项内容,即用户登录、列出文件目录、创建文件、删除文件、打开文件、关闭文件、读文件、写文件、进入子目录、删除子目录、创建子目录等。
涉及到的数据结构主要包括用户、文件节点、文件表三类结构体。
本程序的主要目的是利用平时编写程序以及调试程序的能力,结合教学环节,运用操作系统知识解决实际问题的能力,为后续计算机专业课程的学习打下坚实的基础。
整个程序在用户输入用户名和密码后使用时,都会有选项可供用户选择,用户只需通过程序的提示,便可以一步一步完成操作,不管是普通的用户还是程序设计人员,都可以方便快捷的通过本程序完成对虚拟文件的掌握,给每一个用户一个非常不错的体验。
关键词:
虚拟文件;操作系统;数据结构
Abstract
"VirtualFileSystem"AnalogisasmallLinuxsystem,themainfunctionofthisprogramincludeselevencontentthatuserslogthatliststhefiledirectory,createafile,deletethefile,openthefile,closethefile,readthefile,writefilesintoasubdirectory,deletethesubdirectory,createasubdirectoryandsoon.Relatestoadatastructureincludingusers,filenode,threetypesoffiletablestructure.Themainpurposeofthisprocedureistousetheusualprogramminganddebuggingcapabilities,combinedwithteaching,theuseoftheoperatingsystemknowledgetosolvepracticalproblems,andlayasolidfoundationforsubsequentlearningcomputersciencecourses.
Aftertheentireprogramwhentheuserentersausernameandpassword,willhavetheoptiontochoosefrom,userssimplybypromptingtheprogram,theycancompletetheoperationstepbystep,whetheritisanormaluserorprogrammer,canbeconvenientcompletionofthemasterofthevirtualfilethroughthisprogram,givingeachuseraverygoodexperience
Keywords:
virtualfile;operatingsystem;datastructures
第一章课题背景
1.1设计的背景
操作系统是计算机专业的一门很重要的考研科目,其内容丰富,是计算机专业学生必须认真学习好的一门专业基础课,在大学计算机学院的课程体系中有着举足轻重的地位。
不仅由于其本身难度比较大,更是由于其自身涉及的软硬件知识较多,所以应对其持高度的重视态度。
1.2设计的目的
通过本课程的设计,学生可以利用操作系统的知识模仿Linux系统设计一个简单的虚拟文件系统,掌握操作系统的一些基本概念,能够利用它来解决生活中的实际问题,此外,也加强了学生对文件流的操作的理解和掌握,进一步提升学生运用数据结构知识解决实际问题的能力,为后续计算机专业课程的学习打下坚实的基础。
1.3设计的意义
虚拟文件系统的设计是对学生所学操作系统知识和其他计算机课程知识的一种很好的综合应用,有助于帮学生进一步熟悉和掌握专业课程的内容。
培养学生亲自动手能力和抽象逻辑思维的能力。
做到学以致用才是关键。
1.4解决的主要问题
(1)login用户登录
(2)dir列出文件目录
(3)create创建文件
(4)del删除文件
(5)open打开文件
(6)close关闭文件
(7)read读文件
(8)write写文件
(9)cd进入子目录
(10)rd删除子目录
(11)md创建子目录等
1.5技术要求
熟练掌握c语言的用法及编程技术,会进行程序的调试应用。
熟练掌握操作系统的有关知识,特别是对文件的存储结构要有一定的认识。
能运用所学的数据结构知识来组织数据块。
对文件流的操作也要有比较熟悉的编程能力。
第二章设计简介及设计方案论述
2.1程序主要流程图:
删除文件
创建新文件
清屏
改变目录
退出
格式化系统
删除子目录
关闭文件
写文件
读文件
打开文件
列出文件目录
创建子目录
写数据区
释放数据区
申请数据块
保存文件节点
读数据区
删除目录树
图2-1系统流程图
2.2主要设计思路
在内存中申请1M的内存空间来虚拟文件系统,将其以512B每块划分2048块,采用位示图管理文件系统的方法,利用其原理将第1块作为位图区(512B),共有对文件节点区和数据块区分别建立位图;每个文件节点占16B,每块有512/16=32个文件节点,用2、3共两块作为文件节点,总共有64个文件节点,在位图区占用8B;其余2045块作为数据区(本课设要求只用到512块),在位图区占用接近256B(2045位)。
位图:
用0表示未使用,1表示使用;文件节点:
描述文件信息的一个数据结构;数据区:
存放用户数据,包括目录文件。
读入一个文件时,先根据目录找到相应的文件节点号,将文件节点读入主存文件节点,建立打开文件表指向该主存文件节点,再将文件内容读入主存数据区。
主要数据结构如下表:
表2-1用户信息
数据类型
变量名
char
user_name
char
password
表2-2文件节点信息
数据类型
变量名
short
inum
char
file_name
char
type
char
user_name
short
iparent
short
length
short
address
表2-3打开文件表
数据类型
变量名
short
inum
char
file_name
short
mode
short
offset
第三章详细设计
3.1所有定义的功能函数
voidlogin();//用户登录
voidinit();//初始化
voidsave_inode(int);//保存文件节点
intget_blknum();//申请数据块
voidread_blk(int);//将节点号对应的文件读入到缓冲区
voidwrite_blk(int);//将缓冲区的内容写入到节点对应的文件中
voidrelease_blk(int);//释放节点号对应的文件的内容
voidpathset();//设置文件路径
voiddelet(intinnum);//删除目录
intcheck(inti);//检查节点对应的文件是否属于当前用户
voidmenu();//菜单
voidcd();//改变目录
voiddir();//列出文件目录
voidmd();//创建子目录
voidcreate();//创建新文件
voidopen();//打开文件
voidread();//读文件
voidwrite();//写文件
voidclose();//关闭文件
voiddel();//删除文件
voidrd();//删除子目录
voidcommand();//功能函数
3.2主要功能函数介绍
3.2.1列出文件目录函数
voiddir()
{
inti;
intdcount=0,fcount=0;
shortbcount=0;
//遍历i节点数组,显示当前目录下的子目录和文件名
for(i=0;iif((inode_array[i].inum>0)&&
(inode_array[i].iparent==inum_cur))
{
if(inode_array[i].type=='d'&&check(i))
{
dcount++;
printf("%-20s- \n",inode_array[i].file_name);
}
if(inode_array[i].type=='-'&&check(i))
{
fcount++;
bcount+=inode_array[i].length;
printf("%-20s\n",inode_array[i].file_name);
}
}
getch();
system("cls");
}
调用此函数可以列出当前目录下的子目录和文件。
通过for循环遍历所有文件节点,只要文件节点的父节点是当前目录就将他显示出来,并且当文件节点属性是目录是后面显示- ,当文件节点的属性是文件时后面显示。
然后用户按任意键清屏。
3.2.2创建一个新文件函数
voidcreate()
{
inti;
chara[10];
printf("thefilenameyouwanttocreate:
");
scanf("%s",a);
for(i=0;i{
if((inode_array[i].inum