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

时间:2019-05-12 03:48:39下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《页面置换算法模拟实验 操作系统大作业(含源文件)》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《页面置换算法模拟实验 操作系统大作业(含源文件)》。

第一篇:页面置换算法模拟实验 操作系统大作业(含源文件)

“计算机操作系统”课程设计大作业

页面置换算法模拟实验(含完整资料,可直接提交)

一、题目: 页面置换算法模拟实验

二、目的

分别采用最佳(Optimal)置换算法、先进先出(FIFO)页面置换算法和最近最少使用(LRU)置换算法对用户输入的页面号请求序列进行淘汰和置换,从而加深对页面置换算法的理解。

三、内容和要求

请用C/C++语言编一个页面置换算法模拟程序。用户通过键盘输入分配的物理内存总块数,再输入用户逻辑页面号请求序列,然后分别采用最佳(Optimal)置换算法、先进先出(FIFO)页面置换算法和最近最少使用(LRU)置换算法三种算法对页面请求序列进行转换,最后按照课本P150页图4-26的置换图格式输出每次页面请求后各物理块内存放的虚页号,并算出总的缺页率(缺页次数/总的请求次数)。最后三种页面置换算法的优缺点。

三种页面置换算法的思想可参考教材P149-P152页。

假设页面号请求序列为4、3、2、1、4、3、5、4、3、2、1、5,当分配给某进程的物理块数分别为3块和4块时,试用自己编写的模拟程序进行页面转换并输出置换图和缺页次数、缺页率。

四、提交内容

0 本大作业每个人必须单独完成。最后需提交的内容包括:源程序(关键代码需要注释说明)、可运行程序、运行结果、算法思路及流程图、心得体会。

大作业严禁抄袭。发现抄袭一律以不及格论。

请大家严格按照大作业题目来编写程序,不要上交以前布置的大作业。如果提交的大作业题目与本文档要求不符,成绩一律为及格。

目录

摘要.............................................................................................................2 正文.............................................................................................................2

1、设计思路..............................................................................................................3

2、各模块的伪码算法..............................................................................................6

3、函数的调用关系图..............................................................................................8

4、测试....................................................................................................................13 设计总结..................................................................................................15 参考文献..................................................................................................16 致 谢.......................................................................................................17 附录:部分源程序代码..........................................................................18

UNIX中,为了提高内存利用率,提供了内外存进程对换机制;内存空间的分配和回收均以页为单位进行;一个进程只需将其一部分(段或页)调入内存便可运行;还支持请求调页的存储管理方式。当进程在运行中需要访问某部分程序和数据时,发现其所在页面不在内存,就立即提出请求(向CPU发出缺页中断),由系统将其所需页面调入内存。这种页面调入方式叫请求调页,为实现请求调页,核心配置了四种数据结构:页表、页框号、访问位、修改位、有效位、保护位等。此设计为了了解UNIX的命令及使用格式,熟悉UNIX/LINUX的常用基本命令,练习并掌握UNIX提供的vi编辑器来编译C程序,学会利用gcc、gdb编译、调试C程序,学会如何把学到的知识用于解决实际问题,培养学生的能力。

关键字

UNIX

请求调页

数据结构

存储管理

编辑器

调试

C程序

一、设计思路

页面置换算法:当CPU接收到缺页中断信号,中断处理程序先保存现场,分析中断原因,转入缺页中断处理程序。该程序通过查找页表,得到该页所在外存的物理块号。如果此时内存未满,能容纳新页,则启动磁盘I/O将所缺之页调入内存,然后修改页表。如果内存已满,则须按某种置换算法从内存中选出一页准备换出,是否重新写盘由页表的修改位决定,然后将缺页调入,修改页表。利用修改后的页表,去形成所要访问数据的物理地址,再去访问内存数据。整个页面的调入过程对用户是透明的。此设计为了了解UNIX的命令及使用格式,熟悉UNIX/LINUX的常用基本命令,练习并掌握UNIX提供的vi编辑器来编译C程序,学会利用gcc、gdb编译、调试C程序,学会如何把学到的知识用于解决实际问题,培养学生的动手能力。

二、设计目的

1、用C语言实现页面置换算法。

2、了解内存分页管理策略

3、掌握调页策略

4、掌握一般常用的调度算法

5.选取调度算法中的典型算法,模拟实现。

三、设计任务

在Window98/2000 系统的TC2.0环境下运行程序;通过从一般常用的调页算法中选取典型算法程序,了解页面管理的相关细节,并用程序设计实现该算法实验。

四、设计内容与步骤

