OShomework8Word格式文档下载.docx

上传人:b****6 文档编号:17942260 上传时间:2022-12-12 格式:DOCX 页数:26 大小:749.08KB
下载 相关 举报
OShomework8Word格式文档下载.docx_第1页
第1页 / 共26页
OShomework8Word格式文档下载.docx_第2页
第2页 / 共26页
OShomework8Word格式文档下载.docx_第3页
第3页 / 共26页
OShomework8Word格式文档下载.docx_第4页
第4页 / 共26页
OShomework8Word格式文档下载.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

OShomework8Word格式文档下载.docx

《OShomework8Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《OShomework8Word格式文档下载.docx(26页珍藏版)》请在冰豆网上搜索。

OShomework8Word格式文档下载.docx

Opt算法过程缺页次数和缺页率:

lru算法页面调入跳出过程,缺页次数和缺页率:

fifo算法过程缺页次数和缺页率:

代码如下:

#include<

stdlib.h>

stdio.h>

#definepagesize8//页面尺寸大小

typedefstructBLOCK//声明一种新类型--物理块类型

{

intpagenum;

//页号

intaccessed;

//访问量,其值表示多久未被访问

}BLOCK;

intpc;

//程序计数器,用来记录对应的页号

intn;

//缺页计数器,用来记录缺页的次数

staticintnum[320];

//用来存储320条随机数

BLOCKblock[pagesize];

//定义一大小为8的物理块数组

voidinit();

//程序初始化函数

intfindExist(intcurpage);

//查找物理块中是否有该页面

intfindSpace();

//查找是否有空闲物理块

intfindReplace();

//查找应予置换的页面

voiddisplay();

//显示

voidrandam();

//产生320条随机数,显示并存储到num[320]

voidpagestring();

//显示调用的页面队列

voidOPT();

voidLRU();

voidFIFO();

voidmain()

intselect;

printf("

请输入第一个随机数(0~320):

"

);

randam();

*****对应的调用页面队列*******\n"

pagestring();

do

{

****************************************\n"

------1:

OPT2:

LRU3:

FIFO4:

退出-----\n"

请选择一种页面置换算法:

scanf("

%d"

&

select);

*******************************\n"

init();

switch(select)

{

case1:

最佳置换算法OPT:

\n"

*****************\n"

OPT();

break;

case2:

最近最久未使用置换算法LRU:

printf("

*************************\n*"

LRU();

break;

case3:

先进先出置换算法FIFO:

*********************\n"

FIFO();

}

}while(select!

=4);

}

voidinit()

{

inti;

for(i=0;

i<

pagesize;

i++)

block[i].pagenum=-1;

block[i].accessed=0;

pc=n=0;

intfindExist(intcurpage)

i<

i++)

if(block[i].pagenum==curpage)

returni;

//检测到内存中有该页面,返回block中的位置

return-1;

intfindSpace()///寻找空闲空间

i++)

if(block[i].pagenum==-1)

//找到空闲的block,返回block中的位置

}

intfindReplace()

intpos=0;

if(block[i].accessed>

block[pos].accessed)

pos=i;

//找到应该置换页面,返回BLOCK中位置

returnpos;

voiddisplay()

if(block[i].pagenum!

=-1)

%02d"

block[i].pagenum);

voidrandam()

intflag=0;

pc);

******按照要求产生的320个随机数:

*******\n"

320;

num[i]=pc;

if(flag%2==0)

pc=++pc%320;

if(flag==1)

pc=rand()%(pc-1);

if(flag==3)

pc=pc+1+(rand()%(320-(pc+1)));

flag=++flag%4;

%03d"

num[i]);

if((i+1)%10==0)

voidpagestring()//显示调用的页面队列,页面号取法为随机数除10取整

num[i]/10);

voidOPT()//最佳替换算法

intexist,space,position;

intcurpage;

inti,j,k;

pc=num[i];

curpage=pc/10;

exist=findExist(curpage);

if(exist==-1)

space=findSpace();

if(space!

=-1)

block[space].pagenum=curpage;

display();

n=n+1;

else

for(k=0;

k<

k++)

{

for(j=i;

j<

j++)

if(block[k].pagenum!

=num[j]/10)

{

block[k].accessed=1000;

}//将来不会用,设置为一个很大数

else

{

block[k].accessed=j;

break;

}

}

position=findReplace();

block[position].pagenum=curpage;

n++;

缺页次数:

%d\n"

n);

缺页率:

%f%%\n"

(n/320.0)*100);

voidLRU()//最近最久未使用算法

intexist,space,position;

intcurpage,i,j;

exist=findExist(curpage);

space=findSpace();

if(space!

block[space].pagenum=curpage;

else

block[exist].accessed=-1;

//恢复存在的并刚访问过的BLOCK中页面accessed为-1

for(j=0;

j<

j++)

block[j].accessed++;

voidFIFO()//先进先出算法

//转换为页面号

//查找物理块中是否有该页面,没有的话,置为-1

//查找是否有空的物理块,没有的话,置为-1;

有的话,把位置返回

//没有空闲物理块,进行置换

block[position].accessed--;

j++)//把所有在页面里的页面号的访问次数加1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 远程网络教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1