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

加入VIP,省得不是一点点
 

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

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

下载须知

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

版权提示 | 免责声明

本文(【课程设计】基于Linux的模拟存储器设计与实现说明书.doc)为本站会员(一***)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

【课程设计】基于Linux的模拟存储器设计与实现说明书.doc

1、中北大学 操作系统课程设计 说 明 书 学 院 、 系 : 软件学院 专 业 : 软件工程 学 生 姓 名: 学 号: 设 计 题 目 : 基于 Linux 的模拟存储器管理 的 设 计 与 实 现 起 迄 日 期 : 指 导 教 师 : 2012 年 1 月 7 日 1 1 需求分析 软件设计功能:模拟内存及外存的分配,手动输入得到进程调度序列,根据页面置换算法 的选择进行相应的页面置换操作,以图表的形式在屏幕上输出各进程页面置换过程并且显 示出相应页面置换算法的缺页率及置换率,通过缺页率及置换率的对比看出各算法的优劣。 软件设计的目的:存储器管理是操作系统的重要功能之一,其中的页面置换算法

2、是虚拟存 储管理实现的关键,通过本次实验理解内存页面调度的机制,在模拟实现 FIFO、LRU、NRU 和 OPT 几种经典页面置换算法的基础上,比较各种置换算法的效率和优缺点,从而了解虚 拟存储实现的过程。 软件设计的任务:模拟实现四种经典页面置换算法,在屏幕上输出各进程页面置换过程, 每种页面置换算法的缺页率和置换率,对比各算法的优劣。 最终获得的成果:课程设计任务书,课程设计说明书 以及模拟存储器管理系统软件。 2 总体设计 2.1 当运行程序时,程序提示用户输入数据,当用户按照其输入数据后就对数据进 行分析, 分析其属于哪个进程,然后再选择算法,对其进行运算。 构件图: F I F O

3、算 法 模 块 存储器管理程序 L R U 算 法 模 块 N U R 算 法 模 块 O P T 算 法 模 块 2 2.2 主要函数有: 2.21:所有算法都会用到的函数有: ( 1) init():初始化 (2) getSequ():用于取得从控制台输入的序列 (3)destroySequ():初始化序列数组 (4)int classifyPageDetail(int pageValue):判断页号为 pageValue 的页 属于哪个进程 (5)setResult():求得缺页率与置换率 (6)selectType():选择操作的函数 2.22:各算法中的函数: 主要就是些数据的添加、

4、删除、修改以及判断的一些基本函数与各算法实现其特 定功能的函数,这些由小组中分配到任务的人自行制定需要的函数。 2.23:输出函数 (1) printSequ():输出之前输入的调度序列 (2) print1():输出各进程的调度序列及缺页率置换率 (3) printComInfo():输出各种算法的比较信息 (4) paintMian():输出主界面 3详细设计 小组分配做的是 LRU(Least Recently Used)算法即最近最久未使用置换算法。 LRU 算法是根据页面调入内存后的使用情况进行决策,选择最近最久未使用的页面予以淘 汰。 实现 LRU 算法采用了数组,用数组模拟计算机

5、中实现该算法所需要的硬件支持-寄存器。 初始数组: void InitArr(PROCESS *pro) int i; for(i=0;ipagei=(Page *)malloc(sizeof(Page); 判断指定页面所属哪个进程后调用 coreOfLru 函数,其中调用 sort2 函数判断页面是否在 内存中,根据指定页面在内存中的情况,调用 add2 和 update2 函数: int sort2(int value,PROCESS *pro) int i; for(i=0;istepNow;i+) if(pro-pagei!=NULL return -1; void add2(int

6、value,PROCESS *pro) int m; m=pro-stepNow; pro-pagem-addr=value; pro-pagem-time=0; void update2(int value,PROCESS *pro) int i,j; int max=0; for(i=0;ipagei)-timemax) max=(pro-pagei)-time; j=i; pro-pagej-addr=value; pro-pagej-time=0; void coreOfLru(int value,PROCESS *pro) int j,k; if(sort2(value,pro)co

7、unt+; if(pro-stepNowstepNow+; else pro-m+; update2(value,pro); if(pro-page0!=NULL) for(j=0;jstepNow;j+) 5 pro-detailpro-stepNowj=pro-pagej-addr; printf(“%d “,pro-detailpro-stepNowj); else int n=sort2(value,pro); pro-pagen-time=0; for(k=0;kpagek-time+; 调用 LRU 算法后求出置换率及缺页率,求出后销毁数组: void destroy2(PROCE

8、SS *pro) int i; for(i=0;istepNow;i+) free(pro-pagei); void destroyArr() if(pro1.page0!=NULL) destroy2( if(pro2.page0!=NULL) destroy2( if(pro3.page0!=NULL) 6 destroy2( 输入页面调度顺序(输入 0 或 45 之外的数并回车表示输入完毕): 输入页面掉度的顺序后,显示出页面调度的总数及显示出主操作界面,并选择操作序号: 7 选择操作序号 2 即 LRU 算法后,显示出各进程的页面置换过程及相应进程的调度页数, 缺页次数,缺页率,置换率

9、: 4.心得体会 8 这次的操作系统课程设计是在 Linux 平台下,采用 C 语言进行设计,并用 gcc 进行编译, 调试通过的。小组分配做的是基于 Linux 的模拟存储器的设计与实现,开始的困难就是不 清楚到底做什么,需求分析阶段花费较长时间,在如何模拟内存分配上小组成员存在很大 分歧,最后才弄明白设计的重点在于页面调度上而不是模拟内外存的分配上。再一次的用 实践证明了需求分析的重要性。小组成员每人实现一个算法,提炼出实现各算法的公共部 分,再整合。初次接触 Ubuntu,立刻熟悉 vi 命令以及如何使用 gcc 编译调试。深入掌握 了如何实现页面置换操作,纠正学习理论时的错误理解认识,同时又掌握了进程并发。

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。