操作系统实验页面Word文件下载.docx

上传人:b****6 文档编号:17765873 上传时间:2022-12-09 格式:DOCX 页数:11 大小:76.86KB
下载 相关 举报
操作系统实验页面Word文件下载.docx_第1页
第1页 / 共11页
操作系统实验页面Word文件下载.docx_第2页
第2页 / 共11页
操作系统实验页面Word文件下载.docx_第3页
第3页 / 共11页
操作系统实验页面Word文件下载.docx_第4页
第4页 / 共11页
操作系统实验页面Word文件下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

操作系统实验页面Word文件下载.docx

《操作系统实验页面Word文件下载.docx》由会员分享,可在线阅读,更多相关《操作系统实验页面Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。

操作系统实验页面Word文件下载.docx

5、代码

#include"

stdafx.h"

#defineM3//物理页数

#defineN20//需要调入的页数

typedefstructpage{

intnum;

inttime;

inttemp;

}Page;

//物理页项,包括调入的页号和时间

Pagepp[M];

//M个物理页

intqueue1[20],queue2[20],queue3[20];

//记录置换的页

intK=0,S=0,T=0;

//置换页数组的标识

intpos=0;

//记录存在最长时间项

intchangenum=0;

intA[N];

//初始化内存页表项及存储内存情况的空间

voidINIT(){

inti;

for(i=0;

i<

M;

i++){

pp[i].num=-1;

pp[i].time=0;

pp[i].temp=0;

}}

//取得内存中存在时间最久的位置

intGetMax(){

intmax=-1;

if(pp[i].time>

max){

max=pp[i].time;

pos=i;

}

}

returnpos;

}

//检查最长时间不使用页面

intlongestTime(intmxatimep,inttemp){

for(i=temp;

N;

if(pp[0].temp==1&

&

pp[1].temp==1&

pp[2].temp==1){

break;

if(pp[0].num!

=A[i]){

pp[0].time++;

if(pp[0].temp>

=1){

pp[0].time--;

}

else{

pp[0].temp++;

if(pp[1].num!

pp[1].time++;

if(pp[1].temp>

pp[1].time--;

pp[1].temp++;

if(pp[2].num!

pp[2].time++;

if(pp[2].temp>

pp[2].time--;

pp[2].temp++;

if(pp[i].time>

max){

//检查某页是否在内存

intEquation(intfold){

if(pp[i].num==fold)

returni;

return-1;

//检查物理内存是否已满,-1表满,其他不满

intCheck(){

if(pp[i].num==-1)

voidFIFO(intfold,inttemp){

inta,b,c;

a=Equation(fold);

//页已存在

if(a!

=-1){

//页不存在

else{

b=Check();

//内存还有空闲

if(b!

pp[b].num=fold;

//内存已满,需要置换

else{

c=GetMax();

pp[c].num=fold;

pp[c].time=0;

changenum++;

queue1[K++]=fold;

if(pp[i].num!

pp[i].time++;

voidOPT(intfold,inttemp)

{

if(a==-1){//页不在内存

c=longestTime(fold,temp);

queue3[T++]=fold;

voidLRU(intfold,inttemp)

inta,b;

intp;

=-1)//页已在内存

{

//把此项移动到链表最后一项

if(a==2)//此项已经在最后,不需要做任何改动

{}

else

{

p=Equation(-1);

if(p==-1)//链表是满的

{

for(;

a<

2;

a++)

pp[a].num=pp[a+1].num;

pp[2].num=fold;

elseif(p<

=3)//链表不满

p-1;

pp[a].num=fold;

else

=-1)//不满

for(i=0;

i++)

pp[i].num=pp[i+1].num;

pp[2].num=fold;

queue2[S++]=fold;

int_tmain(intargc,_TCHAR*argv[])

intB[N];

INIT();

changenum=0;

printf("

请依次输入%d个页面号:

\n"

N);

scanf_s("

%d"

&

A[i]);

//OPT

);

1.最佳置换算法(Opt)\n"

INIT();

changenum=0;

for(i=0;

B[i]=A[i];

OPT(B[i],i);

printf("

OPT算法,调入页面顺序为:

"

T;

printf("

%3d"

queue3[i]);

\n页面置换次数为:

%6d\n缺页率:

%16.2f\n\n"

changenum,(float)changenum/N);

//FIFO

2.先进先出页面置换算法(FIFO)\n"

FIFO(B[i],i);

FIFO算法,调入页面顺序为:

K;

queue1[i]);

//LRU

3.最近最久未使用算法(LRU)\n"

LRU(B[i],i);

LRU算法,调入页面顺序为:

S;

queue2[i]);

四种算法已全部执行完毕!

return0;

 

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

当前位置:首页 > 高中教育 > 高考

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

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