分页存储管理将一个进程的逻辑地址空间分成若干大小相等的片,称为页面或页。

五、调页策略

1)何时调入页面

如果进程的许多页是存放在外存的一个连续区域中,则一次调入若干个相邻的页,会比一次调入一页的效率更高效一些。但如果调入的一批页面中的大多数都未被访问,则又是低效的。可采用一种以预测为基础的预调页策略,将那些预计在不久之后便会被访问的页面,预先调入内存。如果预测较准确,那么,这 种策略显然是很有吸引力的。但目前预调页的成功率仅为50%。且这种策略主要用于进程的首次调入时,由程序员指出应该先调入哪些页。

2)请求调页策略

当进程在运行中需要访问某部分程序和数据时,若发现其所在的页面不在内存,便即提出请求,由OS将其所需页面调入内存。由请示调页策略所确定调入的页,是一定会被访问的,再加之请求调页策略比较易于实现,故在目前的虚拟存储器中,大多采用此策略。但这种策略每次仅调入一页,故须花费较大的系统开销,增加了磁盘I/O的启用频率。

3)从何处调入页面

在请求分页系统中的外存分为两部分:用于存放文件的文件区和用于存放对换页面的对换区。通常,由于对换区是采用连续分配方式,而事件是采用离散分配方式,故对换区的磁盘I/O速度比文件区的高。这样,每当发生缺页请求时,系统应从何处将缺页调入内存,可分成如下三种情况:

(1)系统拥有足够的对换区空间,这时可以全部从对换区调入 所需页面,以提高调页速度。为此,在进程运行前,便须将与该进程有关的文件,从文件区拷贝到对换区。

(2)系统缺少足够的对换区空间,这时凡是不会被修改的文件,都直接从文件区调入;而当换出这些页面时,由于它们未被修改而不必再将它们换出时,以后需要时,再从对换区调入。

(3)UNIX方式。由于与进程有关的文件都放在文件区,故凡是未运行过的页面,都从文件区调入。而对于曾经运行过但又被换出的页面,由于被放在对换区,因此在下次时,应从对换区调入。由于UNIX系统允许页面共享,因此,某进程所请求的页面有可能已被其它进程调入内存,此时也就无须再从对换区调入。

3页面调入过程

每当程序所要访问的页面未在内存时,便向CPU发出一缺页中断,中断处理程序首先保留CPU环境,分析中断原因后,转入缺页中断处理程序。该程序通过查找页表,得到该页在外在原物理 块后,如果此时内存能容纳新页,则启动磁盘I/O将所缺之页调入内存,然后修改页表。如果内存已满,则须先按照某种置换算法从内存中选出一页准备换出;如果该页未被修改过,可不必将该页写回磁盘;但如果此页已被修改,则必须将它写回磁盘,然后再把所缺的页调入内存,并修改页表中的相应表项,置其存在位“1”,并将此页表项写入快表中。在缺页调入内存后,利用修改后的页表,去形成所要访问数据的物理地址,再去访问内存数据。整个页面的调入过程对用户是透明的。

六、页面置换算法

在进程运行过程中,若其所要访问的页面不在内存而需把它们调入内存,但内存已无空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据,送磁盘的对换区中。但应将哪 个页面调出,须根据一定的算法来确定。通常,把选择换出页面的算法称为页面置换算法(Page_Replacement Algorithms)。

一个好的页面置换算法,应具有较低的页面更换频率。从理论上讲,应将那些以后不再会访问的页面换出,或将那些在较长时间内不会再访问的页面调出。

㈠常见置换算法

① 最佳置换算法(Optimal):

它是由Belady于1966年提出的一种理论上的算法。其所选择的被淘汰页面,将是以后永不使用的或许是在最长(未来)时间内不再被访问的页面。采用最佳置换算法,通常可保证获得最低的缺页率。但由于人目前还无法预知一个进程在内存的若干个页面中,哪一个页面是未来最长时间内不再被访问的,因而该算法是无法实现的,便可以利用此算法来评价其它算法。

② 先进先出(FIFO)页面置换算法:

这是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单只需把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。

③ LRU置换算法:

LRU(Least Recently Used)置换算法的描述

FIFO置换算法性能之所以较差,是因为它所依据的条件是各个页面调入内存的时间,而页面调入的先后并不能反映页面的使用情况。最近最久未使用(LRU)置换算法,是根据页面调入内存后的使用情况进行决策的。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU置换算法是选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t,,当须淘汰一个页面时,选择现有页面中其t值最大的,即最近最久未使用的页面予以淘汰。

七、各模块的伪码算法

