• 大小: 1.01MB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2023-11-14
  • 语言: 其他
  • 标签: 操作系统  

资源简介

实验目的及基本要求 设计和实现最佳置换算法、随机置换算法、先进先出置换算法、最近最久未使用置换算法、简单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

评论

共有 条评论