ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:234.27KB ,
资源ID:9300998      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9300998.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统课程设计报告模板.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统课程设计报告模板.docx

1、操作系统课程设计报告模板东莞理工学院城市学院计算机操作系统课程设计题 目: 班 级: 2011级软件工程 班 小组成员: 指导教师: 彭义春 老师 时 间: 2013.6. 2013.6. 地 点: 东莞理工学院城市学院计算机与信息科学系制2013年 6 月目 录工作进度表 2组员分工 21. 目的及意义 32. 课程设计任务及要求 42.1 设计任务 42.2 设计要求 43. 算法及数据结构 53.1 算法总体设计思想 53.2 先来先服务(FCFS)模块 53.3 最短寻道时间优先算法(SSTF)模块 63.4 扫描算法(SCAN)模块 73.5 循环扫描算法(CSCAN)模块 84.

2、程序设计与实现 104.1 系统流程图 104.2 程序代码 104.3 实验结果 155. 结论 196. 收获、体会和建议 20参考文献 20工作进度表时间完成工作完成人周一完成课程设计的需求分析利锦荣,黄志彬周二画算法的程序流程图, 设计并编写界面部分代码利锦荣,黄志彬周三根据题目设计编辑代码利锦荣,黄志彬周四将代码在linux环境中运行并调试利锦荣周五编写课程设计报告和心得体会;黄志彬组员分工201143502222利锦荣(组长)2011502218 黄志彬1、设计并编写界面部分代码;2、负责扫描算法(SCAN)和循环扫描算法(CSCAN)的代码编写并调试;3、 将四个磁盘调度算法整合

3、并和队友讨论,优化算法;4、 将代码在linux环境中运行并调试;5、 编写课程设计报告和心得体会;1、 负责先来先服务算法(FCFS)和最短寻道时间优先算法(SSTF)的代码编写并调试;2、 和队友共同讨论并优化算法;3、 画算法的程序流程图;4、 编写课程设计报告和心得体会;1. 目的及意义本课程设计主要任务就是在多用户操作系统支持下建立多用户多级文件系统的设计。具体说来,主要是为了达到下述实验目的: (1)了解并掌握文件系统中用于管理所必须的数据结构。(2)了解并掌握主要的文件操作命令的实现方法。(3)通过课程实践掌握课程设计的方法和流程,并总结设计经验,提出更好的改进方法。2. 课程设

4、计任务及要求2.1 设计任务编程演示三种存储管理方式的地址换算过程,分别为分页方式的地址换算,分段方式的地址换算,段页式的地址换算。分页方式通过逻辑地址算出页号与叶内地址,然后通过页表来实现向物理地址的转换。分段方式通过段号和段内地址得到物理地址。段叶式通过段号得到页表首地址,通过页号得到块号,进而得到物理地址。2.2 设计要求1、分页方式的地址换算。具体要求:(1)随机生成页面大小,但一定为2的幂,系统随机生成一个至少有10行的页表,页号、块号从0开始。(2)用户给定一个逻辑地址,首先显示此地址的页号和页内地址,然后显示是第几块,最后显示其物理地址。2、分段方式的地址换算。具体要求:(1)由

5、系统随机生成5个左右的段,并随机生成一个段表并显示。(2)由用户给定一个逻辑地址,包括段号和段内地址,最后显示其物理地址。3、段页式的地址换算。具体要求:(1)先由系统随机生成5个左右的段,然后再由系统随机生成页面大小,但一定为2的幂。然后生成段表和页表,具体内容参照课本P140的图4-22。(2)由用户给定一个逻辑地址,包括段号和段内地址,最后显示其物理地址3. 算法及数据结构3.1 算法总体设计思想在多道程序系统中,低效率通常是由于磁盘类旋转设备使用不当造成的。现实生活中,人多去申请一样东西的时候常常会遇到排队的情况,怎么去排队对于办事效率来说是很重要的。在操作系统中也一样,若有多个方面的

6、进程需要对磁盘进行访问时,也需要排队等待分配,这个时候磁盘调度算法的选择就显得很重要了。访问磁盘有三个因素,分别是查找磁道时间、等待扇区时间和数据传输时间,其中查找时间是决定因素。3.2 分页系统模块3.2.1 功能将随机生成的磁道号数组DiscL复制给临时数组RLine,按数组RLine的顺序进行磁盘调度得到访问的系列,将前一个访问的磁道数与当前访问的磁道数的差值Temp累加起来得到总的寻道总长度All,再用All除以随机生成的磁道个数HanN得到平均寻道长度Aver。3.2.2 数据结构int sp_p30; /段内页号int length; /段长int sp_l; /页表长度3.2.3

7、算法流程图.图3.1分页系统的地址变换机构算法流程图3.3 分段系统模块3.3.1功能将随机生成的磁道号数组DiscL复制给临时数组RLine,通过一个内循环寻找与当前所在的磁道号之间的寻道长度最短的磁道号并输出,将前一个访问的磁道号与当前访问的磁道数的差值Temp累加起来得到总的寻道总长度All,再用All除以随机生成的磁道号个数TrackN得到平均寻道长度Aver。3.3.2 数据结构int sp_p30; /段内页号int length; /段长int sp_l; /页表长度3.3.3算法流程图图3.2分段系统算法流程图3.4 段页式系统模块3.4.1功能将随机生成的磁道号数组DiscL

8、复制给临时数组a,然后对数组a进行由小到大排序,通过一个内循环寻找与当前所在的磁道号之间的寻道长度最短的磁道号并输出,根据磁头和当前访问的磁道号大小的比较来确定磁盘扫描方向,接着按照确定的方向输出数组a。将前一个访问的磁道号与当前访问的磁道号的差值Temp累加起来得到总的寻道总长度All,再用All除以随机生成的磁道号个数TrackN得到平均寻道长度Aver。3.4.2 数据结构int sp_p30; /段内页号int length; /段长int sp_l; /页表长度3.4.3算法流程图图3.3段页式系统算法流程图4. 程序设计与实现4.1 系统流程图图4.1 系统流程图4.2 程序代码#

9、include #include#include#include#define Maddress 1040384#define pagebs 1024typedef struct pagetableint page_p;pagetable;typedef struct sectiontableint section_l;int section_a;sectiontable;typedef struct sptableint sp_p30; /段内页号int length; /段长int sp_l; /页表长度sptable;int page_size,page_number=1,page_dx

10、;int section_number;int sp_snumber,sp_psize,sp_dx;pagetable pt50;sectiontable st50;sptable sp50;void createPT() int i,j,p; srand(unsigned)time(0); page_number=rand()%5+5; page_size=(int)pow(2,rand()%5+9); /页面大小2的913幂,即512B8K page_dx=Maddress/page_size; /系统总页数 for(i=0;ipage_number;i+) pt: p=rand()%pa

11、ge_dx; for(j=0;ji;j+) if(p=ptj.page_p) goto pt; pti.page_p=p; void showpage() int i; printf(内存地址0-1040384n); printf(页面大小:%dn,page_size); printf(页号tt块号tt块号始地址n); for(i=0;ipage_number) printf(该逻辑地址越界!n);return 0; printf(页面大小为%dn,page_size); printf(-n); printf(页号tt块号tt页内地址n); printf(%-5dtt%-5dtt%-5dn,p

12、num,ptpnum.page_p,w); printf(-n); printf(物理地址(块号*页面大小+页内地址):%dnn,page_size*ptpnum.page_p+w); return 1;void createST() int i,j,size,address,p; srand(unsigned)time(0); section_number=rand()%5+5; /5-10个段号 for(i=0;iMaddress) i-;continue; for(j=0;j=stj.section_a&p=(stj.section_a+stj.section_l) goto st; s

13、ti.section_a=address; sti.section_l=size; void showsection() int i; printf(内存地址0-1040384n); printf(段号tt基址tt段长n); for(i=0;isection_number|logic_lstlogic_n.section_l) printf(逻辑地址越界!n); return 0; printf(该段段长为%dn,stlogic_n.section_l); printf(-n); printf(段号tt基址tt位移量n); printf(%-5dtt%-5dtt%-5dn,logic_n,st

14、logic_n.section_a,logic_l); printf(-n); printf(物理地址(基址+位移量):%dnn,stlogic_n.section_a+logic_l);void createSPT() int i,j,address,p,t,q,k,pages; srand(unsigned)time(0); sp_snumber=rand()%5+5; /5-10个段号 sp_psize=(int)pow(2,rand()%2+9); /页大小为512-1024 pages=Maddress/sp_psize; /系统页面数 for(i=0;isp_snumber;i+)

15、 sp: spi.length=rand()%3072+pagebs; /一个段长1024-8192 spi.sp_l=spi.length/sp_psize+1; /段页表的段内页表大小 for(t=0;tspi.sp_l;t+) spi.sp_pt=rand()%pages; for(q=0;q(i-1);q+) for(k=0;kspq.sp_l;k+) if(spi.sp_pt=spq.sp_pk) goto sp; for(k=0;kt;k+) if(spi.sp_pt=spi.sp_pk) goto sp; void showSPT() int i,j; printf(内存地址0-

16、1040384n); printf(页面大小%dn,sp_psize); printf(段号tt段内页号t段长tt块号tt块号始地址n); for(i=0;isp_snumber;i+) for(j=0;jsp_snumber) printf(段号超长!n); return 0; else if(logic_psplogic_n.sp_l) printf(页号超长!n); return 0; else if(splogic_n.sp_plogic_p+logic_a)splogic_n.length) printf(页内地址超长!n); return 0; printf(页面大小为%dn,sp

17、_psize); printf(该段段长为%dn,splogic_n.length); printf(-n); printf(段号tt段内页号t块号tt页内地址n); printf(%-5dtt%-5dtt%-5dtt%-5dn,logic_n,logic_p,splogic_n.sp_plogic_p,logic_a); printf(-n); printf(物理地址(块号*页面大小+页内地址):%dnn,splogic_n.sp_plogic_p*sp_psize+logic_a);return 1;int main()int num; createPT(); createST(); cr

