资源简介
实验目的及基本要求
设计和实现最佳置换算法、随机置换算法、先进先出置换算法、最近最久未使用置换算法、简单Clock置换算法及改进型Clock置换算法;通过支持页面访问序列随机发生实现有关算法的测试及性能比较。
代码片段和文件信息
#include
#include
#include
using namespace std;
int const InsideCount = 5;//内存中存放的页面数
int count = 0;
int Inside[InsideCount];
int const PageCount =10;//总的页面数
int Page[PageCount];
int insert = 0;//先到先出置换算法fcfo中表示 当内存满的时候,新进入的页号放的位置
int suiji = 0; //随机置换算法randchange 当内存满的时候,新进入的页号放的位置
int state[InsideCount];//clock置换算法中,内存中的每个页面号对应的状态
int state2[InsideCount][2];// 二维数组,第一行第一列为访问位,第一行的第二列为修改位
double lost = 0.0;
//检测页号是否在内存中
bool isInside(int num){
for(int i = 0; i < InsideCount; i++){
if(Inside[i] == Page[num]){
state[i] = 1;
return true;
}
}
return false;
}
//判断页面是否已经被修改
bool change(){
if((rand()%2+1) == 1 ){
cout<<“该页面被修改“< return true;
}
else
return false;
}
//用于改进型clock置换算法,检测页号是否在内存中并把访问位和修改位置1
bool isInside2(int num){
for(int i = 0; i < InsideCount; i++){
if(Inside[i] == Page[num]){
if(change()){
state2[i][0] = 1;
state2[i][1] = 1;
}
else{
state2[i][0] = 1;
}
return true;
}
}
return false;
}
//用于改进型clock置换算法,判断内存中第几个需要被置换
int whichpage(){
int j;
for(j=0; j < InsideCount;j++){
if(state2[j][0] == 0&&state2[j][1] == 0){
return j;
}
}
for(j=0; j < InsideCount;j++ ){
if(state2[j][0] == 0&&state2[j][1] == 1){
return j;
}
state2[j][0] = 0 ;
}
for(j=0; j < InsideCount;j++ ){
state2[j][0] = 0 ;
}
return whichpage();
}
//最佳置换算法(OPT)
void OPT(int num){
int max = 0; // 表示内存中的页号,下一次出现的距离
int maxchange; //表示内存中下次出现距离最大的页号在内存中的位置
int k;
if(isInside(num)){
cout<<“命中“< for(int i=0 ; i cout<<“物理块“< }
else
if(count == InsideCount){
lost++;
for(int j=0; j < InsideCount; j++){
for( k = num; k < PageCount;k++){
if(Inside[j] == Page[k])
break;
}
if( k > max){
max = k; //k表示在这个地方会再次出现给定页面
maxchange =j;//j 表示把 内存中第j个Inside中的页面从内存拿出,把新的页面放入
}
}
Inside[maxchange] = Page[num];
for(int i=0 ; i cout<<“物理块“< }
else{
Inside[count] = Page[num];
count++;
for(int i=0 ; i cout<<“物理块“< }
}
//随机置换算法
void RAND(int num){
if(isInside(num)){
cout<<“命中“< for(int i=0 ; i cout<<“物理块“< }
else
if(count == InsideCount){
lost++;
suiji = rand()%3;
Inside[suiji] = Page[num];
for(int i=0 ; i cout<<“物理块“< }
else{
Inside[count] = Page[num];
count++;
for(int i=0 ; i cout<<“物理块“< }
}
//先进现出置换算法(FIFO)
void FIFO(int num){
if(isInside(num)){
cout<<“命中“< for(int i=0 ; i cout<<“物理块“<
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-03-24 21:51 页面置换算法\
目录 0 2013-03-24 21:22 页面置换算法\Debug\
文件 202973 2013-03-24 21:22 页面置换算法\Debug\Page.obj
文件 548964 2013-03-24 21:22 页面置换算法\Debug\PageReplace.exe
文件 782216 2013-03-24 21:22 页面置换算法\Debug\PageReplace.ilk
文件 1991140 2013-03-24 20:28 页面置换算法\Debug\PageReplace.pch
文件 1090560 2013-03-24 21:22 页面置换算法\Debug\PageReplace.pdb
文件 66560 2013-03-24 21:22 页面置换算法\Debug\vc60.idb
文件 110592 2013-03-24 21:22 页面置换算法\Debug\vc60.pdb
文件 9007 2013-03-24 21:22 页面置换算法\Page.cpp
文件 4337 2013-03-24 21:51 页面置换算法\PageReplace.dsp
文件 530 2013-03-24 20:28 页面置换算法\PageReplace.dsw
文件 33792 2013-03-24 21:51 页面置换算法\PageReplace.ncb
文件 48640 2013-03-24 21:51 页面置换算法\PageReplace.opt
文件 1317 2013-03-24 21:22 页面置换算法\PageReplace.plg
相关资源
- 嵌入式实时操作系统μC/OS-II与eCos的
- 嵌入式实时操作系统在DATU中的应用
- 嵌入式实时操作系统μC/OS-II下通用驱
- 嵌入式实时操作系统μC/OS-II在ARM上的
- 嵌入式操作系统的解析
- SAC型液压支架控制器检测平台的设计
- 基于MSP430单片机的实时多任务操作系
- 湖南大学操作系统实验报告
- 中标麒麟操作系统指南
- 操作系统最新视频教材链接(百度网
- 操作系统教程课后习题答案
- 操作系统教程 第5版 费翔林 骆斌 pp
- Linux操作系统下配置无密码的RSH访问
- 易语言仿真版源码易语言模拟版本源
- 嵌入式实时操作系统的RAM盘扩展
- 深入解析windows操作系统第六版 上册
- win7 和xp操作系统的打印机一键共享
- 深入解析Windows操作系统第6版 上下册
- 计算机408天勤2019数据结构计算机考研
- 计算机操作系统第4版超清
- 操作系统设计与实现 第三版 上下册
- 操作系统概念第九版原版辅助资源含
- 北航《操作系统》期末试题与答案
- 操作系统期末试卷与答案
- 自考操作系统上机含源代码
- 操作系统实验报告哲学家就餐问题、
- 操作系统课程设计代码
- linux内核设计的艺术 图解linux操作系统
- 大工软件学院操作系统第四次上机
- 操作系统课程设计 银行家算法论文
评论
共有 条评论