资源简介
通过编写和调试请求页式存储管理的模拟程序以加深对请求页式存储管理方案的理解。
为了简单起见。页面淘汰算法采用 FIFO页面淘汰算法,并且在淘汰一页时,判断它是否被改写过,如果被修改过,将它写回到辅存。
代码片段和文件信息
#include
#include
#include
#include“windows.h“
#include
#define N 64 //可存页数
struct
{ int lNumber; //页号
int pNumber; //物理块号
int dNumber; //在磁盘上的位置
int write; //修改标志
int flag; //存在标志
}page[N];
int pageQ[N];//页面循环队列存放内存中的页数
int next=0;//循环队列下一个要置换的位置,初值为0
int kuaishu=-1;//给pNumber依次赋值,kuaishu是page的角标
int n=0;//这个n是创建的页数
//******************************************************************
void show_page(int n)
{
cout<<“当前页表内容为:“< for(int i=0;i {
cout<<“page[“< cout<<“page[“< cout<<“page[“< }
}
//******************************************************************
void page_FIFO(int In)//In是被调入的page号
{
int Out=pageQ[next];//记录被置换出的page号
pageQ[next] = In;//在队列里需要把next处的值Out换成In
if(page[Out].write)
{
cout<<“将“< page[Out].write = 0; //修改标记变为0
page[Out].flag = 0;//已被调出内存,flag为0
}
cout<<“淘汰主存块“< page[In].flag = 1; //被调入内存,flag为1
page[In].pNumber = page[Out].pNumber;//将调出的内存块号转给调入的
next=(next+1)%(kuaishu+1);//内存总块数是kuaishu+1
}
//*******************************************************************
void show_address(int xieint dizhi)
{
if(dizhi>(n*1024-1)) {cout<<“不存在该页!“< int logic_addryeweiyi;
ye=int(dizhi/1024);//页
weiyi=dizhi%1024;//
评论
共有 条评论