(1)先进先出算法伪码算法

void fifo()//先进先出算法 { int i=2,m,j;queye=1;a[1][0]=a[0][0];for(j=1;j<20;j++){

if(i>3)i=1;

if(find(j)=='F')//调用查找函数

{

a[i][j]=a[0][j];

for(m=1;m<4;m++)

{

if(m!=i)a[m][j]=a[m][j-1];}

queye=queye+1;

i=i+1;

}

else

{

a[1][j]=a[1][j-1];

a[2][j]=a[2][j-1];

a[3][j]=a[3][j-1];

return('F');}(2)OPT置换算法伪码算法

void opt()//OPT置换算法 { int i,j,m,t;a[1][0]=a[0][0];for(j=1;j<3;j++){

for(i=1;i

{

if((i-j)==1)

a[i][j]=a[0][j];

else

a[i][j]=a[i][j-1];

} } int findo(int j)//查找OPT的函数 {

if(a[1][j-1]==a[0][m])x=m;

if(a[2][j-1]==a[0][m])y=m;

if(a[3][j-1]==a[0][m])z=m;} //max=x;t=1;if(y>x && y>z)t=2;if(z>x && z>y)t=3;return(t);}(3)LRu置换算法伪码算法

void lru()//LRu置换算法 { int u,j,i;int k;a[1][0]=a[0][0];//a[1][1]=a[0][0];for(j=1;j<3;j++){

for(i=1;i

{

if((i-j)==1)

a[i][j]=a[0][j];

else

a[i][j]=a[i][j-1];

} } queye=3;for(j=3;j<20;j++){

if(find(j)=='T')//调用查找函数

{

}

a[3][j]=a[0][j];

int l(int j)//查找要替换的位置 {

if(a[0][j]==a[1][j-1])return(1);if(a[0][j]==a[2][j-1])return(2);if(a[0][j]==a[3][j-1])return(3);}

3、函数的调用关系图

Void fifo()函数流程图:

Char find()函数流程图:

Void opt()流程图:

int findo()流程图:

Void lru()流程图:

Int l()流程图:

4、测试

请求页式存储管理中常用页面置换算法运行结果

设计总结

经过本次课程设计,完成题目“常用页面置换算法原理模拟实验”,熟悉了UNIX/LINUX的常用基本命令,理解并掌握了UNIX提供的vi编辑器来编译C程序,学会利用gcc、gdb编译、调试C程序。

做课程设计是为了对平时学习的理论知识与实际操作相结合,在理论和实践上进一步巩固已学基本理论及应用知识并加以综合提高,学会将知识应用于实际的方法,提高分析和解决问题的能力。在做课程设计的过程中,深深感觉到自身所学知识的有限。有些题目书本上没有提及,所以就没有去研究过,做的时候突然间觉得自己真的有点无知,虽然现在去看依然可以解决问题,但还是浪费了许多,这一点是必须在以后的学习中加以改进的地方,同时也要督促自己在学习的过程中不断的完善自我。在设计过程中的思考和讨论,对现有知识能够运用计算机来解决现实生活中的实际问题确立了信心,对模块化程序设计思想有了比较清晰的印象,为今后的程序设计奠定了一定的心理和技术上的准备。

这次课程设计加强了我对计算机操作系统的认识,对我个人而言是对所学课程内容掌握情况的一次自我验证。通过课程设计提高了我对所学知识的综合应用能力,全面检查并掌握所学的内容,培养独立思考,在分析问题、解决问题的过程中,更是获得一种成功的喜悦。

参考文献

1.汤子瀛,哲凤屏.《计算机操作系统》.西安电子科技大学学出版社.2.王清,李光明,《计算机操作系统》.冶金工业出版社.3.孙钟秀等,操作系统教程.高等教育出版社

4.曾明,Linux操作系统应用教程.陕西科学技术出版社.5.张丽芬,刘利雄.《操作系统实验教程》.清华大学出版社.6.孟静,操作系统教程--原理和实例分析.高等教育出版社 7.周长林,计算机操作系统教程.高等教育出版社 8.张尧学,计算机操作系统教程,清华大学出版社

9.任满杰,操作系统原理实用教程,电子工业出版社

致 谢

这次课程设计,我从“纸上谈兵”到可以自己动脑动手分析调试程序,收获不少。

