千家信息网

C语言怎么实现页面置换算法

发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,本篇内容主要讲解"C语言怎么实现页面置换算法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C语言怎么实现页面置换算法"吧!1.实现效果2.实现源代码#in
千家信息网最后更新 2024年11月24日C语言怎么实现页面置换算法

本篇内容主要讲解"C语言怎么实现页面置换算法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C语言怎么实现页面置换算法"吧!

1.实现效果

2.实现源代码

#include#include#include#include#include#include#includeusing namespace std;#define Myprintf printf("|---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---|\n")/*表格控制*/#define bsize 4 //物理块大小#define psize 16 //进程大小 void chushihua();//初始化函数 void ymzh(); void yemianzhihuan (); void changeaddr(struct Page p[], int logaddr); void dizhizhuanhuan(); void menu(); int wang(); int yemianliu[32]={0};//全局变量数组,地址流 int p; struct Page  {     int pno;//页号     int flag;//标志位     int cno;//主存号     int modf;//修改位     int addr;//外存地址}Page;  //全局变量p是一共有多少地址流 typedef struct pagel {     int num; /*记录页面号*/     int time;  /*记录调入内存时间*/ }Pagel;  /*页面逻辑结构,方便算法实现*/ Pagel b[bsize]; /*内存单元数*/ int c[bsize][psize];/*保存内存当前的状态:缓冲区*/ int queue[100];/*记录调入队列*/ int k;/*调入队列计数变量*/ int phb[bsize]={0};//物理块标号 int pro[psize]={0};//进程序列号 int flag[bsize]={0};//进程等待次数(存放最久未被使用的进程标志)*/ int i=0,j=0;//i表示进程序列号,j表示物理块号*/ int m =-1,n =-1;//物理块空闲和进程是否相同判断标志*/ int mmax=-1, maxflag=0;//标记替换物理块进程下标*/ int count =0; //统计页面缺页次数 void chushihua() //初始化函数{     int t;     srand(time(0));//随机产生指令序列         p=12+rand()%32;     cout<<"地址流序列:";     cout<=0;i--)    {        cout<>a;    cout<<"页号"<<"标记位"<<"外存地址"<<"主存号"<>ins;         changeaddr(p, ins);break;     case 2: system("CLS"); a=wang();break;     default:cout<<"输入有误,请重新输入!"<maxflag)         {             maxflag = flag[j];             mmax = j;        }    }    if(n == -1)//不存在相同进程    {        if(m != -1)//存在空闲物理块        {            phb[m]=pro[i];//进程号填入该空闲物理块//             count++;             flag[m]=0;             for (j=0;j<=m; j++)             {                 flag[j]++;            }            m=-1;        }         else//不存在空闲物理块         {             phb[mmax] =pro[i];             flag[mmax] =0;             for (j=0;jmax)         {             max=b[i].time;             tag= i;        }    }     return tag;}/*判断页面是否已在内存中*/ int Equation(int fold, Pagel *b) {     int i;    for(i=0;i=0)     {         b[val].time=0;         for(i=0;i

到此,相信大家对"C语言怎么实现页面置换算法"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0