编写程序来模拟计算机LRU算法,操作系统-页式虚拟存储管理程序模拟.doc

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

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

(1)先进先出算法

(2)最近最少使用算法

程序设计

FIFO()

FIFO()

LRU()

Msize加1

S=?

用户内存空间msize=2

Msize≤32

是否用其他算法继续

结 束

N

Y

1

2

Y

N

提示出错,重新输入

输入算法号S

1≤S≤4

开 始

生成地址流

形成地址页号

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

{if(p

{p=PageCount[i];

q=i; }

}

return q;

}

void Init() //初始化页框

{for(int k=0;k

{int n=rand()%320;//随机数产生320次指令

PageOrder[k]=n/10;//根据指令产生320次页面请求}

for(int i=0;i

{ for(int j=0;j

{ Simulate[i][j]=-1; }

}

for(int q=0;q

{PageCount[q]=0; }

}

void OutPut()//输出

{int i,j;

cout<

for(j=0;j

{cout<

cout<

cout<

for(i=0;i<10;i++)

{for(j=0;j

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

cout<

else

cout<

}

cout<

}

cout<

cout<

cout<

}

void FIFO()//FIFO算法

{int j,x=0,y=0;

LackNum=0,

Init();

for(j=0;j

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值