杨斌操作系统实验报告

上传人:j****9 文档编号:46024461 上传时间:2018-06-21 格式:DOC 页数:20 大小:670KB
返回 下载 相关 举报
杨斌操作系统实验报告_第1页
第1页 / 共20页
杨斌操作系统实验报告_第2页
第2页 / 共20页
杨斌操作系统实验报告_第3页
第3页 / 共20页
杨斌操作系统实验报告_第4页
第4页 / 共20页
杨斌操作系统实验报告_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《杨斌操作系统实验报告》由会员分享,可在线阅读,更多相关《杨斌操作系统实验报告(20页珍藏版)》请在金锄头文库上搜索。

1、操作系统实验三操作系统实验三 实验报告实验报告准考证号: 010110100383 姓名: 杨斌专业: 计算机及应用 专业层次:大专考核地点:西安电子科技大学北校区 考核时间:2011 年 11 月 24 日实践考核评语及成绩评定(由指导老师填写)教师签名:年 月 日主考院校:西安电子科技大学实验三实验三_B_B一实验题目一实验题目用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。 (题目四)二实验目的二实验目的(1)进一步认识虚拟存储器的工作原理;(2)进一步认识文件系统的内部功能以及内部实现;(3)深入理解操作系统中文件系统的理论知识,加深对教材中的重要算法的理解;(4)掌握

2、操作系统的原理及实现方法,提高综合运用各专业课知识的能力。三实验内容以及要求三实验内容以及要求(1)设计一个支持 n 个用户的简单二级文件系统,每个用户可保存m 个文件,用户在一次运行中只能打开一个文件; (2)采用二级或二级以上的多级文件目录管理; (3)对文件应设置存取控制保护方式,如“只能执行” 、 “允许读” 、“允许写等” ; (4)系统的外部特征应接近于真实系统,可设置下述文件操作命令:Login 用户登录;Dir 列出文件目录 ; Create 建立文件;Delete 删除文件; Read 读文件 ;Write 写文件;Open 打开文件; Close 关闭文件 。 (5)通过键

3、盘使用该文件系统,系统应显示操作命令的执行结果。四实验环境四实验环境操作系统:Windows 7开发语言:VC+开发工具:Microsoft Visual C+ 2008 Express Edition五程序设计思想五程序设计思想通过阅读实验指导书,整理出实验大体的思路,确定实体以及它们之间的关系。实体关系有三张表(主文件目录,用户文件目录以及打开文件目录)、命令服务和用户构成。用户负责输入命令。命令服务实现命令检查以及调用相关模块执行相应的命令功能。(1)主文件目录(MFD) ,包括用户名和文件目录指针; struct user MFD1=“0“,0;/MFD(用户名文件目录 指针) (2)

4、用户文件目录(UFD) ,包括文件名、保护码以及文件长度; struct file UFD10;/用户文件目录(UFD-文件名保护码文件长度) (3)打开文件目录(AFD) ,包括打开文件名、打开保护码以及读写指针。采用 数组形式存储打开的文件,数组每个元素保存一个打开文件的信息 StructfileAFD5=“0“,0,0,0,“0“,0,0,0,“0“,0,0,0,“0“,0,0,0,“0“,0,0,0;/运行文件目录(AFD)一次运行用户可以打开个文件在此模拟文件管理系统中可以实现的操作有:在此模拟文件管理系统中可以实现的操作有:(1)用户登录:login,用户通过登录从而使用系统功能;

5、(2)创建文件:create,创建一个指定名字的新文件,即在目录中增加一项,不考虑文件的内容。对于重名文件给出错误信息。(3)删除文件:delete,当没在用户使用指定文件时,将其删除。文件不存在时给出错误信息。(4)打开文件:open,打开用户文件目录中已创建的文件,显示打开成功。若文件不存在,则提示用户该输入有误。(5)关闭文件:close,关闭用户文件目录中存在并且已打开的文件,显示关闭成功。若文件不存在,则提示用户该输入有误。(6)读取文件:read, 系统先判断在用户文件目录上是否存在该文件,若存在则判断该文件是否已打开,接着判断该文件的权限,若能读取则显示“该文件的状态是正在读”

6、,若权限不够,则提示该错误信息。(7)写入文件:write, 若要写的文件既不是在用户文件目录上不存在的也不是未打开的,则接着判断该用户是否有权限写入文件有权 限,则显示出“文件的状态是正在写” ,若无权限,则提示该错误信息。(8)列出文件目录:dir,显示出该目录下的所有文件。(9)退出登录:exit,输入 exit 命令可退出当前用户登录,使其他用户登录。六实验系统结构六实验系统结构1.实验算法流程图开始初始化数据用户输入命令命令表中有该命令?分析命令显示错误信息无创建删除读取显示列表写入查询保存关闭退出程序(exit)执行命令执行命令2. 算法设计(1) 该程序可分为以下几个模块:voi

