• 大小: 8.49MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-11-03
  • 语言: C/C++
  • 标签:

资源简介

四种页面置换算法齐全,c++上可以直接运用

资源截图

代码片段和文件信息

#include
#include
#include //为了有时间间隔输出
using namespace std;
#define BlockSize 10//内存页面最多为10
#define maxPageSize 100//要运行页面最多为100

int PageSize;//由用户输入逻辑页面最大值
int page[maxPageSize];              //页面数组存放页面 
int block[BlockSize];            //物理块数组
int result[maxPageSize][BlockSize]; //存放页面和物理块二维数组
int pSize = 0;                   //用户使用页面数 
int bSize = 0;                   //用户使用物理块数
int blockFlag[BlockSize];        //用于LRU与OPT中,辅助判断该换出的页面
int noPageCount = 0;             //缺页次数
int everytime[maxPageSize];         //每一个运行页面的存取时间
int breaktime; //缺页中断时间
int memorytime; //内存存取时间
int checktime; //查询一次快表时间
int kuaior; //是否存在快表
int count[maxPageSize]; //用于LFU中,使用次数记录数组


void inputData()//输入数据
{
     cout<     cin>>bSize;
 cout<<“请输入逻辑页面最大数“<     cin>>PageSize;
 cout<<“请输入页面数 (1<=pSize<=“<     cin>>pSize;
 while(bSize<=0||bSize>BlockSize||pSize<=0||pSize>PageSize){//判断用户输入是否在范围内
 cout<<“输入范围错误,请重新输入:“<  cout<<“请输入物理块数(1<=F<=“<         cin>>bSize;
     cout<         cin>>pSize;
 }
     cout<<“请输入页面走向“<     for(int i = 0;i          cin>>page[i];//用户输入的页面序列
 cout<<“请输入内存存取时间“<  cin>>memorytime;
 cout<<“请输入缺页中断时间“<  cin>>breaktime;
 cout<<“请输入是否存在快表(0.否 1.是 )“<     cin>>kuaior;
 if(kuaior==1)
 {
 cout<<“请输入查询一次快表时间“<  cin>>checktime;
 }
}

//初始化page数组
void initPage()
{
for(int i = 0;i       page[i] = -1;   //初始化page数组中的数都为-1                   
}

//初始化block与result数组
void initBlockResult()
{
     int i = 0;
     for(i = 0;i         block[i] = -1;//初始化物理数组中的数都为-1
     for(i = 0;i < PageSize;i++)
          for(int j = 0; j < BlockSize;j++)
              result[i][j] = -1;//存放页面和物理块二维数组初始化为-1
}

//查找物理块中是否存在要调用的页面
int Exist(int i)    
{
     for(int j = 0;j < bSize;j++)
         if(block[j] == i)
 return j;
         return -1;
}

//显示结果
void display(int noPageCount)
{
     for(int i =0 ;i < pSize;i++)
 {   
Sleep(2000); 
cout<<“  “< for(int j = 0;j < bSize;j++)
{
              if(result[i][j] == -1)  
   break;
              else 
      cout<<‘[‘< }
cout<     }
 cout<  cout<<“每个页面的存取时间为:“<  for(i =0 ;i < pSize;i++)
 {  
cout<  }
cout<<“____________________________________“< cout< cout<<“缺页率:“<<((double)noPageCount/pSize)*100<<‘%‘< cout<<“====================================“<}

//最佳置换算法OPT
void OPT()
{
int i = 0j = 0;
int position = 0noPageCount = 0;
int pageFlag = 0resultFlag = 0; //页面标记(下标)指向下一个页面结果标记表示结果的行,即result数组的行标  
    for(i = 0;i < BlockSize;i++)
blockFlag[i] = 0;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-09-06 14:43  四种页面置换算法代码\
     目录           0  2015-09-06 14:43  四种页面置换算法代码\Debug\
     文件      181248  2015-01-07 10:58  四种页面置换算法代码\Debug\vc60.idb
     文件      143360  2015-01-07 10:58  四种页面置换算法代码\Debug\vc60.pdb
     文件      565328  2015-01-07 10:58  四种页面置换算法代码\Debug\算法.exe
     文件      809120  2015-01-07 10:58  四种页面置换算法代码\Debug\算法.ilk
     文件      284490  2015-01-07 10:58  四种页面置换算法代码\Debug\算法.obj
     文件        1139  2015-01-12 08:51  四种页面置换算法代码\测试序列.txt
     文件       11406  2015-01-08 11:07  四种页面置换算法代码\算法.cpp
     文件        3379  2015-01-07 10:58  四种页面置换算法代码\算法.dsp
     文件         516  2015-01-07 11:14  四种页面置换算法代码\算法.dsw
     文件       41984  2015-01-07 11:14  四种页面置换算法代码\算法.ncb
     文件           0  2015-01-08 09:26  四种页面置换算法代码\算法.opensdf
     文件       48640  2015-01-07 11:14  四种页面置换算法代码\算法.opt
     文件         744  2015-01-07 10:58  四种页面置换算法代码\算法.plg
     文件    27676672  2015-01-08 11:08  四种页面置换算法代码\算法.sdf
     文件        6111  2015-01-08 09:26  四种页面置换算法代码\算法.vcxproj
     文件         143  2015-01-08 09:26  四种页面置换算法代码\算法.vcxproj.user

评论

共有 条评论