首先要感谢有了这次实践的机会,给了自己一个舞台,同时也是对自身的检验。还有多亏了老师们从理论到上机亲自指导的辛苦教授,给予了我们最大帮助和全面指导,在这里,尤其感谢我的指导老师***老师、以及我的《操作系统》的授课老师***老师,你们不辞辛苦,在给很多学生指导的情况下还不厌其烦的给我们心指导,在这里,我衷心向你们致谢!最后还要感谢热心的同学们,在我陷入误区的时候,是他们热心的帮助使我摆脱困境。

最后衷心感谢所有给予我帮助和指导的老师和同学,没有他们的帮助我的程序也不会完成得这么顺利。

附录:部分源程序代码

#include “stdio.h” char find(int j);int findo(int j);int l(int j);int queye;double queyelu;char z='%';char a[4][20]={'7','0','1','2','0','3','0','4','2','3','0','3','2','1','2','0','1','7','0','1'};//char a[][];

void fifo()//先进先出算法 { int i=2,m,j;queye=1;a[1][0]=a[0][0];for(j=1;j<20;j++){

if(i>3)i=1;

if(find(j)=='F')//调用查找函数

{

a[i][j]=a[0][j];

for(m=1;m<4;m++)

{

if(m!=i)a[m][j]=a[m][j-1];}

queye=queye+1;

i=i+1;

}

else

{

a[1][j]=a[1][j-1];

a[2][j]=a[2][j-1];

a[3][j]=a[3][j-1];

} } for(i=0;i<4;i++)//输出序列

{

for(j=0;j<20;j++)。。。。。。。。。。。。。。。。。。。省略

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

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

姓名

学号

计算机

任课教师

指导教师

评阅教师

实验地点

综合楼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的确在优化方面做的比较理想。再且在考虑页框和页表号之间的问题用代码可以容易模拟,但是真是在物理内存块中是如何实现,那确实是很难以理解,需要真正理解到内存内部的知识才知道这两个算法是怎么实现的。

评阅教师特殊评语:

评阅教师:

期:

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

计算机工程学院

实验报告书

课程名:《

操作系统原理A

目:

虚拟存储器管理

页面置换算法模拟实验

级:

号:

名:

评语:

成绩:

指导教师:

批阅时间:

****年**月**日

一、实验目的与要求

1.目的:

请求页式虚存管理是常用的虚拟存储管理方案之一。通过请求页式虚存管理中对页面置换算法的模拟,有助于理解虚拟存储技术的特点,并加深对请求页式虚存管理的页面调度算法的理解。

2.要求:

本实验要求使用C语言编程模拟一个拥有若干个虚页的进程在给定的若干个实页中运行、并在缺页中断发生时分别使用FIFO和LRU算法进行页面置换的情形。其中虚页的个数可以事先给定(例如10个),对这些虚页访问的页地址流(其长度可以事先给定,例如20次虚页访问)可以由程序随机产生,也可以事先保存在文件中。要求程序运行时屏幕能显示出置换过程中的状态信息并输出访问结束时的页面命中率。程序应允许通过为该进程分配不同的实页数,来比较两种置换算法的稳定性。

二、实验说明

1.设计中虚页和实页的表示

本设计利用C语言的结构体来描述虚页和实页的结构。

pn

pfn

time

pn

pfn

next

虚页结构

实页结构

在虚页结构中,pn代表虚页号,因为共10个虚页,所以pn的取值范围是0—9。pfn代表实页号,当一虚页未装入实页时,此项值为-1;当该虚页已装入某一实页时,此项值为所装入的实页的实页号pfn。time项在FIFO算法中不使用,在LRU中用来存放对该虚页的最近访问时间。

在实页结构中中,pn代表虚页号,表示pn所代表的虚页目前正放在此实页中。pfn代表实页号,取值范围(0—n-1)由动态指派的实页数n所决定。next是一个指向实页结构体的指针,用于多个实页以链表形式组织起来,关于实页链表的组织详见下面第4点。

2.关于缺页次数的统计

为计算命中率,需要统计在20次的虚页访问中命中的次数。为此,程序应设置一个计数器count,来统计虚页命中发生的次数。每当所访问的虚页的pfn项值不为-1,表示此虚页已被装入某实页内,此虚页被命中,count加1。最终命中率=count/20*100%。

3.LRU算法中“最近最久未用”页面的确定

为了能找到“最近最久未用”的虚页面,程序中可引入一个时间计数器countime,每当要访问一个虚页面时,countime的值加1,然后将所要访问的虚页的time项值设置为增值后的当前countime值,表示该虚页的最后一次被访问时间。当LRU算法需要置换时,从所有已分配实页的虚页中找出time值为最小的虚页就是“最近最久未用”的虚页面,应该将它置换出去。

4.算法中实页的组织

因为能分配的实页数n是在程序运行时由用户动态指派的,所以应使用链表组织动态产生的多个实页。为了调度算法实现的方便,可以考虑引入free和busy两个链表:free链表用于组织未分配出去的实页,首指针为free_head,初始时n个实页都处于free链表中;busy链表用于组织已分配出去的实页,首指针为busy_head,尾指针为busy_tail,初始值都为null。当所要访问的一个虚页不在实页中时,将产生缺页中断。此时若free链表不为空,就取下链表首指针所指的实页,并分配给该虚页。若free链表为空,则说明n个实页已全部分配出去,此时应进行页面置换:对于FIFO算法要将busy_head

所指的实页从busy链表中取下,分配给该虚页,然后再将该实页插入到busy链表尾部;对于LRU算法则要从所有已分配实页的虚页中找出time值为最小的虚页,将该虚页从装载它的那个实页中置换出去,并在该实页中装入当前正要访问的虚页。

三、程序流程图

四、主要程序清单

#include

#include

/*全局变量*/

int

mSIZE;

/*物理块数*/

int

pSIZE;

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

static

int

memery[10]={0};

/*物理块中的页号*/

static

int

page[100]={0};

/*页面号引用串*/

static

int

temp[100][10]={0};

/*辅助数组*/

/*置换算法函数*/

void

FIFO();

void

LRU();

void

OPT();

/*辅助函数*/

void

print(unsigned

int

t);

void

designBy();

void

download();

void

mDelay(unsigned

int

Delay);

/*主函数*/

void

main()

{

int

i,k,code;

printf(“请输入物理块的个数(M<=10):“);

scanf(“%d“,&mSIZE);

printf(“请输入页面号引用串的个数(P<=100):“);

scanf(“%d“,&pSIZE);

puts(“请依次输入页面号引用串(连续输入,无需隔开):“);

for(i=0;i

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

download();

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:

OPT();

break;

case

4:

system(“cls“);

//system(“color

0A“);

exit(0);

default:

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

}

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

getchar();

}

