实验四 页式虚拟存储管理中地址转换和页式中断 FIFO LRU OPT C(2)
head=(head+1)%m;
if(page[j].write==1)
cout<<"将页 "<<j<<" 写回磁盘第 "<<page[j].dnumber<<" 块!\n"; page[j].flag=0;
page[lnumber].pnumber=page[j].pnumber;
page[lnumber].flag=1;
page[lnumber].write=0;
cout<<"淘汰主存块 "<<page[j].pnumber<<" 中的页 "<<j<<" ,从磁盘第 " <<page[lnumber].dnumber<<" 块中调入页 "<<lnumber<<endl;
}
/*地址转换函数,将逻辑地址转换成物理地址,如果要查找的页不在主存当中则产生缺页中断*/
void command(unsigned laddress,int write)
{
unsigned paddress,ad,pnumber;
int lnumber;
kk:
lnumber=laddress>>10; //取逻辑地址高6位,页号
ad=laddress&0x3ff; //页内地址
cout<<"该逻辑地址的页号为:"<<lnumber<<" 页内地址为:"<<ad<<endl; if(lnumber>=page_length)
{ //页号大于页表的长度,则无效页号
cout<<"该页不存在!\n";
return;
}
if(page[lnumber].flag==1){ //页号为lnumber 在内存当中
pnumber=page[lnumber].pnumber;
paddress=pnumber<<10|ad;
cout<<"逻辑地址是:"<<laddress<<" 对应物理地址是:
"<<paddress<<endl;
页式虚拟存储管理
if(write==1) //该页被修改过
page[lnumber].write=1;
}
else
{ //页号为lnumber不在内存当中,则产生缺页中断
page_interrupt(lnumber);
goto kk;
}
}//command
页式存储管理OPT ,LRU实验报告
一、实验目的:
掌握分页式存储管理的基本概念和实现方法。要求编写一个模拟的分页式管理程序,并能对分页式存储的页面置换算法进行编写和计算各个算法的缺页率。
二、程序设计:
首先创建页面链指针数据结构,并设计页面映像表,采用数组的方法给定页面映像。
申请缓冲区,将一个进程的逻辑地址空间划分成若干个大小相等的部分,每一部分称做页面或页。每页都有一个编号,叫做页号,页号从0开始依次编排,如0,1,2 。设置等大小的内存块。初始状态:将数据文件的第一个页面装入到该缓冲区的第0块。
设计页面置换算法,这里分别采用最佳页面置换算法OPT和最近最久未使用置换算法LRU,并分别计算它们的缺页率,以比较它们的优劣。
三、算法说明:
执行程序时,当主存没有可用页面时,为了选择淘汰主存中的哪一页面,腾出1个空闲块以便存放新调入的页面。淘汰哪个页面的首要问题是选择何种置换算法。该程序采用人工的方法选择,依置换策略选择一个可置换的页,并计算它们的缺页率以便比较。
/*分页式管理实验-源程序*/
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
#define N 16
#define num 5 /*进程分配物理块数目*/
int A[N]={1,2,3,4,5,6,7,8,5,2,3,2,7,8,1,4}; /*页表映像*/
typedef struct page
{
int address; /*页面地址*/
struct page *next;
}page;
struct page *head,*run,*rear;
void jccreat() /*进程分配物理块*/
{
页式虚拟存储管理
int i=1;
page *p,*q;
head=(page *)malloc(sizeof(page));
p=head;
for(i=1;i<=num;i++)
{
q=(page *)malloc(sizeof(page));
p->next=q;
q->address=0;
q->next=NULL;
p=q;
}
rear=p;
}
int search(int n)
{
page *p;
int i=0;
p=head;
while(p->next)
{
if(p->next->address==n)
{
printf("Get it at the page %d\n",i+1);
run=p;
return 1;
}
p=p->next;
i++;
}
return 0;
}
void changeOPT(int n,int position)
{
int i;
int total=0;
int flag=1;
int distance[num];
int MAX;
int order=0;
page *p,*q;
p=head->next;
q=head->next;
for(i=0;i<num;i++)
页式虚拟存储管理
distance[i]=100; i=0; while(p) { if(p->address==0) { flag=0;break; } p=p->next; i++; } if(!flag) { p->address=n; printf("Change the page %d\n",i+1); } else { while(q) { for(i=position;i<N;i++) { if(q->address==A[i]) distance[total]=i-position;} total++; q=q->next; } MAX=distance[0]; for(i=0;i<num;i++) { if(distance[i]>MAX) { MAX=distance[i]; order=i; } } printf("Change the page %d\n",order+1); i=0; while(p) { if(i==order) p->address=n; i++; p=p->next;
页式虚拟存储管理
}
}
}
void changeLRU(int n)
{
int i=0;
int flag=1;
page *p,*delect;
p=head->next;
while(p)
{
if(p->address==0)
{
flag=0;
p->address=n;
printf("Change the page %d\n",i+1);
break;
}
p=p->next;
i++;
}
if(flag)
{
delect=head->next;
head->next=delect->next;
printf("Delect from the head, and add new to the end.\n"); delect->address=n;
rear->next=delect;
rear=delect;
rear->next=NULL;
}
}
float OPT()
{
int i;
int lose=0;
float losef;
float percent;
for(i=0;i<N;i++)
{
if(search(A[i])==0)
{
lose++;
changeOPT(A[i],i);
页式虚拟存储管理
}
}
losef=lose;
percent=1-(losef/N);
return percent;
}
float LRU()
{
int i;
int lose=0;
float losef;
float percent;
page *p;
for(i=0;i<N;i++)
{
if(search(A[i])==0)
{
lose++;
changeLRU(A[i]);
}
else
{
p=run->next;
run->next=p->next;
rear->next=p;
rear=p;
rear->next=NULL;
printf("Move it to end of queue.\n");
}
}
losef=lose;
percent=1-(losef/N);
return percent;
}
void main() /*主 …… 此处隐藏:1977字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [实用文档]李践-有效提升销售的12大黄金法则8-大
- [实用文档]党支部换届工作方案
- [实用文档]2013年下期电子商务专业部宣传工作计划
- [实用文档]方庄一矿通风、钻探绩效工资考核管理办
- [实用文档]项目一 认识企业物流认识企业物流
- [实用文档]MBI_Display_产品蓝图规画
- [实用文档]北京市建筑业劳务作业人员普法维权培训
- [实用文档]锅炉燃烧调整与运行优化
- [实用文档]4支付结算业务的核算
- [实用文档]米什金_货币金融学_第9版各章学习指导
- [实用文档]水泥混凝土路面硬化工程施工组织设计
- [实用文档]钢筋工程安全技术交底书
- [实用文档]关于公布华中师范大学本科毕业论文
- [实用文档]太原市园林绿化施工合同范本 2
- [实用文档]周日辅导 初中英语分类复习单项选择题(
- [实用文档]第四章 文化经纪人的管理形式 第二节
- [实用文档]学宪法讲宪法竞赛题库
- [实用文档]《数值计算方法》期末考试模拟试题二
- [实用文档]爱词霸学英语:每日一句( 十月)
- [实用文档]2014年国家公务员面试:无领导小组讨论
- 新课程主要理念和教学案例分析汇编(24
- 英国人的快乐源于幸福的家庭生活
- 七年级上册第一次月考模拟数学试卷
- 真丝及仿真丝的种类有哪些?
- 【最新】华师大版八年级数学下册第十六
- 高中英语3500个必背单词
- 我可以接受失败,但我不能接受放弃!
- 最近更新沪科版八年级物理上册期末试卷
- 绿化工作先进乡镇事迹材料
- 鲁教版九年级上册思想品德教学计划
- 英语音标的分类
- 地下室底板无梁楼盖与普通梁板结构形式
- 美容师黄金销售话术
- 雅思写作满分作文备考方法
- 血清甲状腺激素测定与高频彩色多普勒超
- 1度浅析装修对室内空气品质的影响
- 2017-2022年中国汞矿行业深度分析与投
- 计算机二级VB公共基础知识
- (何勇)秸秆禁烧_重在寻找出路
- 内外墙抹灰工程分包施工合同1