18、eateSPT();do printf(-三种存储管理方式的地址换算-n); printf(*1.显示页表*n); printf(*2.显示段表*n); printf(*3.显示段页表*n); printf(*4.分页方式地址换算*n); printf(*5.分段方式地址换算*n); printf(*6.段页式地址换算*n); printf(*7.结束运行*n); printf(-n); printf(请输入选项:); scanf(%d,&num); switch(num) case 1:showpage(); break; case 2:showsection(); break; case

19、3:showSPT(); break; case 4: page(); break; case 5: section(); break; case 6: SPT(); break; case 7:exit(1); while(1);return 1;4.3 实验结果(1)linux环境中运行:图4.2 linux环境中运行(2)选择1:显示页表图4.3显示页表结果截图(2)选择4:分页方式地址换算图4.4分页方式地址换算结果截图(4)选择2:显示段表图4.5显示段表结果截图(5)选择5:分段方式地址换算图4.6分段方式地址换算结果截图(6)选择3:显示段页表图4.7显示段页表结果截图(7)选择

20、6:段页式地址换算图4.8段页式地址换算截图(8)选择0:结束运行图4.9结束运行截图5. 结论编程演示三种存储管理方式的地址换算过程,分别为分页方式的地址换算,分段方式的地址换算,段页式的地址换算。分页方式通过逻辑地址算出页号与叶内地址,然后通过页表来实现向物理地址的转换。分段方式通过段号和段内地址得到物理地址。段叶式通过段号得到页表首地址,通过页号得到块号,进而得到物理地址。程序主要有三个功能,分别是分页方式的地址换算,分段方式的地址换算,段页式的地址换算。Switch函数包含4个case语句,分别用page,Segment,SegPagt完成分页方式的地址换算,分段方式的地址换算,段页式

21、的地址换算。6. 收获、体会和建议利锦荣:在这次的操作系统课程设计中,通过查找资料,我对这些知识理解更加深刻。在这次课程设计作业的过程中由于在设计方面我的经验还不是很丰富,理论基础知识把握得有点不牢固,在设计中难免会出现这样那样的困难。苦思冥想一段时间后,在这方面的知识比较缺乏,于是我们查阅网上资源,找到了方法,把任务解决了。这些都暴露出了前期我在这些方面知识的欠缺和经验的不足。对于我来说,收获最大的是方法和能力;那些分析和解决题目的能力。在整个课程设计的过程中,我发现我们学生在经验方面十分缺乏,空有理论知识,没有理性的知识;有些东西可能与实际脱节。但通过这次的课程设计,我们将学习的知识和实际

22、的情况结合了起来,提高了我们对知识的理解,加强了我们对知识的运用能力。黄志彬:这次课程设计,让我彻底明白了三种存储管理方式的地址换算算法,还让我知道做事情要心中个整体的概念,然后再去脚踏实地的去学习,得到自己想要的结果,开始的时候我没有进行深入的考虑,只是认为简单,但是做的时候就发现并不是这样,调试了很久都没没有成功,然后我就去查看资料,彻底的去了解要用到的知识点及算法,经过努力,我得到了自己期望的结果。这次课程设计,不仅让我对操作系统这门课程有了更深入的了解,还给了我很大的启示,做一件事情,就要从根本上去了解它,然后寻求解决的方案,这样才能达到自己的目的,一味的去追求结果是个很不好的习惯,我们应该在解决问题的过程中去提高自己。参考文献1 汤小丹,梁红兵,哲风屏,汤子瀛计算机操作系统(第三版)M西安:西安电子科技大学出版社,20072 谭浩强C程序设计(第四版)M北京:清华大学出版社,20103 严蔚敏,吴伟民数据结构M北京: 清华大学版社,2002

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1