操作系统 七次实验报告 常用页面置换算法模拟实验

2020-10-09 00:40:02下载本文作者:会员上传
简介:写写帮文库小编为你整理了这篇《操作系统 七次实验报告 常用页面置换算法模拟实验》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《操作系统 七次实验报告 常用页面置换算法模拟实验》。

操作系统课程第七次实验报告

姓名

学号

计算机

任课教师

指导教师

评阅教师

实验地点

综合楼B102

实验时间

2012-9-26

实验课表现

出勤和个人表现Q1(15+15(组长评分)=30分)

得分:

实验

总分

(Q1+Q2+Q3+Q4)

实验完成情况Q2(45分(组长与教师评分的加权平均))

得分:

实验编号与实验名称:

实验七、常用页面置换算法模拟实验

实验目的:

通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的特点,掌握虚拟存储请求页式存储管理中几种基本页面置换算法的基本思想和实现过程,并比较它们的效率。

实验内容及要求(详见实验讲义与实验指导书):

要求:

1)要求用你熟悉的程序设计语言编写和调试一个页面置换模拟程序;要求在主函数中测试。

2)实验报告中必须包括:设计思想、数据定义(包括详细说明)、处理流程(详细算法描述和算法流程图)、源代码、运行结果、体会等部分。

3)必须模拟本实验内容中提到的算法中的至少2种页面置换算法。

4)

比较不同页面置换算法的效率

内容:编写一个程序,使用以下页面置换算法中的某2种分别模拟一个分页系统,并统计同一个页面访问序列情况下不同页面置换算法引发的缺页中断次数。

1、第二次机会算法(Second

Chance)

2、最近最少使用算法(Least

Recently

Used,LRU)

3、最不常用算法(Not

Frequently

Used,NFU)

4、最近未使用算法(Not

Recently

Used,NRU)

5、时钟页面置换算法

6、老化算法(aging)

页框的数量固定为4,虚拟页面数为8。实验输入为访问页面序列,比如0,1,3,2,7,1

实验用到的软件(:)

DevC++,Visio

实验内容及关键步骤(代码)Q3(15分)

得分:

流程图:输入页面访问序列

取访问的页号

查页表

是否缺页?

置缺页标志flag为’*’

按算法不同淘汰一页面

调入所访问的页面

FIFO算法流程图

LRU算法流程图:

函数关系解释图:

实现结果:

图1

图2

代码:

#include

#include

#define

MEMORY_SIZE

/*物理块数*/

#define

PROESS_SIZE

/*页面号引用串个数*/#include

#include

/*全局变量*/

int

mSIZE=4;

int

pSIZE=8;

static

int

memery[4]={0};

/*物理块中的页号*/

static

int

page[8]={0};

/*页面号引用串*/

static

int

temp[8][4]={0};

/*辅助数组*/

/*置换算法函数*/

void

FIFO();

void

LRU();

void

OPT();

void

designBy();

/*辅助函数*/

void

print(unsigned

int

t);

/*主函数*/

int

main()