while

(code!=4);

getchar();

}

/*载入数据*/

void

download()

{

printf(“\nFinish.\n载入成功!“);

}

/*设置延迟*/

void

mDelay(unsigned

int

Delay)

{

unsigned

int

i;

for(;Delay>0;Delay--)

{

for(i=0;i<124;i++)

{

printf(“

\b“);

}

}

}

/*显示设计者信息*/

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

compute()

{

int

i;

printf(“正在进行相关计算,请稍候“);

for(i=0;i++<30;printf(“\b“));

for(i=0;i++<30;printf(“

“));

for(i=0;i++<30;printf(“\b“));

}

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

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];

}

}

compute();

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

OPT()

{

int

memery[10]={0};

int

next[10]={0};

/*记录下一次访问时间*/

int

i,j,k,l,m;

int

max;

/*记录换出页*/

int

count=0;

/*记录置换次数*/

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

for(i=0;i

{

memery[i]=page[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++;

/*得到物理快中各页下一次访问时间*/

for(m=0;m

{

for(l=i+1;l

if(memery[m]==page[l])

break;

next[m]=l;

}

/*计算换出页*/

max=next[0]>=next[1]?0:1;

for(m=2;m

if(next[m]>next[max])

max=m;

/*下一次访问时间都为pSIZE,则置换物理块中第一个*/

memery[max]=page[i];

for(j=0;j

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

}

}

if(k==mSIZE)

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

{

count++;

/*得到物理快中各页下一次访问时间*/

for(m=0;m

{

for(l=i+1;l

if(memery[m]==page[l])

break;

next[m]=l;

}

/*计算换出页*/

max=next[0]>=next[1]?0:1;

for(m=2;m

if(next[m]>next[max])

max=m;

/*下一次访问时间都为pSIZE,则置换物理块中第一个*/

memery[max]=page[i];

for(j=0;j

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

}

}

五、程序运行结果

①FIFO

②LRU

六、实验体会

在做该次作业的时候,通过对课本相关内容的温习,以及对自己在网络上找到的一些资源的了解。我对操作系统中页面调度的算法有了很大程度的了解,加深了对课程上知识的理解,也懂得了如何在程序中将这些算法实现,在程序中基本上实现了所要求的算法以及相关的性能分析,基本上实现了课程的要求。

这次作业也暴露了自己在某些方面的不足之处,自己的语言功底有一定的不足,以及一开始对某个算法不够熟悉,将算法实现设计的比较复杂,此次自己的程序存在一些思想上的漏洞,反映出此次程序设计的要求有了一定的限制。

第四篇:计算机操作系统实验4页面置换算法

实验4 页面置换算法(2学时)

一、实验目的

通过实验加强对虚拟存储管理中页面置换算法的理解和掌握。

二、实验内容

编写程序实现虚拟存储管理中OPT,FIFO,LRU页面置换算法。

三、实验要求

1、任意给出一组页面访问顺序(如页面走向是1、2、5、7、5、7、1、4、3、5、6、4、3、2、1、5、2)。

2、分配给该作业一定的物理块(如3块、4块等)。

3、利用OPT,FIFO,LRU页面置换算法模拟页面置换过程并计算其缺页率。

4、每访问一个页面均需给出内存中的内容(内存中的页面号),若有淘汰还需给出淘汰的页面号。

5、通过给出特殊的页面访问顺序,分配不同的物理块,利用FIFO算法计算其缺页率,进一步理解Belady现象。

6、(附加)实现CLOCK置换算法,修改位可在确定页面号时直接任意给出。

程序代码(java)

package wcm4;

import java.util.LinkedList;import java.util.Scanner;

public class Test {

/**

* @param args

*/ LinkedList ll=new LinkedList();int a;int leng;int[] all={1,2,5,7,5,7,1,4,3,5,6,4,3,2,1,5,2};//int[] free=new int[all.length];

Object o=new Integer(a);public static void main(String[] args){

public void begin(){ System.out.println(“请选择测试类型:”);System.out.println(“1 OPT;2 FiFO;3 LRU;4 CLOCK;5退出”);

} public void need(){ System.out.println(“请输入分配给该作业的物理块数:”);Scanner sc=new Scanner(System.in);leng=sc.nextInt();Scanner sc=new Scanner(System.in);int choose=sc.nextInt();while(choose!=5){

} switch(choose){ case 1:this.opt();break;case 2:this.fifo();break;case 3:this.lru();break;case 4:this.clock();break;} System.out.println(“请选择测试类型:”);System.out.println(“1 OPT;2 FiFO;3 LRU;4 CLOCK;5退出”);sc=new Scanner(System.in);choose=sc.nextInt();// TODO Auto-generated method stub Test t=new Test();t.begin();

}

}

public void fifo(){ ll=new LinkedList();this.need();

int a=0;for(int i=0;i

o=all[i];if(!ll.contains(o)){

} if(ll.size()

} ll.add(o);o=ll.poll();a++;else{ o=null;} this.print();} System.out.println(“FIFO的缺页率为:”);System.out.println(a);System.out.println(“——”);System.out.println(all.length);

} public void opt(){//最佳置换算法

//leng=0;ll=new LinkedList();this.need();int a=0;//int temp=0;//int[] b=new int[leng];

for(int i=0;i

int[] b=new int[leng];o=all[i];if(!ll.contains(o)){ if(ll.size()

ll.add(o);

}

o=null;} else{ for(int j=i;j

Object o1=new Integer(all[j]);

}

for(int k=0;k

}

if(ll.get(k).equals(o1)){

}

if(b[k]==0){

b[k]=j;//待替换的页在以后第一次出现的位置

} } if(b[leng-1]==0){

o=ll.set(leng-1, o);a++;} else{ int temp=0;

}

for(int m=0;m

if(b[m]==0){ temp=m;break;}

else if(b[m]>b[temp]){ }

temp=m;

}

o=ll.set(temp, o);//替换以后离得最远的 a++;} else{ } o=null;this.print();} System.out.println(“OPT的缺页率为:”);System.out.println(a);System.out.println(“——”);System.out.println(all.length);

public void lru(){//最近最久未使用

}

public void clock(){//简单clock

ll=new LinkedList();this.need();int a=0;int[] b=new int[leng];for(int i=0;i

o=all[i];if(!ll.contains(o)){

if(ll.size()

o=all[i];if(!ll.contains(o)){

if(ll.size()

} ll.add(o);o=ll.poll();a++;} else{ ll.add(o);ll.remove(o);o=null;} this.print();} System.out.println(“OPT的缺页率为:”);System.out.println(a);System.out.println(“——”);System.out.println(all.length);

}

} else{

for(int j=0;j<=ll.size();j++){

if(b[j%ll.size()]==0){

}

}

}

else{ int temp1=j%ll.size();

}

o=ll.set(temp1, o);

b[temp1]=0;//改变该位的标记位 break;

b[j%ll.size()]=1;a++;} else{ int temp=ll.indexOf(o);//找到该位

b[temp]=0;o=null;} this.print();System.out.println(“标记位为:”);for(int k=0;k

public void print(){ Object[] op=ll.toArray();for(int i=0;i

”);System.out.println(o);//System.out.println();System.out.print(op[i]);} }

第五篇:页面置换算法模拟

“计算机操作系统”课程设计大作业

一、题目: 页面置换算法模拟实验

二、目的

分别采用最佳(Optimal)置换算法、先进先出(FIFO)页面置换算法和最近最少使用(LRU)置换算法对用户输入的页面号请求序列进行淘汰和置换,从而加深对页面置换算法的理解。

三、内容和要求

请用C/C++语言编一个页面置换算法模拟程序。用户通过键盘输入分配的物理内存总块数,再输入用户逻辑页面号请求序列,然后分别采用最佳(Optimal)置换算法、先进先出(FIFO)页面置换算法和最近最少使用(LRU)置换算法三种算法对页面请求序列进行转换,最后按照课本P150页图4-26的置换图格式输出每次页面请求后各物理块内存放的虚页号,并算出每种算法的缺页次数。最后评价三种页面置换算法的优缺点。

三种页面置换算法的思想可参考教材P149-P152页。

假设页面号请求序列为4、3、2、1、4、3、5、4、3、2、1、5,当分配给某进程的物理块数分别为3块和4块时,试用自己编写的模拟程序进行页面转换并输出置换图和缺页次数。

四、提交内容 本大作业每个人必须单独完成,大作业以WORD附件形式提交。最后需提交的内容包括:算法算法思路及流程图、数据结构说明、源程序(关键代码需要注释说明)、运行结果截图、心得体会及总结。

大作业严禁抄袭。发现抄袭一律以不及格论。

请大家严格按照大作业题目来编写程序,不要上交以前布置的大作业。如果提交的大作业题目与本文档要求不符,成绩一律为不及格。

请大家按时在网院网上系统里提交大作业,过了规定时间将无法再补交大作业。

页面置换算法模拟实验

算法算法思路

模拟FIFOOPTLRU这3种页面置换算法,先分配所需的内存空间,在根据已知的序列,分别根据不同的页面算法去访问已知序列,得出不同内存空间的置换算法的缺页数量。总体流程图

开始输入内存数执行页面置换FIFOLRUOPT显示结果结束

数据结构说明

源程序(关键代码需要注释说明)FIFO关键源码

LRU关键源码

OPT关键源码

程序源码

#include using namespace std;#define N 12 //默认序列12 #define M 4 // 默认开辟4 内存空间 struct page{ int pno;// 定义页号

int bno;//定义块号

int time;// 定义最近使用

int status;//定义命中状态

int order;//定义优先级 };

int list[12]={4,3,2,1,4,2,5,2,3,2,1,5};// 已知序列

// 输出方法

void output(int *a ,int n){ for(int i=0;i

cout<<*a<<'t';

a++;} cout<<'n';}

void fifo(int *list,int mem_num){

page p[N];// 定义记录数组

int flag;int mem[M];// 定义内存

int index =0;// 默认下标

int lack=0;// 初始化内存

for(int i=0;i

mem[i]=0;} // 遍历序列

for(i=0;i

flag=0;// 设置默认命中 0

for(int j=0;j

if(list[i]==mem[j]){ // 检测序列与已知内存值,命中返回flag

flag=1;

break;

}

}

if(flag==1){ // 判断是否命中,则对 p 赋值

p[i].bno = j+1;

p[i].pno = list[i];

p[i].status =1;

}else{

p[i].pno = list[i];

p[i].status = 0;

mem[index] = list[i];

p[i].bno = index+1;// 赋予 页号

index =(index+1)%mem_num;// 每次取余

lack++;

} }

cout<<“FIFO算法:n”;cout<<“---**n”;cout<<“缺页次数:”<<'t'<

cout<<“-----**n”;cout<<“序列号n”;

cout<<“-----**n”;for(i=0;i

cout<<“-----**n”;} for(i=mem_num;icout<<“-----**n”;}

}

struct mem{ int order;//内存优先级 主要用于识别是否不常用

int pno;// 内存页号

int time;// 记录是否最近使用 };

void lru(int *list,int mem_num){ page p[N];// 定义记录数组

int flag;mem m[M];// 定义内存

int index =0;// 默认下标

int lack=0;int temp;int max=0;// 内存赋值

for(int i=0;i

m[i].pno=0;

//默认初始优先级 0

m[i].order = 0;} for(i=0;i

flag=0;

for(int j=0;j

if(list[i]==m[j].pno){

flag=1;

index=j;

//m[j].order++;

p[i].order =m[j].order;

break;

}

}

if(flag==1){ //命中后,p[i].bno = index+1;

p[i].pno = list[i];

p[i].status = 1;

p[i].order--;

temp = p[i].order;

for(j=0;j

if(p[j].order

temp=p[j].order;

index = p[j].bno;

}

}

}else{

p[i].status=0;

p[i].pno = list[i];

m[index].pno = list[i];

m[index].order = p[i].order;

p[i].bno = index+1;

for(j=0;j

if(m[j].order>max){

index = j;

}

}

index =(index+1)%mem_num;// 每次取余有效的下标

//max++;

lack++;

} } cout<<“LRU算法:n”;cout<<“---**n”;cout<<“缺页次数:”<<'t'<

cout<<“-----**n”;cout<<“序列号n”;

cout<<“-----**n”;for(i=0;i

cout<<“-----**n”;} for(i=mem_num;ivoid opt(int *list,int mem_num){ page p[N];//定义页面

mem m[M];int flag=0;int index = 0;//下标

int max = N;int lack=0;for(int i=0;i

m[i].pno=0;

m[i].time = 0;//设置内存使用频率

}

for(i=0;i

flag=0;

for(int j=0;j

if(list[i]==m[j].pno){

flag=1;

index = j;

break;

}

}

if(flag==1){

p[i].status =1;

p[i].bno = index+1;

p[i].pno = list[i];

for(j=0;j

for(int g=i;g

if(m[j].pno==list[g]){

m[j].time = N-g;//获取到 最近使用

p[i].time = m[j].time;

index = j;

}

}

}

}else{

p[i].status =0;

p[i].pno = list[i];

m[index].pno = list[i];

m[index].time = N;//设置默认不使用

p[i].bno =index+1;

for(j=0;j

if(m[j].time>max){

index = j;

}

}

index =(index+1)%mem_num;

lack++;

}

} cout<<“OPT算法:n”;cout<<“---**n”;cout<<“缺页次数:”<<'t'<

cout<<“-----**n”;cout<<“序列号n”;

cout<<“-----**n”;for(i=0;i

cout<<“-----**n”;} for(i=mem_num;icout<<“-----**n”;} }

void main(){ int m;cout << “===========================n”;cout << “请输入内存大小(3/4)n”;cin >> m;cout << “===========================n”;opt(list,m);fifo(list,m);lru(list,m);

}

运行结果截图

FIFO、LRU、OPT运行截图(开辟3个内存空间):

FIFO、LRU、OPT运行截图(开辟4个内存空间):

心得体会及总结:

在开始做题目的时候,需要了解什么是FIOFOLRUOPT这3个页面置换的知识点,同时参考了网络上许多实现过程技巧,并在在纸上面简单画出页面如何记录如何与内存置换,这样子比较方便写出算法。由于这次设计的时间比较仓促,其中不免会有些纰漏,比如在程序的实现上还不够严谨,出错处理不够完善等多方面问题,这些都有进一步改善。同时,在这次编写3个页面算法的过程中,我学到了很多东西,无论在理论上还是实践中,都得到不少的提高,这对以后的工作中会有一定的帮助。

下载页面置换算法模拟实验 操作系统大作业(含源文件)(合集五篇)word格式文档
下载页面置换算法模拟实验 操作系统大作业(含源文件)(合集五篇).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


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

相关范文推荐

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

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

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

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

    实验5 页面置换算法

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

    虚拟内存页面置换算法实验报告[合集五篇]

    软件学院上机实验报告 课程名称:操作系统原理实验项目:虚拟内存页面置换算法实验室:地狱 018姓名 : 死神学号:专业班级 : 实验时间:2015/12 / 13 实验成绩 评阅教师一、实验目得及......

    页面置换算法模拟,实验报告[共5篇]

    中北大学软件学院 实 验 报 告 专业 软件工程 课程名称 计算机操作系统学号 姓名辅导教师 张静 成绩 实验日期 2015、11、20 实验时间1 实验名称 :实验四页面置换算法模拟 2、......

    页面替换算法实验报告

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

    操作系统实验报告(clock算法)

    实验四 页面置换算法 一、实验目的 本实验主要对操作系统中请求分页式内存管理及其应用的一些关键算法进行模拟。学生通过设计与实现Clock算法,能够加强对相应理论的理解,并对......

    操作系统银行家算法实验报告

    实验四死锁 一、 实验目的 当系统的总资源数m小于或等于所有进程对对资源的最大需求时,就可能产生 死锁。死锁会引起计算机系统的瘫痪。银行家算法是在实现资源分配时避免......