请求页式管理的页面置换算法(3)

2020-05-08 10:30

五、实验体会

此次的实验不是很难,不论是FIFO还是LFU算法,都只需分成3部分考虑,即物理块中有相同页面、物理块中没有相同页面但有空闲、缺页中断这3种情况。只要分别根据不同情况的算法编写对应代码即可,而其余部分的代码两种算法均相同。随机生成要访问的字地址部分较复杂,但根据老师提供的算法我也顺利完成了。通过此次实验,我对FIFO、LFU算法有了更加详细的认识,对课上所学的只是有了一次实际的应用,对其有了更加深刻的理解。

附录:

#include #include #include #include #include

#define Blocksize 8 //物理块的大小 #define Procount 60 //进程的页面数 #define psize 100 //进程的大小 #define OneK 1024 //一个页面的大小 typedef struct page {

int num; /*记录页面号*/

int count; /*记录最近调度此页面的次数*/

}Page; /* 页面逻辑结构,结构为方便算法实现设计*/ Page Block[Blocksize]; /*内存单元数*/

int temp[psize][Blocksize + 1]={0}; /*暂保存内存当前的状态:缓冲区*/ int queue[psize]; /*记录调入页面序号*/ int phb[Blocksize]; int frontp=0;

int rearp=3;//初始化情况下,内存中已经分配3个页面

int flag=1; //标志是否有相同页面,如有则0,没有则1 int frontlea=0; //标志最先进去的页面号 int FIFO_break=0; int LFU_break=0;

void build() //产生页面调度的页面随机序列 {

int i=0; int suiji;

int k; //表示随机出来的存储块号 printf(\产生页面调度的页面随机序列:\\n\srand(time(NULL));

k=rand()%(OneK * Procount); queue[i++]=k/1024; do{

suiji=rand()%4+1; switch(suiji) { case 1: case 2:

if(k

queue[i++]=(k+1+512)/1024;

k=k+1+512; break;

case 3:

k=rand()%k; queue[i++]=k/1024; break;

case 4:

k=rand()%(61439 - k) + k;

queue[i++]=k/1024; break;

default: }

break;

}while(i

for(i=0;i

printf(\ }

int searchpb()//查找空闲物理块,成功返回值是物理块号,否则就是-1 {

int j,m;

for(j=0; j

printf(\

if((i+1)%5==0)printf(\

{

if(Block[j].num == -1)

{

m = j; return m; break;

} }

void Init()//初始化内存 {

} return -1;


请求页式管理的页面置换算法(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:GPFS for Linux 安装实施

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: