请求页式管理缺页中断模拟设计FIFO,OPT
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计
题目系统软件开发实训A 学院计算机科学与技术学院专业计算机科学与技术专业班级计算机1102班
姓名田蓝
指导教师李玉强
2014 年 1 月13 日
课程设计任务书
学生姓名:田蓝专业班级:计算机1102班
指导教师:李玉强工作单位:计算机科学与技术学院题目: 请求页式管理缺页中断模拟设计--FIFO、OPT
初始条件:
1.预备内容:阅读操作系统的内存管理章节内容,了解有关虚拟存储器、页式存储管理等概念,并体会和了解缺页和页面置换的具体实施方法。
2.实践准备:掌握一种计算机高级语言的使用。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写
等具体要求)
1.实现指定淘汰算法。能够处理以下的情形:
⑴能够输入给作业分配的内存块数;
⑵能够输入给定的页面,并计算发生缺页的次数以及缺页率;
⑶缺页时,如果发生页面置换,输出淘汰的页号。
2.设计报告内容应说明:
⑴课程设计目的与功能;
⑵需求分析,数据结构或模块说明(功能与框图);
⑶源程序的主要部分;
⑷测试用例,运行结果与运行情况分析;
⑸自我评价与总结。
时间安排:
设计安排3周:
查阅、分析资料 1天
系统软件的分析与建模 4天
系统软件的设计 5天
系统软件的实现 3天
撰写文档 1天
课程设计验收答辩 1天
设计验收安排:设计周的第三周的指定时间到实验室进行上机验收。
设计报告书收取时间:课程设计验收答辩完结时。
(注意事项:严禁抄袭,一旦发现,抄与被抄的一律按0分记)
指导教师签名: 2013 年 12 月 10日
系主任(或责任教师)签名:2013 年12 月10日
请求页式管理缺页中断模拟设计
——FIFO、OPT
1课程设计目的与功能
1.1设计目的
结合《操作系统》所学内存页式管理章节,掌握虚拟内存设计的重要性,熟悉和掌握请求分页式存储管理的实现原理,通过分析、设计和实现页式虚拟存储管理缺页中断的模拟系统,重点掌握当请求页面不在内存而内存块已经全部被占用时的替换算法(主要通过FIFO和OPT实现),并考察替换算法的评价指标——缺页次数和缺页率,得到每次淘汰的页面。
高级语言设计并实现出的结果程序要能够很好地显示页面调入和替换详细信息,能够输入要访问的页面的顺序,及能够输入给作业分配的内存块数。
1.2初始条件及可发环境
1.2.1初始条件
1.预备内容:阅读操作系统的内存管理章节内容,了解有关虚拟存储器、页式存储管理等概念,并体会和了解缺页和页面置换的
具体实施方法。
2.实践准备:掌握一种计算机高级语言的使用。
1.2.2开发环境
(1)使用系统:Windows 7
(2)使用语言:java
(3)开发工具:eclipse
1.3功能实现
设计的结果程序能实现FIFO、OPT算法模拟页式存储管理缺页中断,主要能够处理以下的情形:
(1) 用户能够输入给定分配的内存块数;
(2) 用户输入给定的页面,并计算发生缺页的次数、缺页率及淘汰页面次序;
(3)缺页时,如果发生页面置换,输出淘汰的页号;
(4) 程序可随机生成页面序列,或用户输入;
(5)能够显示分配的内存块数的存储情况
2需求分析及设计说明
2.1需求分析
由于纯页式存储管理提高了内存的利用效率,但并不为用户提供虚存,并且会产生磁盘碎片问题。用户程序将受到物理内存大小的限制。而
虚存的存储管理技术——请求分页存储管理技术和请求分段技术,则很好
的解决了这个问题。该设计虚拟实现请求分页管理(只实现FIFO和OPT)。
请求分页系统是在分页系统的基础上,增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统。它允许只装入部分页面的程序和数
据,便启动运行。以后,再通过调页功能和页面置换功能,陆续把即将要
运行的页面调入内存,同时把暂时不运行的页面换出到外存上,置换时以
页面为单位。实现将程序正在运行时所需的但尚未在内存的页面调入内存,再将内存中暂时不用的页面从内存置换到外存磁盘上。
而我选择的是FIFO,OPT调度算法。主要考虑三种情况:1.不缺页,此时我不需要从外存中调入新的页面进入内存;2.缺页,但是内存空间块
数没有满,不需要淘汰内存中的页面,把缺页的页面直接调入内存中;3.
缺页,但是内存空间已经满了,访问页面时需要淘汰旧的的页面,从外存
中调入新的页面进入内存中。
请求分页的具体实现过程如图1
图1请求分页流程图
2.2设计说明
2.2.1算法分析
在进程运行过程中,若其所要访问的页面不在内存,需要把它们调入内存,但已无空闲已空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据,送磁盘的对换区。但应将哪个页面调出,必须根据替换算法来确定。
该设计采用的是常见置换算法中的先进先出(FIFO)、理想型淘汰算法OPT(Optimal Replacement Algorithm)。
详细算法原理如下:
FIFO(先进先出算法)基本思想:总是选择在内存驻留时间最长的一页将其淘汰,因为最早调入内存的页,不再被使用的可能性比近期调入内存
的大。该算法实现简单,只需要把一个进程调入内存的页面,按先后次序连结成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。但是该算法与进程实际运行的规律不相适应,因为在进程中,有些页面经常被访问,比如有全局变量、常用函数,例程等的页面,FIFO算法并不能保证这些页面不被淘汰。
使用FIFO替换算法效率比较低,可能会比理想型算法要多出一倍。低的原因是:基于处理器按线性顺序访问地址空间这一假设。事实上,许多时候,处理器不是按线性顺序访问地址空间的。例如,执行循环结构的程序段。
使用FIFO算法时,在未给进程或作业分配足够它所需要的页面数时,有时会出现分配的页面数增,缺页次数反而增加的现象(Belady现象)。例如针对请求序列:1 2 3 4 1 2 5 1 2 3 4 5,若分配3个可用内存块,使用FIFO算法,一共会缺页9次,缺页率:75%;而如果分配4个可用内存块,则一共会缺页10次,缺页率:83.3%。
OPT(理想型淘汰算法)基本思想:当要调入一新页而必须淘汰一旧页时,所淘汰的页是以后不再使用的,或者是以后相当长的时间内不会使用的。
采用理想型替换算法,通常可保证获得最低的缺页率。但是由于人们目前无法预知一个进程在内存的若干个页面中,哪个页面是未来最长时间内不再被访问的,因而该算法是无法实现的,但是在模拟设计中,由于是事先给定一个页面序列,即知道各个时刻以前和以后的页面出现情况,所以可实现该算法。在实际系统中,虽无法实现理想型淘汰算法,但是可用它来评价其他替换算法。
2.2.2数据结构
主函数运用两个数组a[]、b[],数组a[]用于存放输入的待处理页面号,b[]数组用于记录内存中页面的置换情况。
FIFO(先来先出算法):将每次进入的页面往数组b[]的最后添加,当缺页发生时,则淘汰b[0]即可。定义两个变量:是否缺页的变量f:f=0时:表示不缺页,不需要淘汰页面;f=1时,表示缺页。而缺页时又需要分两种情况,这时定义另一个变量v,来表示缺页时,内存是否有空余:v=1时:表示发生缺页,