模拟实现页面地址重定位实习报告Word下载.docx

上传人:b****2 文档编号:3782663 上传时间:2023-05-02 格式:DOCX 页数:12 大小:63.16KB
下载 相关 举报
模拟实现页面地址重定位实习报告Word下载.docx_第1页
第1页 / 共12页
模拟实现页面地址重定位实习报告Word下载.docx_第2页
第2页 / 共12页
模拟实现页面地址重定位实习报告Word下载.docx_第3页
第3页 / 共12页
模拟实现页面地址重定位实习报告Word下载.docx_第4页
第4页 / 共12页
模拟实现页面地址重定位实习报告Word下载.docx_第5页
第5页 / 共12页
模拟实现页面地址重定位实习报告Word下载.docx_第6页
第6页 / 共12页
模拟实现页面地址重定位实习报告Word下载.docx_第7页
第7页 / 共12页
模拟实现页面地址重定位实习报告Word下载.docx_第8页
第8页 / 共12页
模拟实现页面地址重定位实习报告Word下载.docx_第9页
第9页 / 共12页
模拟实现页面地址重定位实习报告Word下载.docx_第10页
第10页 / 共12页
模拟实现页面地址重定位实习报告Word下载.docx_第11页
第11页 / 共12页
模拟实现页面地址重定位实习报告Word下载.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

模拟实现页面地址重定位实习报告Word下载.docx

《模拟实现页面地址重定位实习报告Word下载.docx》由会员分享,可在线阅读,更多相关《模拟实现页面地址重定位实习报告Word下载.docx(12页珍藏版)》请在冰点文库上搜索。

模拟实现页面地址重定位实习报告Word下载.docx

计算机科学与技术计科6班

学号:

2013301500217

姓名:

张伟

课程名称:

操作系统设计

任课教师:

宋伟

2015年12月22日

一、实习内容

1、编写和调试模拟实现页式地址重定位。

2、加深理解页式地址重定位技术在多道程序设计中的作用和意义。

二、实习题目

当进程在CPU上运行时,如指令中涉及逻辑地址时,操作系统自动根据页长得到页号和页内偏移,把页内偏移拷贝到物理地址寄存器,再根据页号,查页表,得到该页在内存中的块号,把块号左移页长的位数,写到物理地址寄存器。

三、实验内容:

1、设计页表结构;

2、设计地址重定位算法

3、有良好的人机对话界面

三、设计思想

数据结构

intPage_length;

//页长

intPage_Num;

//页数

intprocess;

//进程大小

intLogical_Address;

//逻辑地址

classPageTable//定义一个页表项

{

public:

intpage_num;

//页的编号

intpic_num;

//对应的物理内存块号

PageTable(intthepage_num,intthepic_num)

{

page_num=thepage_num;

pic_num=thepic_num;

}

PageTable()

page_num=0;

pic_num=0;

};

classLogicalAdd//定义逻辑地址

{public:

//逻辑地址对应的页号

intpage_add;

//对应的页地址

public:

LogicalAdd(inta,intb)

page_num=a;

page_add=b;

LogicalAdd()

page_add=0;

PageTablePT[N];

//定义一个页表

LogicalAddLogAdd;

//logicaladdress

主要函数

(1)voidinput()//输入函数

(2)intinit()//初始化函数

(3)inttranslate()//转换函数,逻辑地址转换为物理地址

(4)voidoutput(intres)//输出结果的函数

Main函数

intmain()

intchoice;

cout<

<

"

-------模拟页面地址重定位--------"

<

endl;

for(;

;

cout<

1:

输入信息\n2:

查看页表\n3:

查看物理地址\n4:

退出"

cin>

>

choice;

switch(choice)

{

case1:

input();

if(init()==-1)return-1;

break;

case2:

output(0);

case3:

output(translate());

case4:

cout<

已经退出\n"

exit(0);

}

return1;

}

初始化部分

1.由键盘输入进程大小,页面大小,所要查询的虚拟地址

2.利用随机函数将页面号与物理块号一一对应

转换算法部分

1根据相应转换算法把逻辑地址转换为物理地址。

2.自动构造页表

结果显示部分

根据相应提示输出页表或者输入的逻辑地址对应的物理地址

四、源代码

/*C++SourceFile*/

/*开发环境为MicrosoftVisualStudio2015*/

#include<

iostream>

cstdlib>

string>

time.h>

usingnamespacestd;

#defineN50//最大值为50

//logicaladdress

voidinput()

请输入进程大小"

cin>

process;

输入页长\n"

Page_length;

输入逻辑地址\n"

Logical_Address;

intinit()//初始化函数

{

srand(time(0));

//伪随机函数,实现内存随机装配

inti,temp;

intsum=1;

Page_Num=process/Page_length+1;

//计算总页数

/*cout<

"

num="

Page_Num<

endl;

*/

PT[0].pic_num=1;

for(i=0;

i<

Page_Num;

i++)

PT[i].page_num=i;

temp=rand()%3+1;

sum=sum+temp;

PT[i].pic_num+=sum;

//所对应的物理内存块号

/*cout<

PT[i].pic_num<

LogAdd.page_num=Logical_Address/Page_length;

if(LogAdd.page_num/Page_Num>

=Page_Num)

所查询的逻辑地址不在该页内,初始化失败"

return-1;

inttranslate()//转换函数,逻辑地址转换为物理地址

inti=0;

intres;

while(i<

Page_Num)

if(PT[i].page_num==LogAdd.page_num)

res=PT[i].pic_num;

}//找到某个逻辑地址对应的物理块号

elsei++;

if(i>

N)

returnres*Page_length+LogAdd.page_add;

voidoutput(intres)

if(res==0)

构造的页表如下:

页号\t块号"

for(inti=0;

PT[i].page_num<

\t"

PT[i].pic_num<

elsecout<

物理地址为:

res<

五、运行实例

用户提示界面(如图1)

图1

首先输入1,进行手动初始化

图2

再输入2,查看页表信息

图3

输入3,查看物理地址

图4

六、心得与体会

通过本次实验,我对页面地址重定位有了较为浅显的认知,对于虚拟页面和物理块之间的联系有了更深的理解,从而也再次学习了内存装入与重定向的相关知识,受益匪浅,希望在以后的学习中再接再厉。

WelcomeTo

Download!

!

欢迎您的下载,资料仅供参考!

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

当前位置:首页 > 临时分类 > 批量上传

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

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