7、d login();void dir();void create();void delet();void open();void close();void read();void write();void save();(2)主要函数模块分析1)创建文件:其中重点使用了 strcmp 函数,它是比较两个字符串的大小,返回比较的结果。void create()char name10;int i,j=0,flag;for(i=0;i9)coutname;flag=0;for(i=0;iUFDi.code;if(UFDi.code!=0coutname;for(j=0;jn。由于页的大小都取 2 的

8、整数幂个字,所以,页的起点都落在低字段为零的地址上。因此,虚存地址分为两个字段:高位字段为逻辑页号,低位字段为页内行地址,实存地地址也分两个字段:高位字段为物理页号,低位字段为页内行地址。由于两者的页面大小一样,所以页内行地址相等。虚拟地址到主存实地址的变换是由放在主页的页表来实现。在页表中,对应每一个虚存逻辑页号有一个表目,表目内容至少要包含该逻辑页所在的主存页面地址(物理页号),用它作为主存地址的高字段,与虚存地址的页内行地址字段相拼接,就产生了完整的实主存地址据此来访问主存。页式管理的地址变换如图 1 所示。如访问该逻辑页就要产生页面失效中断,启动输入输出子系统,根据页表项目中查得的外存

9、地址,由磁盘等外存中读出新的页到主存中来。修改位指出主存页面中的内容是否被修改过,替换时是否要写主存,替换控制位指出需替换的页等。七实验系统结构七实验系统结构1.实验算法流程图开始查页表取指令中访问的页号=L取一条指令页标志=1?形成绝对地址是否为存指令是置 L 页修改标志为 1输出绝对地址是否有后 继指令取下一条 指令结束J=PKJ 页的 修改标 志=1?输出“OUT J”输出“IN L”PK=L K=(K+1)mod m修改页表否(产生缺页中断)是否是否是否2. 算法设计(1)该程序可分为以下几个模块:int main();/主函数void Init();/初始化程序void Displa

10、y();/显示页表情况的函数void Input();/输入指令程序void Check(int t);/查页表程序void Inter(int m);/缺页中断处理程序void Comp(int w);/处理绝对地址函数void Change();/修改页表函数(2)主要函数模块分析1)地址变换函数:输入指令进行操作的页号和单元号,判断该页是否在主存中。若在,则直接计算绝对地址并输出,否则发生缺页中断。输出指令执行后的页表情况后再询问用户是否还有后继指令。void Comp(int w)/绝对地址函数 int address=Pagew2*1024+unit;/ 计算绝对地址 if(oper

11、=C) Pagew3=1;/C代表存,如果是存指令,置L页的修改标志为1couttemp; 2)缺页中断处理函数:当用户输入操作判断该页不在主存上时,发生缺页中断,输出“该页页号*” ,并模拟 FIFO 进行页面调度算法把该作业中最先进入主存的一页调出,存放在磁盘上,然后再把当前要访问的页装入该块。void Inter(int m) /缺页中断处理程序 cout“该页页号* “mendl;/输出该页页号/模拟FIFO页面调度J=Pk; /暂存Pk值if(PageJ3=1)/判断J页的修改标志是否为1cout“OUT “Jendl;/是的话,输出OUT J cout“IN “Lendl;/L页进

12、入主存空间Pk=L; /修改Pk为当前指令中的页号L Change();/调用修改页表函数,进行页表修改k=(k+1)%N_z;/k值修改Check(L);/继续查看页表3)修改页表函数:当一个页面调出和装入后都需要修改页表中对应页的标志。void Change() /修改页表函数 int p;for(int i=1;i=2;i+)p=PageLi;/修改页标志、主存块号PageLi=PageJi;PageJi=p; 八实验运行结果八实验运行结果(1)运行程序得到初始化界面如下:(2)用户按提示输入相应的指令,若指令输入后系统判断该页在主存上,则显示结果如下:(3)若用户输入指令后系统判断该页

13、不在主存上,此时显示结果如下:(4)当运行完后,系统提示是否还有后继指令,若选择 0:无,则该系统自动关闭。调试过程:(1)在编写代码时,数据是按照实验指导书上的进行初始化的,在初次运行时,在磁盘上的位置显示的数字被系统理解成八进制了,于是,数据被更改了。后来查了相关资料了解到,由于本实验页表中的数据全部为整型,所以最后将元素“在磁盘上的位置”的输入和输出均舍去前面的 0,否则将会以八进制处理。(2)调试过程中,遇到了很多问题。先是分配(创建)物理块问题,然后是如何实现 FIFO 调度的问题,当程序调试到可运行的时候时,发现输出的结果不对。而且当一组数据结果正确时,用另一组数据时又出现结果错误

14、。经过一次次的调试和修改,以及多组数据的测试后,终于完成了实验。九实验总结九实验总结通过这次实践课程,使我掌握了文件系统的管理,应用和请求分页式存储管理的页面置换算法,对课堂所学的知识进一步加深,将理论上的东西亲手进行了实践。从实验中,进一步加深了对操作系统的内部运作情况的了解,使自己真正懂得了操作系统的基本功能,以及操作系统在计算机中的重要地位,是我认识到一个好的操作系统需要能够实现最优化的系统资源调用,对各个作业进行最佳的调度,缩短作业的周转时间和等待时间,并且让 CPU 等硬件资源的利用率达到最高,从而使计算机的性能达到最佳状态。同时,在这次实验中也用到了很多别的方面的知识,是一次对所学知识的复习以及对新知识具体应用。通过这次实验,使我对操作系统和编程产生了更大的兴趣,我想我会在这条路上继续走下去。我相信,只要不断的严格要求自己,注意培养自己的思维能力和实践动手能力,就一定会取得更好的成绩。在编程和调试的过程中,感觉对于程序语言的运用还是有些生疏,经常会出现一些棘手的问题,这些问题也不是都可以从相关资料中找到解决方案,有些问题是不易排除的,这就需要通过自己理性的分析得出问题的解决方案。总的来说通过这次的实验使我学到了很多在平时的学习中学习不到的东西,对自己的实际动手能力和应用所学知识的能力都是一个很好的锻炼,以后要多多加强这方面的尝试。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号