77范文网 - 专业文章范例文档资料分享平台

虚拟存储器管理 页面置换算法模拟实验(2)

来源:网络收集 时间:2018-11-30 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

《 操作系统原理A 》实验报告 - 5 -

//初始化5个实页,并将其串成链表形式

for(i=0;i

{

pp[i].pn=-1; pp[i].pfn=i; pp[i].next=NULL; }

//将5个实页依次相连,形成Free链表 Free=&pp[0]; for(i=0;i

pp[L-1].next=NULL; Free_head=Free;

//初始化Busy链表 Busy=NULL; Busy_head=NULL; Busy_tail=NULL;

pp[i].next=&pp[i+1];

//初始化MemoryStatus数组 for(i=0;i

MemoryStatus[i][j]=-1;

}

//初始化NotInMemory数组

《 操作系统原理A 》实验报告 - 6 -

}

for(i=0;i

NotInMemory[i]=1; }

void FIFO(int L,int MemoryStatus[][N]) //先入先出算法的具体实现。 {

count=0;

int i,j,k,currentpage; //一些临时变量

for(i=0;i

//当前访问的虚页是哪一页? 由数组queue[i]中的值表示

//判断该虚页是否已经调入内存

currentpage=queue[i];

if(vp[currentpage].pfn!=-1) //表示该页已经在内存中,可以直接访问。同时记录访问该页时对应的实页信息(和前一页相同)

{

for(j=0;j

{

}

MemoryStatus[j][i]=MemoryStatus[j][i-1]; }

NotInMemory[i]=0;

else //该页不在内存,需要请求调页

{

count=count+1; //缺页数加1

if(Free!=NULL) //如果Free链表不为空,表示内存中还有空的实页,故从Free链表中取队首元素,装入该虚页,并修改相关信息。

{

《 操作系统原理A 》实验报告 - 7 -

temp=Free_head; //本程序中用Free表示链表的起始地址,Free_head表示链表中的第一个元素地址。实际上两者的值永远相等。

//将temp指向的实页插入Busy链表的末尾 temp->next=NULL;

if(Busy==NULL) //如果是第一次把虚页装入实页,则temp就是Busy链表的第一

//将虚页currentpage装入temp指向的实页,该实页的编号为temp->pfn vp[currentpage].pfn=temp->pfn; temp->pn=currentpage;

Free_head=Free_head->next; Free=Free_head;

个元素。

{

Busy=temp;

Busy_head=Busy; Busy_tail=Busy;

}

else //如果不是第一次把虚页装入实页,则将temp插入Busy链表的队尾。 {

Busy_tail->next=temp; Busy_tail=temp; }

//修改内存状态

for(k=0;k

{

MemoryStatus[k][i]=MemoryStatus[k][i-1]; }

MemoryStatus[temp->pfn][i]=currentpage; //虚页currentpage装入了temp->pfn表示的那个实页里

《 操作系统原理A 》实验报告 - 8 -

}

else //如果Free链表为空,需要置换一页出去。由于采用FIFO算法,故取busy链表的队首元素,将其置换出去,修改信息后插入队尾。

{

//将Busy首元素取出,赋给temp

temp=Busy;

Busy_head=Busy->next; Busy=Busy_head;

//将当前虚页currentpage装入temp指向的实页,修改其信息

vp[temp->pn].pfn=-1; //该页被置换出去了,所以其pfn字段要设置成-1,表示其已经不再内存。

vp[currentpage].pfn=temp->pfn; //currentpage被装入内存,更新其pfn字段为temp指向的实页。 虚页

//将temp指向的实页插入Busy链表的末尾,此时不用再考虑Busy是否为空了。

temp->next=NULL; Busy_tail->next=temp; Busy_tail=temp;

//修改内存状态

temp->pn=currentpage; //temp指向的实页,装入了currentpage

for(k=0;k

{

MemoryStatus[k][i]=MemoryStatus[k][i-1]; }

MemoryStatus[temp->pfn][i]=currentpage; //虚页currentpage装入了

temp->pfn表示的那个实页里

}

《 操作系统原理A 》实验报告 - 9 -

}

}

}

void LRU(Page pp[],int MemoryStatus[][N],int L) {

int i,j,k,currentpage; for(i=0;i

currentpage=queue[i]; if(vp[currentpage].pfn!=-1) { } else {

count=count+1; if(Free!=NULL) {

temp=Free_head; for(j=0;j

NotInMemory[i]=0;

MemoryStatus[j][i]=MemoryStatus[j][i-1];

Free_head=Free_head->next;

Free=Free_head;

vp[currentpage].pfn=temp->pfn; temp->pn=currentpage; temp->next=NULL; if(Busy==NULL) {

Busy=temp;

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库虚拟存储器管理 页面置换算法模拟实验(2)在线全文阅读。

虚拟存储器管理 页面置换算法模拟实验(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/327382.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: