页面替换算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

页面替换算法

一、实验目的

为了使大的进程(其地址空间超过主存可用空间)或多个进程的地址空间之和超过实际主存空间时,仍能运行,引入了虚拟存储器的概念。使进程的一部分地址空间在主存,另一部分在辅存,由操作系统实现多级存储器的自动管理,实现主存空间的自动覆盖。模拟请求分页虚拟存储器管理技术中的硬件地址变换、缺页中断以及页式淘汰算法,处理缺页中断。

二、实验要求

书写实验报告,应该包括以下几项内容:

(1)实验题目;

(2)程序中使用的数据结构及主要符号说明;

(3)程序流程图和带有注释的源程序;

(4)执行程序名,并打印程序运行时的初值和运行结果;

(5)通过实验后的收获与体会及对实验的改进意见和见解。

三、主要符号说明

int pagecount;//记录需要访问的页面次数

int blockcount;//记录内存块大小

四、实验结果

1、起始界面

2、先进先出页面替换算法

2、最近最少使用页面替换算法

3、最佳页面替换算法

五、实验体会

通过请求页式管理中页面置换算法的模拟设计,了解了虚拟存储技术的特点,掌握了请求页式管理的页面置换算法。

附录:实验源程序

#include

using namespace std;

class Page

{ int pagecount;//记录需要访问的页面次数

int blockcount;//记录内存块大小

int head;

int t;

int *page;

int **block;

public:

Page(int m,int n);

~Page();

void setpage();

int seekpage(int i);

int isfull();

void FIFO(int i);

void LRU(int i);

void OPT(int i);

void queyediaodu(int r);

};

Page::Page(int m,int n):pagecount(n),blockcount(m) {head=t=0;

page=new int[pagecount];

block=new int*[blockcount];

for(int i=0;i

Page::~Page()

{delete page;

for(int i=0;i

}

void Page::setpage()

{cout<<"输入页面走向:";

for(int i=0;i>page[i];

for(int i=0;i

block[i][0]=-1,block[i][1]=0;

}

int Page::seekpage(int i)

{for(int l=0;l

if(block[l][0]==i) return l;

return -1;

}

int Page::isfull()

{for(int i=0;i

if(block[i][0]==-1) return i;

return -1;

}

void Page::FIFO(int i)//head的下一个页面被替换

{head=(head+1)%blockcount;

t=head;

cout<<"\n页面"<

if(block[t][1]==1) cout<<"将页面"<

void Page::LRU(int i)//head前一个被替换

{if(head==0) t=blockcount-1;

else t=head-1;

cout<<"\n页面"<

if(block[t][1]==1) cout<<"将页面"<

}

void Page::OPT(int i)

{int *q,d=-1;

q=new int[blockcount];

for(int j=0;j

for(int k=0;k

for(int l=pagecount-1;l>i;l--)

if(block[k][0]==page[l]) q[k]=l;

for(int h=0;h

if(q[h]>d) d=q[h],t=h;

cout<<"\n页面"<

if(block[t][1]==1) cout<<"将页面"<

void Page::queyediaodu(int r)

相关文档
最新文档