操作系统课程设计报告-模拟存储器.doc_第1页
操作系统课程设计报告-模拟存储器.doc_第2页
操作系统课程设计报告-模拟存储器.doc_第3页
操作系统课程设计报告-模拟存储器.doc_第4页
操作系统课程设计报告-模拟存储器.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

计算机科学技术学院操作系统原理课程设计报告题 目:模拟存储器专 业:网络工程班 级:网络13-1姓 名:学 号:指导老师:2015年6月操作系统原理课程设计任务书(网络工程专业 网络13-1班)一、课程设计题目(任选一个题目)1.模拟进程管理2.模拟处理机调度3.模拟存储器管理4.模拟文件系统5.模拟磁盘调度二、设计目的和要求1.设计目的操作系统原理课程设计是网络工程专业实践性环节之一,是学习完操作系统原理课程后进行的一次较全面的综合练习。其目的在于加深对操作系统的理论、方法和基础知识的理解,掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,培养学生的系统设计能力,并了解操作系统的发展动向和趋势。2.基本要求:(1)选择课程设计题目中的一个课题,独立完成(1人1题,不分组)。(2)良好的沟通和合作能力(3)充分运用前序课所学的软件工程、程序设计、数据结构等相关知识(4)充分运用调试和排错技术(5)简单测试驱动模块和桩模块的编写 (6)查阅相关资料,自学具体课题中涉及到的新知识。(7)课题完成后必须按要求提交课程设计报告,格式规范,内容详实。(8)不限制编程语言,推荐使用C语言,C+、java亦可以。三、设计内容及步骤1.根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么。2.根据实现的功能,划分出合理的模块,明确模块间的关系。3.编程实现所设计的模块。4.程序调试与测试。采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果;5.结果分析。程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。6.编写课程设计报告;设计报告要求:A4纸,详细设计部分主要叙述本人的工作内容设计报告的格式:(1)封面(题目、指导教师、专业、班级、姓名、学号)(见附录1)(2)设计任务书(3)目录(4)需求分析(5)概要设计(6)详细设计(含主要代码)(7)调试分析、测试结果(8)用户使用说明(9)附录或参考资料四、进度安排设计在学期的第16、17周进行,时间安排如下:序号内 容时间(天)1系统分析12设计23编码、测试54验收15编写课程设计报告1 合计10五、成绩评定办法成绩分为优(A)、良(B)、中(C)、及格(D)、不及格(E)五个等级。其中设计表现占30%,验收40%,设计报告占30%。1.设计表现:教师可依据学生使用实验环境的能力、观察和分析实验现象的能力、实验结果和数据的正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。2.验收:要求学生演示设计的程序,讲解设计思路、方法、解决的主要问题,教师根据具体情况向每个学生提问2至3个问题。3.设计报告:学生设计后应按时完成设计报告。要求:内容充实、写作规范、项目填写正确完整、书面整洁等。 目录一、 需求分析5二、 概要设计51数据结构 52函数原型53. 全局变量6三、 运行环境6四、 开发工具和编程语言6五、 详细设计6六、 调试分析13七、 测试结果13八、 参考文献20九、 课程总结21一 需求分析请求调页存储管理方式的模拟是基于LRU算法的设计而设计的,通过学习计算机操作系统中的请求调页存储管理方式的几种算法,我选择了最近最久未使用算法即LRU算法实现请求调叶存储管理,通过具体的程序来模仿LRU的工作机制。二 概要设计1数据结构依据给定的数据信息,数组必须以结构体实现,结构类型的层次结构如下:typedef struct BLOCK/声明一种新类型物理块类型 int pagenum;/页号int accessed;/访问字段,其值表示多久未被访问BLOCK;2函数原型清单:Void main();/主函数void init(int Bsize); /程序初始化函数int findExist(int curpage);/查找物理块中是否有该页面int findSpace(int Bsize);/查找是否有空闲物理块int findReplace();/查找应予置换的页面void display(int Bsize);/显示void suijishu(int r);/产生320条随机数,显示并存储到temp320void pagestring();/显示调用的页面队列void LRU(int Bsize);/ LRU算法3全局变量:int Bsize;int pc;/程序计数器,用来记录指令的序号int n;/缺页计数器,用来记录缺页的次数static int temp320;/用来存储320条随机数BLOCK blockBsize; /定义一大小为4的物理块数组三 运行环境(软硬件环境)硬件:CPU,主板,内存,显示器,硬盘,显卡,键盘等等.软件:WINDOWS XP, Visual c+应用软件.四 开发工具和编程语言开发工具:Visual c+编程语言:c语言五 详细设计#include #include#include#includetypedef struct BLOCK/声明一种新类型物理块类型 int pagenum;/页号int accessed;/访问字段,其值表示多久未被访问BLOCK;int Bsize;BLOCK block32; /模拟内存块int pc;/程序计数器,用来记录指令的序号int n;/缺页计数器,用来记录缺页的次数static int temp320;/用来存储320条随机数/*void init(int Bsize); /程序初始化函数int findExist(int curpage);/查找物理块中是否有该页面int findSpace(int Bsize);/查找是否有空闲物理块int findReplace();/查找应予置换的页面void display(int Bsize);/显示void suijishu(int r);/产生320条随机数,显示并存储到temp320void pagestring();/显示调用的页面队列void LRU(int Bsize);/ LRU算法/*void init(int Bsize) int i; for(i=0;iBsize;i+) blocki.pagenum=-1; blocki.accessed=0; pc=n=0; /-int findExist(int curpage,int Bsize) int i; for(i=0;iBsize; i+)if(blocki.pagenum = curpage ) return i;/检测到内存中有该页面,返回block中的位置 return -1;/-int findSpace(int Bsize) int i;for(i=0; iBsize; i+) if(blocki.pagenum = -1) return i;/找到空闲的block,返回block中的位置 return -1;/-int findReplace(int Bsize) int i,pos = 0; for(i=0; iblockpos.accessed) pos = i;/找到应予置换页面,返回BLOCK中位置 return pos;/-void display(int Bsize)if(Bsize=4) int i; for(i=0; iBsize; i+) if(blocki.pagenum != -1) printf( %02d,blocki.pagenum); printf(n);/-void suijishu(int r) int i,flag=0; pc=r; printf(*按照要求产生的320个随机数:*n); for(i=0;i320;i+) tempi=pc;if(flag%2=0) pc=+pc%320; if(flag=1) pc=rand()% (pc-1); if(flag=3) pc=pc+1+(rand()%(320-(pc+1); flag=+flag%4;printf( %03d,tempi); if(i+1)%10=0) printf(n); /-void pagestring() int i;for(i=0;i320;i+) printf( %02d,tempi/10); if(i+1)%10=0) printf(n);/-void LRU(int Bsize)int exist,space,position ;int i,j,curpage; init(Bsize); for(i=0;i320;i+) pc=tempi; curpage=pc/10; exist = findExist(curpage,Bsize); if(exist=-1)space = findSpace(Bsize); if(space != -1)blockspace.pagenum = curpage; display(Bsize); n=n+1; else position = findReplace(Bsize); blockposition.pagenum = curpage; display(Bsize); n+; else blockexist.accessed = -1;/恢复存在的并刚访问过的BLOCK中页面accessed为-1 for(j=0; j320|i=0&i=320) suijishu(i); printf(*对应的调用页面队列*n); pagestring(); printf(*n); init(i); printf(最近最久未使用置换算法LRU:n); printf(*n); for(t=4;t=32;t+) LRU(t); j=j+1; printf(请输入第%d条指令号(0320)输入-1结束:,j); scanf(%d,&i); 六 调试分析(1).刚开始进行编译时,出现了86个错误和警告,吓了自己一跳,于是就静下心来一点一点分析程序,发现自己竟然那么粗心,不是少了括号就是少了分号,还有一些语法错误,经过慢慢的修改,程序最终顺利运行出来.(2).在调试过程中,有时会显示没有错误和警告,但程序会无法执行,或执行到中间就无法在执行了,于是我就用F10进行调试,发现可能出错的子函数,然后进行仔细分析改正,调试成功.七 测试结果图1 输入错误数字的提示信息图2随机产生的320个数图3对应的调用页面的队列图4 LRU算法(1)图5 LRU算法(2)图6 LRU算法(3)图7 LRU算法(4)图8 LRU算法(5)和计算最近最少使用(LRU)算法在不同内存容量下的命中率八 参考文献1 谭浩强 C程序设计 第三版 北京 清华大学出版社2 丁华伟 C语言程序设计系统 第三版 北京 清华大学出版社3 严蔚敏 数据结构 C语言版 北京 清华大学出版社课程设计总结本程序能通过输入第一条指令号(

温馨提示

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

评论

0/150

提交评论