模拟分页式虚拟存储管理中硬件的地址转换和缺页中断选择页面调度算法处理缺页中断.docx

上传人:b****2 文档编号:2413401 上传时间:2023-05-03 格式:DOCX 页数:15 大小:127.75KB
下载 相关 举报
模拟分页式虚拟存储管理中硬件的地址转换和缺页中断选择页面调度算法处理缺页中断.docx_第1页
第1页 / 共15页
模拟分页式虚拟存储管理中硬件的地址转换和缺页中断选择页面调度算法处理缺页中断.docx_第2页
第2页 / 共15页
模拟分页式虚拟存储管理中硬件的地址转换和缺页中断选择页面调度算法处理缺页中断.docx_第3页
第3页 / 共15页
模拟分页式虚拟存储管理中硬件的地址转换和缺页中断选择页面调度算法处理缺页中断.docx_第4页
第4页 / 共15页
模拟分页式虚拟存储管理中硬件的地址转换和缺页中断选择页面调度算法处理缺页中断.docx_第5页
第5页 / 共15页
模拟分页式虚拟存储管理中硬件的地址转换和缺页中断选择页面调度算法处理缺页中断.docx_第6页
第6页 / 共15页
模拟分页式虚拟存储管理中硬件的地址转换和缺页中断选择页面调度算法处理缺页中断.docx_第7页
第7页 / 共15页
模拟分页式虚拟存储管理中硬件的地址转换和缺页中断选择页面调度算法处理缺页中断.docx_第8页
第8页 / 共15页
模拟分页式虚拟存储管理中硬件的地址转换和缺页中断选择页面调度算法处理缺页中断.docx_第9页
第9页 / 共15页
模拟分页式虚拟存储管理中硬件的地址转换和缺页中断选择页面调度算法处理缺页中断.docx_第10页
第10页 / 共15页
模拟分页式虚拟存储管理中硬件的地址转换和缺页中断选择页面调度算法处理缺页中断.docx_第11页
第11页 / 共15页
模拟分页式虚拟存储管理中硬件的地址转换和缺页中断选择页面调度算法处理缺页中断.docx_第12页
第12页 / 共15页
模拟分页式虚拟存储管理中硬件的地址转换和缺页中断选择页面调度算法处理缺页中断.docx_第13页
第13页 / 共15页
模拟分页式虚拟存储管理中硬件的地址转换和缺页中断选择页面调度算法处理缺页中断.docx_第14页
第14页 / 共15页
模拟分页式虚拟存储管理中硬件的地址转换和缺页中断选择页面调度算法处理缺页中断.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

模拟分页式虚拟存储管理中硬件的地址转换和缺页中断选择页面调度算法处理缺页中断.docx

《模拟分页式虚拟存储管理中硬件的地址转换和缺页中断选择页面调度算法处理缺页中断.docx》由会员分享,可在线阅读,更多相关《模拟分页式虚拟存储管理中硬件的地址转换和缺页中断选择页面调度算法处理缺页中断.docx(15页珍藏版)》请在冰点文库上搜索。

模拟分页式虚拟存储管理中硬件的地址转换和缺页中断选择页面调度算法处理缺页中断.docx

模拟分页式虚拟存储管理中硬件的地址转换和缺页中断选择页面调度算法处理缺页中断

操作系统实验二〔第一题〕

一.实验内容

模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺页中断。

二.实验目的

在电脑系统总,为了提高主存利用率,往往把辅助存储器作为主存储器的扩充,使多道运行的作业的全部逻辑地址空间综合可以超出主存的绝对地址空间。

用这种方法扩充的主存储区成为虚拟存储器。

三.实验题目

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

是否

四.程序清单

//

//操作实验二.cpp:

定义控制台应用程序的入口点。

//

#include"stdafx.h"

#include

#include

#include

usingnamespacestd;

classins

{

private:

stringope;

longintpage;

longintunit;

public:

ins(){}

ins(stringo,longintp,longintu):

ope(o),page(p),unit(u){}

voidsetope(stringo){ope=o;}

voidsetpage(longintp){page=p;}

voidsetunit(longintu){unit=u;}

stringgetope(){returnope;}

longintgetpage(){returnpage;}

longintgetunit(){returnunit;}

};

classwork

{

private:

longintPage;

intsym;

longintinum;

longintonum;

public:

work(){}

work(longintP,ints,longinti,longinto):

Page(P),sym(s),inum(i),onum(o){}

voidsetPage(longintP){Page=P;}

voidsetsym(ints){sym=s;}

voidsetinum(longinti){inum=i;}

voidsetonum(longinto){onum=o;}

longintgetPage(){returnPage;}

intgetsym(){returnsym;}

longintgetinum(){returninum;}

longintgetonum(){returnonum;}

};

voiddiaodu(work*w,ins*i,intnumofins)

{for(intj=0;j

{

longinttempofk;

longinta=i[j].getpage();

for(intk=0;k<7;k++)//7是页表的页数

if(w[k].getPage()!

=a)

continue;

else

{

tempofk=k;

break;

}

if(w[tempofk].getsym()==1)

cout<<"绝对地址:

"<

"<

"<

elsecout<<"*"<<"发生缺页中断"<

}

}

intmain()

{

ins*INS=newins[12];

INS[0].setope("+");

INS[0].setpage(0);

INS[0].setunit(70);

INS[1].setope("+");

INS[1].setpage

(1);

INS[1].setunit(50);

INS[2].setope("×");

INS[2].setpage

(2);

INS[2].setunit(15);

INS[3].setope("存");

INS[3].setpage(3);

INS[3].setunit(21);

INS[4].setope("取");

INS[4].setpage(0);

INS[4].setunit(56);

INS[5].setope("-");

INS[5].setpage(6);

INS[5].setunit(40);

INS[6].setope("移位");

INS[6].setpage(4);

INS[6].setunit(53);

INS[7].setope("+");

INS[7].setpage(5);

INS[7].setunit(23);

INS[8].setope("存");

INS[8].setpage

(1);

INS[8].setunit(37);

INS[9].setope("取");

INS[9].setpage

(2);

INS[9].setunit(78);

INS[10].setope("+");

INS[10].setpage(4);

INS[10].setunit

(1);

INS[11].setope("存");

INS[11].setpage(6);

INS[11].setunit(84);

work*W=newwork[7];

ifstreamin("g:

//operate1.txt");

longintp;

ints;

longinti;

longinto;

for(intjj=0;jj<7;jj++)

{

in>>p;in>>s;in>>i;in>>o;

W[jj].setPage(p);

W[jj].setsym(s);W[jj].setinum(i);W[jj].setonum(o);

}

diaodu(W,INS,12);

}

五.结果显示

操作系统实验二〔第二题〕

一.

用先进先出〔FIFO〕

是否

是否

九.程序清单

/操作系统实验二.cpp:

定义控制台应用程序的入口点。

//

#include"stdafx.h"

#include

#include

#include

usingnamespacestd;

classins

{

private:

stringope;

longintpage;

longintunit;

public:

ins(){}

ins(stringo,longintp,longintu):

ope(o),page(p),unit(u){}

voidsetope(stringo){ope=o;}

voidsetpage(longintp){page=p;}

voidsetunit(longintu){unit=u;}

stringgetope(){returnope;}

longintgetpage(){returnpage;}

longintgetunit(){returnunit;}

};

classwork

{

private:

longintPage;

intsym;

longintinum;

intchange;

longintonum;

public:

work(){}

work(longintP,ints,longinti,intc,longinto):

Page(P),sym(s),inum(i),change(c),onum(o){}

voidsetPage(longintP){Page=P;}

voidsetsym(ints){sym=s;}

voidsetinum(longinti){inum=i;}

voidsetchange(intc){change=c;}

voidsetonum(longinto){onum=o;}

longintgetPage(){returnPage;}

intgetsym(){returnsym;}

longintgetinum(){returninum;}

intgetchange(){returnchange;}

longintgetonum(){returnonum;}

};

voiddiaodu(work*w,ins*i,intnumofins)

{

constintm=4;

intp[m]={0,1,2,3};

intk=0;

inttempofins=12;

for(intii=0;ii

{

intL=i[ii].getpage();

for(intiii=0;iii<7;iii++)

if(w[iii].getPage()!

=L)

continue;

elseif(w[iii].getsym()==1)

{

if(i[ii].getope()=="存")

w[iii].setchange

(1);

cout<<"绝对地址谓:

"<

}

else{

cout<<"产生中断"<<"*"<

intj=p[k];

w[j].setsym(0);

w[j].setinum(-1);

w[L].setsym

(1);

w[L].setinum(rand()%20+10);

if(w[j].getchange()==1)

cout<<"第"<

p[k]=L;

k=(k==m-1)?

0:

(k+1);

}

cout<<"调入主存的页:

";

for(intiiii=0;iiii

{

intkk=p[iiii];

cout<

}

cout<

}

}

intmain()

{

ins*INS=newins[12];

INS[0].setope("+");

INS[0].setpage(0);

INS[0].setunit(70);

INS[1].setope("+");

INS[1].setpage

(1);

INS[1].setunit(50);

INS[2].setope("×");

INS[2].setpage

(2);

INS[2].setunit(15);

INS[3].setope("存");

INS[3].setpage(3);

INS[3].setunit(21);

INS[4].setope("取");

INS[4].setpage(0);

INS[4].setunit(56);

INS[5].setope("-");

INS[5].setpage(6);

INS[5].setunit(40);

INS[6].setope("移位");

INS[6].setpage(4);

INS[6].setunit(53);

INS[7].setope("+");

INS[7].setpage(5);

INS[7].setunit(23);

INS[8].setope("存");

INS[8].setpage

(1);

INS[8].setunit(37);

INS[9].setope("取");

INS[9].setpage

(2);

INS[9].setunit(78);

INS[10].setope("+");

INS[10].setpage(4);

INS[10].setunit

(1);

INS[11].setope("存");

INS[11].setpage(6);

INS[11].setunit(84);

work*W=newwork[7];

ifstreamin("g:

//operate.txt");

longintp;

ints;

longinti;

intc;

longinto;

for(intjj=0;jj<7;jj++)

{

in>>p;in>>s;in>>i;in>>c;in>>o;

W[jj].setPage(p);

W[jj].setsym(s);W[jj].setinum(i);W[jj].setchange(c);W[jj].setonum(o);

}

diaodu(W,INS,12);

}

十.程序结果

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2