操作系统-页式虚拟存储管理程序模拟

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

实验3:页式虚拟存储管理程序模拟

实验目的:编写程序来模拟计算机的两种调度方式:

(1)先进先出算法

(2)最近最少使用算法

程序设计

FIFO页面置换算法

1在分配内存页面数(AP)小于进程页面数(PP)时,当然是最先运行的AP个页面放入内存。2这时有需要处理新的页面,则将原来内存中的AP个页面最先进入的调出(是以称为FIFO),然后将新页面放入。

3以后如果再有新页面需要调入,则都按2的规则进行。

算法特点:所使用的内存页面构成一个队列。

LRU页面置换算法

1当分配内存页面数(AP)小于进程页面数(PP)时,当然是把最先执行的AP个页面放入内存。2当需要调页面进入内存,而当前分配的内存页面全部不空闲时,选择将其中最长时间没有用到的那个页面调出,以空出内存来放置新调入的页面(称为LRU)。

算法特点:每个页面都有属性来表示有多长时间未被CPU使用的信息。

结果分析

#include

#include

using namespace std;

const int MaxNum=320;//指令数

const int M=5;//内存容量

int PageOrder[MaxNum];//页面请求

int Simulate[MaxNum][M];//页面访问过程

int PageCount[M],LackNum;//PageCount用来记录LRU算法中最久未使用时间,LackNum记录缺页数

float PageRate;//命中率

int PageCount1[32];

bool IsExit(int i)//FIFO算法中判断新的页面请求是否在内存中

{ bool f=false;

for(int j=0;j

{if(Simulate[i-1][j]==PageOrder[i])//在前一次页面请求过程中寻找是否存在新的页面请求{ f=true; }

}

return f;

}

int IsExitLRU(int i)//LRU算法中判断新的页面请求是否在内存中

{ int f=-1;

for(int j=0;j

{if(Simulate[i-1][j]==PageOrder[i])

{ f=j; }

}

return f;

}

int Compare()//LRU算法找出内存中需要置换出来的页面

{ int p,q;

p=PageCount[0];

q=0;

for(int i=1;i

Simulate[j][k]=PageOrder[j];

else

Simulate[j][k]=Simulate[j-1][k];

}

//LackNum++;

}

for(x=M;x

{ for(int t=0;t

if(!IsExit(x))//根据新访问页面是否存在内存中来更新页面访问过程

{ LackNum++;

Simulate[x][y%M]=PageOrder[x];

y++;

}

}

PageRate=1-((float)LackNum/(float)MaxNum);//算出命中率

OutPut();

}

//最近最不常用调度算法(LRU)

void YourChoice(int choice)

{ switch(choice)

{ case 1:

cout<<"----------------------------------------------------------"<

cout<<"FIFO算法结果如下:"<

FIFO();

break;

case 2:

cout<<"----------------------------------------------------------"<

cout<<"LRU算法结果如下:"<

LRU();

break;

case 3:

break;

default:

cout<<"重新选择算法:1--FIFO 2--LRU 3--退出"<

cin>>choice;

YourChoice(choice);

}

}

void main()

{ int choice,i=1;

while(i)

{ cout<<"请选择算法:1--FIFO 2--LRU 3--退出"<

cin>>choice;

if(choice==3)

{i=0;

}

else

{ YourChoice(choice); } }

}

相关文档
最新文档