资源简介

操作系统存储管理页面置换算法(OPT FIFO LRU LFU)完整代码

资源截图

代码片段和文件信息


#include 
#include 
#include 
using namespace std; 
int *instruction=new int[320];//指令序列
int *page=new int[320];//指令序列变换后的页地址流
int pagenum=0;//用于存放将指令序列变换为页地址时页序列的编号
double lost=0;
int Msize;//内存中存放的页面数
int Inside[32];//内存中的页面号数组,最多32页
int *state=new int[32];//每个页面号对应的状态(是否在内存中)最多32页
int insert=0;//FIFO算法中表示当内存满的时候,新进入的页号放的位置

void IntoPage(int m);//第m条指令对应的页数
int  isInside(int numberint Msize);//检测页号是否在内存中
void OPT(int numint Msize);//最佳置换算法(OPT)
void FIFO(int numint Msize);//先进现出置换算法(FIFO)
void LRU(int numint Msize);//最近最久未使用置换算法(LRU)
void LFU(int numint Msize);//最少使用置换算法(LFU) 
void main()
{
int choice=0n=0s=0;//n控制指令执行时的循环次数,s为随机产生指令的起始地址
    char choice2;

for(int i=0;i<=319;i++)
instruction[i]=i;   //便于理解程序,初始化指令序列为指令号
cout<<“指令地址流生成完毕!“<
srand(time(0));
while(n<160)//每次循环执行两次指令
{
int m=rand()%(319-s)+s;//在[0319]的指令地址中随机选取一点m,s为随机产生指令的起始地址
IntoPage(m+1);//执行m+1的指令
int m1=rand()%(m+1);//在[0m+1]中随机选取一条指令并执行,令该指令的地址为m1
IntoPage(m1+1);//执行m1+1的指令
s=m1+2;
n++;
}
cout<<“页地址流生成完毕!\n“< cout<<“生成页地址流序列为:“;
for(i=0;i<320;i++)
cout<
do{
cout<<“\n\n请选择页面置换算法:\n“;
cout<<“1、OPT   最佳置换算法.\n“;
cout<<“2、FIFO  先进先出算法.\n“;
cout<<“3、LRU   最近最久未使用算法.\n“;
cout<<“4、LFU   最少使用算法.\n“;
cin>>choice;

switch(choice)
{
case 1:
{
cout<<“当前使用OPT 最佳置换算法!\n“;
for(Msize=4;Msize<=32;Msize++)//计算比较内存页面数由4到32的命中率
{
lost=0;
for(int j=0;j {
Inside[j] = 0;//初始化内存中存储的页面为空
}
for(int i=0;i<320;i++)
{
//cout<<“读入page[“< OPT(iMsize);
}
cout<<“页面数为“< cout<<“            共“<<320<<“次“<<“缺失“< }
}break;
case 2:
{
cout<<“当前使用FIFO 先进先出置换算法!\n“;
for(Msize=4;Msize<=32;Msize++)//计算比较内存页面数由4到32的命中率
{
lost=0;
for(int j=0;j {
Inside[j] = 0;//初始化内存中存储的页面为空
}
for(int i=0;i<320;i++)
{
//cout<<“读入page[“< FIFO(iMsize);
}
cout<<“页面数为“< cout<<“            共“<<320<<“次“<<“缺失“< }
}break;
case 3:
{
cout<<“当前使用LRU 最近最久未使用算法!\n“;
for(Msize=4;Msize<=32;Msize++)//计算比较内存页面数由4到32的命中率
{
lost=0;
for(int j=0;j {
Inside[j] = 0;//初始化内存中存储的页面为空
}
for(int i=0;i<320;i++)
{
//cout<<“读入page[“< LRU(iMsize);
}
cout<<“页面数为“< cout<<“            共“<<320<<“次“<<“缺失“< }
}break;
case 4:
{
cout<<“当前使用LFU 最少使用置换算法!\n“;
for(Msize=4;Msize<=32;Msize++)//计算比较内存页面数由4到32的命中率
{
lost=0;
for(int j=0;j {
Inside[j] = 0;//初始化内存中存储的页面为空
}
for(i

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       8593  2011-12-22 12:47  存储管理--页面置换算法4种\存储管理页面置换\main.cpp

     目录          0  2011-12-22 12:47  存储管理--页面置换算法4种\存储管理页面置换

     目录          0  2011-12-22 12:49  存储管理--页面置换算法4种

----------- ---------  ---------- -----  ----

                 8593                    3


评论

共有 条评论