文档介绍:姓名:张良学号:19
页面置换算法
-最佳(OPT)算法
设计总说明
在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。
在进程运行过程中,若其所要访问的页面不在内存需把它们调入内存,但内存已无空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据,送磁盘的对换区中。但应将哪个页面调出,所以需要根据一定的算法来确定。
本次课设的内容是最佳置换算法(OPT),该设计是在VC++,可得出缺页数和缺页率。
问题描述
本次课设是编写一个页面置换算法程序,采用最佳(OPT)算法,在需要页面调出时,把内存中以后一段时间都不使用或是使用时间离现在最远的页面换出。通过对页面、页表、地址转换和页面置换过程的模拟,加深对请求调页系统的原理和实现过程的理解是本题目要达到的目的。
基本功能
概要设计
程序包含的函数有:inputData、initPage、initBlockResult、Exist、display、OPT、main。
其中inputData函数的作用是输入基本的数据以便OPT函数的调用;initPage函数是初始化page数组;initBlockResult函数是初始化block与result数组;Exist函数是查找物理块中是否存在要调用的页面;display函数是通过OPT函数得出缺页数和缺页率;OPT函数就是最佳置换算法OPT的实现,通过while语句来的出置换图和调用display函数来让其得出缺页数和缺页率;main函数是实现程序的主界面和通过switch语句调用inputData函数、initBlockResult函数、OPT函数实现不同的功能。
系统功能模块图
具体模块设计
用户需要输入内存块数、页数和页面走向。程序如下:
void inputData()
{
cout<<endl<<"请输入内存块数(1<=bSize<="<<BlockSize<<')'<<endl;
cin>>bSize;
cout<<"请输入页面数(1<=pSize<="<<PageSize<<')'<<endl;
cin>>pSize;
while(bSize<=0||bSize>BlockSize||pSize<=0||pSize>PageSize)
{ // 判断用户输入是否在范围内
cout<<"输入范围错误,请重新输入:"<<endl;
cout<<"请输入物理块数(1<=F<="<<BlockSize<<')';
cin>>bSize;
cout<<endl<<"请输入页面数(1<=p<="<<PageSize<<')';
cin>>pSize;
}
cout<<"请输入页面走向"<<endl;
for(int i = 0;i <pSize;i++)
cin>>page[i];
}
(opt)置换算法模块
此模块得出相应的置换图、缺页数和缺页率。
(1)display函数的作用是算出缺页数和缺页率。
(2)OPT函数就是最佳置换算法OPT的实现,通过while语句来的出置换图和调用display函数来让其得出缺页数和缺页率。下图是while语句的流程图:
具体模块设计