模拟操作系统的页面置换实验报告模板文档格式.docx

上传人:b****6 文档编号:18268551 上传时间:2022-12-14 格式:DOCX 页数:16 大小:110.93KB
下载 相关 举报
模拟操作系统的页面置换实验报告模板文档格式.docx_第1页
第1页 / 共16页
模拟操作系统的页面置换实验报告模板文档格式.docx_第2页
第2页 / 共16页
模拟操作系统的页面置换实验报告模板文档格式.docx_第3页
第3页 / 共16页
模拟操作系统的页面置换实验报告模板文档格式.docx_第4页
第4页 / 共16页
模拟操作系统的页面置换实验报告模板文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

模拟操作系统的页面置换实验报告模板文档格式.docx

《模拟操作系统的页面置换实验报告模板文档格式.docx》由会员分享,可在线阅读,更多相关《模拟操作系统的页面置换实验报告模板文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

模拟操作系统的页面置换实验报告模板文档格式.docx

范围内,则设置dn+1为1到dn范围内一个随机数。

如果a落在769到1024

范围内,则设置dn+1为dn到32767范围内一个随机数。

例如:

srand();

初始化一个随机函数。

a[0]=10*rand()/32767*255+1;

a[1]=10*rand()/32767*a[0]…语句可用来

产生a[0]与a[1]中的随机数。

或采用以下方式:

(1)通过随机数产生一个指令序列,共320条指令。

指令的

地址按下述原则生成:

A:

50%的指令是顺序执行的

B:

25%的指令是均匀分布在前地址部分

C:

25%的指令是均匀分布在后地址部分

具体的实施方法是:

在[0,319]的指令地址之间随机选取一起点m

顺序执行一条指令,即执行地址为m+1的指令

在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m'

D:

顺序执行一条指令,其地址为m'

+1

E:

在后地址[m'

+2,319]中随机选取一条指令并执行

F:

重复步骤A-E,直到320次指令

(2)将指令序列变换为页地址流

设:

页面大小为1K;

用户内存容量4页到32页;

用户虚存容量为32K。

在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的

存放方式为:

第0条-第9条指令为第0页(对应虚存地址为[0,9])

第10条-第19条指令为第1页(对应虚存地址为[10,19])

第310条-第319条指令为第31页(对应虚存地址为[310,319])

按以上方式,用户指令可组成32页。

4、页面大小的取值范围为1K,2K,4K,8K,16K。

按照页面大小将指令

地址转化为页号。

对于相邻相同的页号,合并为一个。

四、实验设计

1.产生访问页面的序列,保存在数组queue中

2.FIFO(先进先出)算法

数组queue_f表示物理内存中的内容

As为页面置换计数器

图1

3.LRU(最近最久未使用)算法

数组queue_f表示物理内存中的内容

数组queue_t与queue_f对应为其进入内存未使用的时间标志

As为页面置换计数器

图2

4.Opt算法

数组queue_t与queue_f对应为其后续页面访问序列出现的第一位置

五、实验实现

voidCMyDlg:

:

OnFIFO()

{

CStringstr1="

"

;

CStringstr2="

intb;

intm=0;

intas=0;

//置换页面计数

boolx;

//页面是否需要置换

if(m_capm<

count)//分配的页面数少于所需要访问的页面数

{

m_list.ResetContent();

UpdateData(0);

for(inti=0;

i<

count;

i++)

{

str1="

str2="

x=true;

for(intk=0;

k<

m_capm;

k++)

{

if(queue[i]==queue_f[k])

{

x=false;

//判断物理块中是不是有跟当前须替换的页面

break;

}

}//如果没有且无空闲的页面,则需要置换

if(x)

inta;

a=(i-m)%m_capm;

queue_f[a]=queue[i];

as++;

}

else

m++;

intmm;

if(m<

m_capm)mm=m;

elsemm=m_capm;

for(intj=0;

j<

mm;

j++)

b=queue_f[j];

str2.Format("

%d"

b);

str1=str1+"

"

+str2;

m_list.InsertString(-1,str1);

}

m_zhihuanshu=as;

m_zhihuanlv=(double)as/count;

if((as-m_capm)<

=0)

{

m_queyeshu=0;

m_queyelv=0;

else

m_queyeshu=as-m_capm;

m_queyelv=(double)(as-m_capm)/count;

}

else

MessageBox("

页面总数小于物理块,不需要进行交换操作!

);

}

OnLRU()

inta,b;

intm=0;

{

queue_t[k]=0;

for(intj=0;

j++)

{

if(j!

=k)

queue_t[j]++;

//使物理块中的每个未使用页面的时间增一

}

m++;

if(x)

{

intc=0,d;

if((i-m)<

m_capm)

a=i-m;

}//当前物理页面未填满时直接装入

else

d=queue_t[0];

for(inth=0;

h<

h++)

if(d<

queue_t[h])

{

d=queue_t[h];

c=h;

}

a=c;

//找出物理块中最久未使用的页面号

//将其替换

queue_t[a]=0;

for(k=0;

if(k!

=a)

queue_t[k]++;

//使物理块中的每个未改变页面的时间增一

m_list.InsertString(-1,str1);

Onopt()

intopu;

//当前占有的页面数

opu=0;

//判断物理块中是不是有跟当前须替换的页面

if((x)&

&

(opu<

m_capm))//还有空位

queue_f[opu]=queue[i];

opu++;

(opu==m_capm))

{//找最晚出现的页面号

for(intnumber=0;

number<

number++)

for(intnum=i;

num<

num++)

if(queue_f[number]==queue[i])

queue_t[number]=i;

if(num==count)

queue_t[number]=count;

}

intlast=0;

for(number=0;

if(queue_t[number]>

last)

last=number;

queue_f[last]=queue[i];

m_capm)mm=opu;

formqueue()

{

UpdateData

(1);

cap=32/m_cap;

intcap1=m_cap*1024;

count=0;

intm;

inta;

intdn=10000;

srand(time(0));

for(inti=0;

256;

{

a=1+rand()%1024;

if(a<

513)

dn=dn+1;

if((a>

512)&

(a<

769))

dn=1+rand()%dn;

768)&

1025))

inttem=32767-dn;

dn=dn+rand()%tem;

UpdateData

(1);

m=dn/cap1;

if(i==0)queue[0]=m;

if((m!

=queue[count])&

(i>

0))

count++;

queue[count]=m;

queue_f=newint[m_capm];

queue_t=newint[m_capm];

intbb=0;

intii=0;

for(intn=0;

n<

n++)

b=queue[n];

str2.Format("

str1=str1+"

if(bb==5)

str1="

bb=0;

bb++;

实验平台:

WINDOWS操作系统、VISAULC++6.0。

六、结果及结果分析

七、实验心得

通过此次实验,加深了对操作系统的认识,了解了操作系统中各种资源分配算法的实现,特别是对虚拟存储,页面置换有了深入的了解,并能够用高级语言进行模拟演示有如下几点体会:

1.两种页面置换算法FIFO,LRU和OPT理解起来相当容易,但在实际编程实现的时候需要注意各种细节,需要耐心细致,实际编程中遇到一些细节上的小问题确实需要仔细考虑才行。

2.因为需要用户输入后才能知道实际内存块和最大页面数的大小,在LRU算法中时间权值数组queue_t是关键,必须与页面变化同步。

七、参考文献

《操作系统教程》(第三版)作者:

孙钟秀高等教育出版社

《C++程序设计语言》主编:

揣锦华西安电子科技出版社

《VisualC++实训教程》主编:

朱家义张同光机械工业出版社

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

当前位置:首页 > 高等教育 > 院校资料

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

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