页面置换算法课程设计
1. 求高手帮忙做一下课程设计,关于最佳页面置换算法的,
操作系统是计算机教学中最重要的环节之一,也是计算机专业学生的一门
重要的专业课程。
操作系统质量的好坏,
直接影响整个计算机系统的性能和用户
对计算机的使用。
一个精心设计的操作系统能极大地扩充计算机系统的功能,
充
分发挥系统中各种设备的使用效率,
提高系统工作的可靠性。
由于操作系统涉及
计算机系统中各种软硬件资源的管理,
内容比较繁琐,
具有很强的实践性。
要学
好这门课程,必须把理论与实践紧密结合,才能取得较好的学习效果。
本课程设计是学生学习完
《计算机操作系统》
课程后,
进行的一次全面的综
合训练,通过课程设计,让学生更好地掌握操作系统的原理及实现方法
,
加深对
操作系统基础理论和重要算法的理解,加强学生的动手能力。
熟悉页面置换算法及其实现,引入计算机系统性能评价方法的概念。
二、设计题目
:
页面置换算法模拟程序
2.1
设计内容
编制页面置换算法的模拟程序。
2.2
设计要求
1).
用随机数方法产生页面走向,页面走向长度为
L(15<=L<=20),L
由控制台输
入。
2).
根据页面走向,分别采用
Optinal
、
FIFO
、
LRU
算法进行页面置换,统计缺页
率。
3).
假定可用内存块为
11
int a;
t=Search(p[i].num,page);
if(t>=0)//
如果已在内存块中
{
page[t].time=0;//
把与它相同的内存块的时间置
0
for(a=0;a<M;a++)
if(a!=t)page[a].time++;//
其它的时间加
1
cout<<p[i].num<<" ";
cout<<"
不缺页
"<<endl;
}
else//
如果不在内存块中
{
n++; //
缺页次数加
1
t=Max(page);//
返回最近最久未使用的块号赋值给
t
page[t].num=p[i].num;//
进行替换
page[t].time=0;//
替换后时间置为
0
cout<<p[i].num<<" ";
print(page);
for(a=0;a<M;a++)
if(a!=t)page[a].time++;//
其它的时间加
1
}
i++;
}
cout<<"
缺页次数:
"<<n<<"
缺页率:
"<<n/m<<endl;
}
if(c==3)//OPT
页面置换
{
n=0;
cout<<"
******************************************
"<<endl;
cout<<endl;
cout<<" OPT
算法置换情况如下
:"<<endl;
cout<<endl;
cout<<"
******************************************
"<<endl;
while(i<m)
{
if(Search(p[i].num,page)>=0)//
如果已在内存块中
12
{
cout<<p[i].num<<" ";
cout<<"
不缺页
"<<endl;
i++;
}
else//
如果不在内存块中
{
int a=0;
for(t=0;t<M;t++)
if(page[t].num==0)a++;//
记录空的内存块数
if(a!=0)//
有空内存块
{
int q=M;
for(t=0;t<M;t++)
if(page[t].num==0&&q>t)q=t;//
把空内存块中块号最
小的找出来
page[q].num=p[i].num;
n++;
cout<<p[i].num<<" ";
print(page);
i++;
}
else
{
int temp=0,s;
for(t=0;t<M;t++)//
寻找内存块中下次使用离现在最久的
页面
if(temp<Count(page,i,t,p))
{
temp=Count(page,i,t,p);
s=t;
}//
把找到的块号赋给
s
page[s].num=p[i].num;
n++;
cout<<p[i].num<<" ";
13
print(page);
i++;
}
}
}
cout<<"
缺页次数:
"<<n<<"
缺页率:
"<<n/m<<endl;
}
}while(c==1||c==2||c==3);
return 0;
}
五.运行结果演示
m(3<=m<=5)
,
m
由控制台输入,初始时,作业页面都不在
内存。
4).
要求写出一份详细的设计报告。课程设计报告内容包括:设计目的、设计内
容、设计原理、算法实现、流程图、源程序、运行示例及结果分析、心得体会、
参考资料等。
2. 页面置换算法课程设计然后我手残党,运行不了,不知道错误在什么地方
OK ,我帮你搞定,
3. 页面置换算法的模拟实现
XXXXXXX
4. 要弄这个题目的课程设计,模拟实现页面置换算法,页面缓冲置换算法。
#include <iostream> #include <deque> #include <ctime> using namespace std; typedef struct { int id; //页面ID int stayTime; //内存中驻留时间 int unUseTime; //已经多久未被使用 }CPage; deque<int> RunQueue; deque<CPage> interPage; //内存中的四个页面 deque<CPage> exterPage; //外存中的N个页面 int presentSeat; //目前运行到了队列的第几个? int lackNum[3] ={0}; int getRandNum(int range) //返回[0,range)范围内的整数 { return static_cast<int>(rand()%range); } int findPageIdByCmdId(int cmdId) //通过强制转换成整数的形式判断指令属于哪个页面 { return static_cast<int>(cmdId/10); } void InitDevice() //初始化运行队列 按照25% 50% 25%的标准生成 { srand(static_cast<int>(time(NULL))); int t_cmdNum = getRandNum(320); //随机选择第一条指令 RunQueue.push_back(t_cmdNum); //将其插入队列 if(t_cmdNum < 319) RunQueue.push_back(t_cmdNum+1); //顺序执行下一条指令
5. 内存FIFO、LRU页面置换算法的设计
完整代码已发到你的邮箱了,请注意查收。记得一定要加分哦!!!!
6. 操作系统课程设计,用C#实现内存页面的置换。实现算法间比较
页面置换算法
一.题目要求:
通过实现页面置换算法的FIFO和LRU两种算法,理解进程运行时系统是怎样选择换出页面的,对于两种不同的算法各自的优缺点是哪些。
要求设计主界面以灵活选择某算法,且以下算法都要实现 1) 最佳置换算法(OPT):将以后永不使用的或许是在最长(未来)时间内不再被访问的页面换出。
2) 先进先出算法(FIFO):淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。
3) 最近最久未使用算法(LRU):淘汰最近最久未被使用的页面。 4) 最不经常使用算法(LFU) 二.实验目的:
1、用C语言编写OPT、FIFO、LRU,LFU四种置换算法。 2、熟悉内存分页管理策略。 3、了解页面置换的算法。 4、掌握一般常用的调度算法。 5、根据方案使算法得以模拟实现。 6、锻炼知识的运用能力和实践能力。 三、设计要求
1、编写算法,实现页面置换算法FIFO、LRU;
2、针对内存地址引用串,运行页面置换算法进行页面置换; 3、算法所需的各种参数由输入产生(手工输入或者随机数产生); 4、输出内存驻留的页面集合,页错误次数以及页错误率;
四.相关知识:
1.虚拟存储器的引入:
局部性原理:程序在执行时在一较短时间内仅限于某个部分;相应的,它所访问的存储空间也局限于某个区域,它主要表现在以下两个方面:时间局限性和空间局限性。
2.虚拟存储器的定义:
虚拟存储器是只具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统。
3.虚拟存储器的实现方式:
分页请求系统,它是在分页系统的基础上,增加了请求调页功能、页面置换功能所形成的页面形式虚拟存储系统。
请求分段系统,它是在分段系统的基础上,增加了请求调段及分段置换功能后,所形成的段式虚拟存储系统。
4.页面分配:
平均分配算法,是将系统中所有可供分配的物理块,平均分配给各个进程。 按比例分配算法,根据进程的大小按比例分配物理块。
考虑优先的分配算法,把内存中可供分配的所有物理块分成两部分:一部分按比例地分配给各进程;另一部分则根据个进程的优先权,适当的增加其相应份额后,分配给各进程。
5.页面置换算法:
常用的页面置换算法有OPT、FIFO、LRU、Clock、LFU、PBA等。 五、设计说明
1、采用数组页面的页号
2、FIFO算法,选择在内存中驻留时间最久的页面予以淘汰;
分配n个物理块给进程,运行时先把前n个不同页面一起装入内存,然后再从后面逐一比较,输出页面及页错误数和页错误率。
3、LRU算法,根据页面调入内存后的使用情况进行决策;
同样分配n个物理块给进程,前n个不同页面一起装入内存,后面步骤与前一算法类似。
选择置换算法,先输入所有页面号,为系统分配物理块,依次进行置换: 六.设计思想:
OPT基本思想:
是用一维数组page[pSIZE]存储页面号序列,memery[mSIZE]是存储装入物理块中的页面。数组next[mSIZE]记录物理块中对应页面的最后访问时间。每当发生缺页时,就从物理块中找出最后访问时间最大的页面,调出该页,换入所缺的页面。
FIFO基本思想:
是用队列存储内存中的页面,队列的特点是先进先出,与该算法是一致的,所以每当发生缺页时,就从队头删除一页,而从队尾加入缺页。或者借助辅助数组time[mSIZE]记录物理块中对应页面的进入时间,每次需要置换时换出进入时间最小的页面。
LRU基本思想:
是用一维数组page[pSIZE]存储页面号序列,memery[mSIZE]是存储装入物理块中的页面。数组flag[10]标记页面的访问时间。每当使用页面时,刷新访问时间。发生缺页时,就从物理块中页面标记最小的一页,调出该页,换入所缺的页面。 七.流程图:
如下页所示
六.运行结果: 1. 按任意键进行初始化:
2. 载入数据:
3. 进入置换算法选择界面:
4.运算中延迟操作:
5.三种算法演示结果: