操作系统课程设计刘小亮doc.doc
上传人:sy****28 上传时间:2024-09-13 格式:DOC 页数:12 大小:184KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

操作系统课程设计刘小亮doc.doc

操作系统课程设计刘小亮doc.doc

预览

免费试读已结束,剩余 2 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

操作系统课程设计报告姓名:刘小亮学号:201140030226班级:1140302题目:页面置换算法模拟设计指导老师:邹云康2013年1月16日一、实验目的1、熟悉内存分页管理策略。2、了解页面置换的算法。3、掌握一般常用的调度算法。4、根据方案使算法得以模拟实现。5、锻炼知识的运用能力和实践能本次课程设计是在学习完《操作系统教程》后进行的一次全面的综合训练,通过课程设计,让学生更好的掌握操作系统的原理以及实现方法,加深对操作系统基础理论和重要算法的理解加强对学生的动手能力。熟悉页面置换算法及其实现,引入计算机操作性能评价方法的概念。二、实验要求计算并输出下述各种算法在不同内存容量下的命中率。A.FIFO先进先出的算法B.LRU最近最少使用算法C.OPT最佳淘汰算法(先淘汰最不常用的页地址)三、开发环境软件环境:w7编程软件:VC++6.0运行平台:Win32硬件:普通个人pc机四.设计思想:OPT基本思想:是用一维数组page[pSIZE]存储页面号序列,memery[mSIZE]是存储装入物理块中的页面。数组next[mSIZE]记录物理块中对应页面的最后访问时间。每当发生缺页时,就从物理块中找出最后访问时间最大的页面,调出该页,换入所缺的页面。FIFO基本思想:是用队列存储内存中的页面,队列的特点是先进先出,与该算法是一致的,所以每当发生缺页时,就从队头删除一页,而从队尾加入缺页。或者借助辅助数组time[mSIZE]记录物理块中对应页面的进入时间,每次需要置换时换出进入时间最小的页面。LRU基本思想:是用一维数组page[pSIZE]存储页面号序列,memery[mSIZE]是存储装入物理块中的页面。数组flag[10]标记页面的访问时间。每当使用页面时,刷新访问时间。发生缺页时,就从物理块中页面标记最小的一页,调出该页,换入所缺的实验过程:流程图:将页号放入物理块中,编号加1引用串编号大于物理块数?载入页号序列,从第0个得到页号开始页号在物理块中?根据选择的置换算法完成置换页号序列载完?结束是否是是是是源程序#include<iostream.h>#include<stdlib.h>#include<time.h>#include<stdio.h>#defineL320intM;//内存块structPro//定义一个结构体{intnum,time;};Input(intm,Prop[L])//打印页面走向状态{cout<<"请输入页面走向长度(2~320):";do{cin>>m;if(m>320||m<2)cout<<"实际页面长度须在2~320之间;请重新输入:";elsebreak;}while(1);inti,j;j=time(NULL);//取时钟时间srand(j);//以时钟时间x为种子,初始化随机数发生器cout<<"输出随机数:";for(i=0;i<m;i++){p[i].num=rand()%10;//产生1到10之间的随即数放到数组p中p[i].time=0;cout<<p[i].num<<"";}cout<<endl;returnm;}voidprint(Pro*page1)//打印当前的页面{Pro*page=newPro[M];page=page1;for(inti=0;i<M;i++)cout<<page[i].num<<"";cout<<endl;}intSearch(inte,Pro*page1)//寻找内存块中与e相同的块号{Pro*page=newPro[M];page=page1;for(inti=0;i<M;i++)if(e==page[i].num)returni;//返回i值return-1;}intMax(Pro*page1)//寻找最近最长未使用的页面{Pro*page=newPro[M];page=page1;inte=page[0].time,i=0;while(i<M)//找出离现在时间最长的页面{if(e<page[i].time)e=page[i].time;i++;}for(i=0;i<M;i++)if(e==page[i].time)returni;//找到离现在时间最长的页面返回其块号return-1;}intCount(Pro*page1,inti,intt,Prop[L])//记录当前内存块中页面离下次使用间隔长度{Pro*page=newPro[M];page=page1;intc