操作系统实验五虚拟存储器管理_第1页
操作系统实验五虚拟存储器管理_第2页
操作系统实验五虚拟存储器管理_第3页
操作系统实验五虚拟存储器管理_第4页
操作系统实验五虚拟存储器管理_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验五虚拟存储器管理

实验目的

1、理解虚拟存储器概念。

2、掌握分页式存储管理地址转换和缺页中断。

实验内容与基本要求

1、模拟分页式存储管理中硬件的地址转换和产生缺页中断。

2、用先进先出页面调度算法处理缺页中断。

实验报告内容

I、分页式存储管理和先进先出页面调度算法原理。

2、程序流程图。

3、程序及注释。

4、运行结果以及结论。

1、分页式存储管理和先进先出页面调度算法原理。

在存储器管理中,连续分配方式会形成许多“碎片”,虽然可通过“紧凑”方法将许多

碎片拼接成可用的大块空诃,但须为之付出很大开销。如果允许将一个进程直接分散地装入

到许多不相邻的分区中,则无须再进行“紧凑”“基于这一思想而产生了离散分配方式“如

果离散分配的基本单位是页,则称为分页存储管理方式。在分页存储管理方式中,如果不具

备页面对换功能,则称为基本分页存储管理方式,或称为纯分页存储管理方式,它不具有支

持实现虚拟存储器的功能,它要求把每个作业全部装入内存后方能运行。

先进先出调度算法根据页面进入内存的时间先后选择淘汰页面,先进入内存的页面先淘

汰,后进入内存的后淘汰,本算法实现时需要将页面按进入内存的时间先后组成一个队列,

每次调度队首页面予以淘汰。

这种调度算法总是淘汰最先进入内存的那一页,FIFO算法简单,实现容易。

一种实现方法是把装入内存的那些页的页号按进入II勺先后次序排成队列,用指针K指

示当前调入新页时应淘汰的页在队列中的位置。每当调入一个新页后,在指针指示的位置上

填上新页号,然后指针K加1,指向下一次应淘汰的页,

2、程序流程图

pagelist[3].block=1;

pagelist[3].disk=004;

)

voidwork_exl()〃模拟分页式存储管理中硬件的地址转换和产生缺页中断过程

(

boolstop=0;

longp,q;

chars[128];

do

(

printf(”请输入指令的页号和单元号:\n");

if(scanf("%ld%ld”,&p,&q)!=2)

(

scanf(”%s”,s);

if(slrcmp(s,"exiT'尸=0)〃如果输入的为"exil"那么就退出,进入重选

页面

(

stop=l;

I

}

else

(

if(pagclist[p].flag)//如果该页flag标志位为I,说明该页在主存中

(

printf("绝对地址二%ld\n",pagelist[p].block*SizeOfBlock+q);

//计算出绝对地址,绝对地址二块号blockX块长(默认128)+单元

)

else

primf("该页号%ld不存在主存\n”,p);

〃如果该页flag标志位为0,表示该页不在主存中,则产生了一

次缺页中断

1

)

}while(!stop);

)

voidinit_ex2()

(

/*用先进先出(FIFO)页面调度算法处理缺页中断的初始化,

其中也包含了对于当前的存储器内容的初始化刃

po=0;

P[0]=0;P[1]=1;P[2]=2;P[3]=3;

〃对内存中的4个页面进行初始化,并使目前排在第一位的为0

memset(pagelist,0,sizeof(pagelist));〃将内存空间初始化为0

pagelist[O].flag=l;

pagelist[O].block=5;

pagelist[()].disk-001;

pagelist[l].flag=l;

pagelist[1].block=8;

pagelistf1].disk=002;

pagelist[2].flag=l;

pagelist[2].block=9;

pagelisl[2].disk-003;

pagelist[3].flag=l;

pagelist[3].block=1;

pagelist[3].disk=004;

)

voidwork_cx2()//模拟FIFO算法的工作过程

longp,q,i;

chars[100];

boolstop=0;

do

(

printf("请输入指令的页号、单元号,以及是否为内存指令:\n”);

if(scanfC'%ld%ldH,&p,&q)!=2)

(

scanf(n%s';s);

if(strcmp(s,"exit")==O)〃如果输入的为"exit"那么就退出,进入重选

页面

(

stop=1;

)

}

else

(

scanf("%s",s);

if(pagelisUp].flag)〃如果该页flag标志位为1,说明该页在主存中

(

primf("绝对地址=%Id\n",pageli毗p].block*SizeOfBlock+q);

//计算绝对地址:绝对地址二块号blockX块长(128)+单元号

if(s[0]==Y||s[0]==V)//内存指令,在该程序中,无实质性作用

{

pagelist[p].dirty=l;〃修改标志为1

)

)

else//如果所输入的页不在内存中

if(pagelist[PlpoJ].dirty)〃当前的页面被更新过,需把更

新后的内容写回外存

(

pagelist倒po]].dirty=();//将标志位复0

I

pagelistfP[po]].flag=0;〃将flag标志位置0,表示当前页面己

被置换出去

prin【f(”oul%ld\n”,P[poD;〃显示根据FIFO算法被置换出去的页

printf("in%ld\nH,p);〃显示根据FIFO算法被调入的页面,

此时将调入的页置于换出页的位置

pagelkt[p].hlock=pagelkt[P[pc]]hcck;〃将换出页的块号赋给

调入页

pagelisl[p].flag=l;〃将当前页面的标记置为1,表示已在主存中

Plpo]=p;〃保存当前页面所在的位置

po=(po+l)%M;

)

I

}while。stop);

printf("数组P的值为:\n”);

for(i=0;i<M;i++)〃循环输出当前数组的数值,即当前在内存中的页面

(

printf(,,P[%ld]=%ld\n,,,i,P[i]);

I

)

voidselect()〃选择哪种方法进行

(

longse;

chars[128];

do

prinlf("请选择题号(1/2):");

if(scanf(,"%ld",&se)!=l)

(

scanf("%s'\&s);

if(strcmp(s/'exit'r)==O)〃如果输入为exit则退出整个程序

(

return;

)

1

else

(

if(se==1)

〃如果se=l,说明选择的是模拟分页式存储管理中硬件的地址转换和产

生缺页中断

(

init_exl();〃调用init_exl子函数,初始化

work_exl();〃进行模拟

I

if(se==2)//如果se=2说明选择的是FIFO算法来实现页面的

置换

(

init_ex2();〃调用init_ex2子函数,初始化

wurk_ex2();〃进行模拟

)

)

}while(l);

intmain。//主函数

〃输出主界面

pri*nt,PI\,11不不不不却不不不不不K1下»«t不»不于7不.«不t»而不»下?*不»不t«*不t*»不A«7不.»不!,«不L»K不1»不7下.不«1»、不1»不7不.*下1**不1*d不J»不7不.不不予不7.下«t不»、1»不不7.不»不!不军*不\\n11\)•

printf(H虚拟存储器管理*\n”);

printf(n*1.分页管理模块2.先进先出(FIFO)算法*\n");

select();//调用select函数,选择题号

return0;

4、运行结果以及结论

选择I进入分业管理模块,输入指令的页号和单元号,判断是否为结束语句exit,如果

是,则退出主界面,若果不是,则进而判断该页是否存在于主存中,如若是,则算出

其绝对地址,公式为:绝对地址=块号X块长+单元号,即输入页号1,单元号为30时,

输出绝对地址=8*128+30=1054,同理输入页号2,单元号6时,输出绝对地址

=9*128+6=1158>如若

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论