{

int

i,k,code;

designBy();

system(“color

0A“);

puts(“请依次输入页面号(8个):“);

for(i=0;i

scanf(“%1d“,&page[i]);

system(“cls“);

system(“color

0E“);

do{

puts(“输入的页面号引用串为:“);

for(k=0;k<=(pSIZE-1)/20;k++)

{

for(i=20*k;(i

{

if(((i+1)%20==0)||(((i+1)%20)&&(i==pSIZE-1)))

printf(“%d\n“,page[i]);

else

printf(“%d

“,page[i]);

}

}

printf(“*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*\n“);

printf(“*

请选择页面置换算法:\t\t\t

*\n“);

printf(“*

-----------------------------------------

*\n“);

printf(“*

1.先进先出(FIFO)

2.最近最久未使用(LRU)

*\n“);

printf(“*

3.退出

*\n“);

printf(“*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*\n“);

printf(“请选择操作:[

]\b\b“);

scanf(“%d“,&code);

switch(code)

{

case

1:

FIFO();

break;

case

2:

LRU();

break;

case

3:

system(“cls“);

system(“color

0A“);

exit(0);

default:

printf(“输入错误,请重新输入:“);

}

printf(“按任意键重新选择置换算法:>>>“);

getch();

system(“cls“);

}while

(code!=3);

getch();

}

void

print(unsigned

int

t)

{

int

i,j,k,l;

int

flag;

for(k=0;k<=(pSIZE-1)/20;k++)

{

for(i=20*k;(i

{

if(((i+1)%20==0)||(((i+1)%20)&&(i==pSIZE-1)))

printf(“%d\n“,page[i]);

else

printf(“%d

“,page[i]);

}

for(j=0;j

{

for(i=20*k;(i{

if(i>=j)

printf(“

|%d|“,temp[i][j]);

else

printf(“

|

|“);

}

for(i=mSIZE+20*k;(i

{

for(flag=0,l=0;l

if(temp[i][l]==temp[i-1][l])

flag++;

if(flag==mSIZE)/*页面在物理块中*/

printf(“

“);

else

printf(“

|%d|“,temp[i][j]);

}

/*每行显示20个*/

if(i%20==0)

continue;

printf(“\n“);

}

}

printf(“----------------------------------------\n“);

printf(“缺页次数:%d\t\t“,t+mSIZE);

printf(“缺页率:%d/%d\n“,t+mSIZE,pSIZE);

printf(“置换次数:%d\t\t“,t);

printf(“访问命中率:%d%%\n“,(pSIZE-(t+mSIZE))*100/pSIZE);

printf(“----------------------------------------\n“);

}

/*先进先出页面置换算法*/

void

FIFO()

{

int

memery[10]={0};

int

time[10]={0};

/*记录进入物理块的时间*/

int

i,j,k,m;

int

max=0;

/*记录换出页*/

int

count=0;

/*记录置换次数*/

/*前mSIZE个数直接放入*/

for(i=0;i

{

memery[i]=page[i];

time[i]=i;

for(j=0;j

temp[i][j]=memery[j];

}

for(i=mSIZE;i

{

/*判断新页面号是否在物理块中*/

for(j=0,k=0;j

{

if(memery[j]!=page[i])

k++;

}

if(k==mSIZE)

/*如果不在物理块中*/

{

count++;

/*计算换出页*/

max=time[0]

for(m=2;m

if(time[m]

max=m;

memery[max]=page[i];

time[max]=i;

/*记录该页进入物理块的时间*/

for(j=0;j

temp[i][j]=memery[j];

}

else

{

for(j=0;j

temp[i][j]=memery[j];

}

}

print(count);

}

/*最近最久未使用置换算法*/

void

LRU()

{

int

memery[10]={0};

int

flag[10]={0};

/*记录页面的访问时间*/

int

i,j,k,m;

int

max=0;

/*记录换出页*/

int

count=0;

/*记录置换次数*/

/*前mSIZE个数直接放入*/

for(i=0;i

{

memery[i]=page[i];

flag[i]=i;

for(j=0;j

temp[i][j]=memery[j];

}

for(i=mSIZE;i

{

/*判断新页面号是否在物理块中*/

for(j=0,k=0;j

{

if(memery[j]!=page[i])

k++;

else

flag[j]=i;

/*刷新该页的访问时间*/

}

if(k==mSIZE)

/*如果不在物理块中*/

{

count++;

/*计算换出页*/

max=flag[0]

for(m=2;m

if(flag[m]

max=m;

memery[max]=page[i];

flag[max]=i;

/*记录该页的访问时间*/

for(j=0;j

temp[i][j]=memery[j];

}

else

{

for(j=0;j

temp[i][j]=memery[j];

}

}

//

compute();

print(count);

}

/*显示设计者信息*/

void

designBy()

{

printf(“┏━━━━━━━━━━━━━━━━━━━━━━━━━┓\n“);

printf(“┃㊣

实验七:页面置换算法

㊣┃\n“);

printf(“┃

学号:1001010042

┃\n“);

printf(“┃

姓名:黄浩全

4.9.9.0>┃\n“);

printf(“┣━━━━━━━━━━━━━━━━━━━━━━━━━┫\n“);

}

实验过程中遇到的问题解决办法与实验体会Q4(需手写,10分)

得分:

1、在FIFO算法可以很容易用数组实现,而LRU算法可以用数组实现,不过用结构体会更明显简单。结构体成员变量可以记录页号进入的时间,和最近使用的记录。相对比数组更容易理解和实现。

2:首先,FIFO(先进先出)算法和LRU(最近未使用算法)两者之间,FIFO算法明显会比LRU容易理解,而且比LRU算法较容易实现,但在性能方面,LRU的确在优化方面做的比较理想。再且在考虑页框和页表号之间的问题用代码可以容易模拟,但是真是在物理内存块中是如何实现,那确实是很难以理解,需要真正理解到内存内部的知识才知道这两个算法是怎么实现的。

评阅教师特殊评语:

评阅教师:

期:

下载操作系统 七次实验报告 常用页面置换算法模拟实验word格式文档
下载操作系统 七次实验报告 常用页面置换算法模拟实验.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    计算机操作系统实验三页面置换算法模拟实验

    计算机工程学院实验报告书课程名:《操作系统原理A》题目:虚拟存储器管理页面置换算法模拟实验班级:学号:姓名:评语:成绩:指导教师:批阅时间:年月日一、实验目的与要求1.目的:请求页式......

    页面置换算法实验报告(精选)

    《操作系统--页面置换算法》 实验报告 姓名: 范学升学号:1001050903 班级:电科10-1班专业:电子信息科学与技术 一、实验目的 1.通过模拟实现几种基本页面置换的算法,了解虚拟存储......

    页面置换算法实验报告(五篇模版)

    计算机体系结构 实验报告 班级:计科姓名:张华敏学号:0902班0909090814 FIFU算法 一, 实验内容: 编写一段程序来模拟页面置换算法中的FIFU算法的实现 二, 算法设计: 设置一个产生......

    页面置换算法模拟实验 操作系统大作业(含源文件)(合集五篇)

    “计算机操作系统”课程设计大作业 页面置换算法模拟实验 (含完整资料,可直接提交) 一、题目: 页面置换算法模拟实验 二、目的 分别采用最佳(Optimal)置换算法、先进先出(FI......

    计算机操作系统实验4页面置换算法

    实验4 页面置换算法(2学时) 一、实验目的 通过实验加强对虚拟存储管理中页面置换算法的理解和掌握。 二、实验内容 编写程序实现虚拟存储管理中OPT,FIFO,LRU页面置换算法。 三......

    页面置换算法模拟

    “计算机操作系统”课程设计大作业 一、题目: 页面置换算法模拟实验 二、目的 分别采用最佳(Optimal)置换算法、先进先出(FIFO)页面置换算法和最近最少使用(LRU)置换算法对......

    页面替换算法实验报告

    操作系统页面替换算法实验报告 姓名: 沈慧 班级: 计091 学号: 0913022006 页面替换算法 一.目的和要求 (一)目的 存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常......

    实验5 页面置换算法

    实验5 页面置换算法 一、实验题目:页面置换算法(请求分页) 二、实验目的: 进一步理解父子进程之间的关系。 1) 理解内存页面调度的机理。 2) 掌握页面置换算法的实现方法。 3) 通......