虚拟存储器实验报告Word下载.docx

上传人:b****6 文档编号:19129179 上传时间:2023-01-04 格式:DOCX 页数:11 大小:16.63KB
下载 相关 举报
虚拟存储器实验报告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

时,可把作业的开始几页先装入主存且启动执行。

为此,在为作业建立页

其中,标志----用来表示对应页是否已经装入主存,标志位=1,则表示该

页已经在主存,标志位=0,则表示该页尚未装入主存。

主存块号----用来表示已经装入主存的页所占的块号。

在磁盘上的位置----用来指出作业副本的每一页被存放在磁盘上的位置。

(2)作业执行时,指令中的逻辑地址指出了参加运算的操作存放的页号和单元

号,硬件的地址转换机构按页号查页表,若该页对应标志为“1”,则表示该页已在主存,这时根据关系式:

绝对地址=块号×

块长+单元号

计算出欲访问的主存单元地址。

如果块长为2的幂次,则可把块号作为高地址部分,把单元号作为低地址部分,两者拼接而成绝对地址。

若访

问的页对应标志为“0”,则表示该页不在主存,这时硬件发“缺页中断”信号,有操作系统按该页在磁盘上的位置,把该页信息从磁盘读出装入主存后再重新执行这条指令。

(3)设计一个“地址转换”程序来模拟硬件的地址转换工作。

当访问的页在主

存时,则形成绝对地址,但不去模拟指令的执行,而用输出转换后的地址来代替一条指令的执行。

当访问的页不在主存时,则输出“*该页页号”,表示产生了一次缺页中断。

该模拟程序的算法如图2-1。

(4)假定主存的每块长度为128个字节;

现有一个共七页的作业,其中第0页至第3页已经装入主存,其余三页尚未装入主存;

该作业的页表为:

如果作业依次执行的指令序列为:

(4)运行设计的地址转换程序,显示或打印运行结果。

因仅模拟地址转换,并

不模拟指令的执行,故可不考虑上述指令序列中的操作。

五、运行代码

#include

#include"

list"

usingnamespacestd;

#defineN11

#defineM12

#defineMEMORYBLOK10

#defineLENGTH128

structpage{

intnumber;

intflag;

intframe;

intlocation;

intchange;

};

structaction{

charoperate;

intpageNum;

intoffset;

structpagepageTable[N];

listactionForm;

voidinit(){

pagep第一文库网age0={0,0,5,11,0};

pageTable[0]=page0;

pagepage1={1,1,8,12,0};

pageTable[1]=page1;

pagepage2={2,1,9,13,0};

pageTable[2]=page2;

pagepage3={3,1,1,21,0};

pageTable[3]=page3;

pagepage4={4,0,-1,22,0};

pageTable[4]=page4;

pagepage5={5,0,-1,23,0};

pageTable[5]=page5;

pagepage6={6,0,-1,121,0};

pageTable[6]=page6;

//

pageTable[7]=page6;

pageTable[8]=page6;

pageTable[9]=page6;

pageTable[10]=page6;

//对的初始化

/*for(inti=0;

i

Q[i]=-1;

}

for(i=0;

P[i]=-1;

i

if(pageTable[i].flag==1){

P[K]=i;

K=(K+1)%MEMORYBLOK;

if(pageTable[i].flag==1){

intframe=pageTable[i].frame;

Q[frame]=pageTable[i].number;

}*/

actiona1={'

+'

1,70};

actiona2={'

1,50};

actiona3={'

*'

2,15};

actiona4={'

s'

3,21};

actiona5={'

g'

0,56};

actiona6={'

-'

6,40};

actiona7={'

y'

4.53};

actiona8={'

5,23};

actiona9={'

1,37};

actiona10={'

2,78};

actiona11={'

4,1};

actiona12={'

6,84};

actionForm.push_back(a1);

actionForm.push_back(a2);

actionForm.push_back(a3);

actionForm.push_back(a4);

actionForm.push_back(a5);

actionForm.push_back(a6);

actionForm.push_back(a7);

actionForm.push_back(a8);

actionForm.push_back(a9);

actionForm.push_back(a10);

actionForm.push_back(a11);

actionForm.push_back(a12);

voidrun(){

while(!

actionForm.empty()){

actiona=actionForm.front();

cout

if(a.operate=='

elseif(a.operate=='

else

intpageNum=a.pageNum;

//如果不在主存中

if(pageTable[pageNum].flag==0){

//计算绝对地址

else{

intresult;

result=pageTable[pageNum].frame*LENGTH+a.offset;

"

pageTable[pageNum].change=1;

actionForm.pop_front();

main(){

init();

run();

return0;

六、运行结果

七、实验总结

有了上一次的实验,我对c++6.0这一软件已经有了而初步的认识,在本次上机前我对实验进行了玉溪,对实验的原理和实验的设计也有了初步的了解,在具体的实验操作过程中,主要考验的是细心和耐心,一旦某个细节忽略了就很容易出现错误,造成大量时间的浪费,所以在做一些细节步骤的时候一定要细心和耐心。

最后是验证,通过验证我们可以对许多理论知识有新的理解。

实践是检验真理的标准,四节课的时间让我虚拟存储器以及它的功能有了深刻的了解,对书本上的知识有了更深刻的认识,也学到了课本上学不到的知识。

内容仅供参考

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

当前位置:首页 > PPT模板 > 其它模板

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

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