- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验 模拟页式虚拟存储管理中硬件的地址转换和用
实验 模拟页式虚拟存储管理中硬件的地址转换和用
先进先出调度算法处理缺页中断
1、实验目的
1)理解页式虚拟存储管理中的地址转换。
2)理解用先进先出调度算法如何处理缺页中断。
2、实验原理
在页式虚拟存储管理中,如果访问的页面在内存,计算出相应的物理地址,如果访问的页面不在内存,产生缺页中断,将所缺页从外存调入,如果内存没有空间需要将内存的一页淘汰,再将所缺页调入,然后计算出相应的物理地址。
3、实验仪器设备
微型计算机、C或Visual C++开发软件
4、实验内容与步骤
编写程序,模拟页式虚拟存储管理中硬件的地址转换和用先进先出调度算法处理缺页中断。
假定主存的每块长度为1024个字节,现有一个共7页的作业,其副本已在磁盘上。系统为该作业分配了4个主存块,且该作业的第0页至第3页已经装入主存,其余3页尚未装入主存,该作业的页表见下表。
页号 标志 主存块号 修改标志 在磁盘上的位置 0 1 5 0 010 1 1 8 0 012 2 1 9 0 013 3 1 1 0 021 4 0 0 022 5 0 0 023 6 0 0 125
实验步骤
1)输入程序
2)如果该作业执行的指令序列如下表所示:
操作 页号 页内地址 操作 页号 页内地址 + 0 072 + 4 056 5+ 1 050 — 5 023 ╳ 2 015 存(save) 1 037 存(save) 3 026 + 2 078 取(load) 0 056 — 4 001 — 6 040 存(save) 6 086
执行上述的指令序列来调试你所设计的程序(仅模拟指令的执行,不必考虑指令序列中具体操作的执行)
5、预习及实验报告要求
预习页式虚拟存储管理中地址转换和页面置换算法的有关内容。实验报告要求写出程序的源代码及运行结果。
分析:主存块有4个,物理地址=块号*块长(这里是1024)+块内地址(块内地址=页内地址),若页号不在主存中,则产生缺页中断,根据先进先出原则,今要执行的页号置换最先进入主存的页号,计算得到如下值:
(1)5192,
(2)8242,
(3)9231,
(4)1050,
(5)5176,
(6)5160,
(7)8248,
(8)9239,
(9)1061,
(10)5198,
(11)8193,
(12)8278
012306451246
000006666222
111111444446
222222255555
333333331111
英文版
#define size 1024//定义块的大小,本次模拟设为1024个字节。
#include stdio.h
#include string.h
#include conio.h
struct plist
{
int number; //页号
int flag; //标志,如为1表示该页已调入主存,如为0则还没调入。
int block; //主存块号,表示该页在主存中的位置。
int modify; //修改标志,如在主存中修改过该页的内容则设为1,反之设为0
int location; //在磁盘上的位置
};
//模拟之前初始化一个页表。
struct plist p1[7]={{0,1,5,0,010},{1,1,8,0,012},{2,1,9,0,013},{3,1,1,0,021},{4,0,-1,0,022},{5,0,-1,0,023},{6,0,-1,0,125}};
//命令结构,包括操作符,页号,页内偏移地址。
struct ilist
{
char operation[10];
int pagenumber;
int address;
};
//在模拟之前初始化一个命令表,通过程序可以让其顺序执行。
struct ilist p2[12]={{+,0,72},{5+,1,50},{*,2,15},{save,3,26},
{load,0,56},{-,6,40},{+,4,56},{-,5,23},
{save,1,37},{+,2,78},{-,4,1},{save,6,86}};
main()
{
printf( 模拟页式虚拟存储管理中硬件的地址转换和用先进先出调度算法处理缺页中断\n);
int i,lpage,pflage,replacedpage,pmodify;
int p[4]={0,1,2,3};
int k=0;
int m=4;
long memaddress;
for(i=0;i12;i++)//作业执行指令序列,12个
{
lpage=p2[i].pagenumber;//获取
文档评论(0)