操作系统大作业含课程设计.docx

上传人:b****4 文档编号:1474873 上传时间:2022-10-22 格式:DOCX 页数:10 大小:167.09KB
下载 相关 举报
操作系统大作业含课程设计.docx_第1页
第1页 / 共10页
操作系统大作业含课程设计.docx_第2页
第2页 / 共10页
操作系统大作业含课程设计.docx_第3页
第3页 / 共10页
操作系统大作业含课程设计.docx_第4页
第4页 / 共10页
操作系统大作业含课程设计.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

操作系统大作业含课程设计.docx

《操作系统大作业含课程设计.docx》由会员分享,可在线阅读,更多相关《操作系统大作业含课程设计.docx(10页珍藏版)》请在冰豆网上搜索。

操作系统大作业含课程设计.docx

操作系统大作业含课程设计

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

一、题目:

页面置换算法模拟实验

二、目的

分别采用最佳(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附件形式提交。

最后需提交的内容包括:

算法算法思路及流程图、数据结构说明、源程序(关键代码需要注释说明)、运行结果截图、心得体会及总结。

大作业严禁抄袭。

发现抄袭一律以不及格论。

请大家严格按照大作业题目来编写程序,不要上交以前布置的大作业。

如果提交的大作业题目与本文档要求不符,成绩一律为不及格。

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

答:

一、思路

页面置换算法:

当CPU接收到缺页中断信号,中断处理程序先保存现场,分析中断原因,转入缺页中断处理程序。

该程序通过查找页表,得到该页所在外存的物理块号。

熟悉UNIX/LINUX的常用基本命令,练习并掌握UNIX提供的vi编辑器来编译C程序,学会利用gcc、gdb编译、调试C程序,学会如何把学到的知识用于解决实际问题,培养学生!

二、各模块的伪码算法

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

voidfifo()//先进先出算法

{

inti=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置换算法伪码算法

voidopt()//OPT置换算法

{

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

}

}

intfindo(intj)//查找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置换算法伪码算法

voidlru()//LRu置换算法

{

intu,j,i;

intk;

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

intl(intj)//查找要替换的位置

{

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、函数的调用关系图

Voidfifo()函数流程图:

Char find()函数流程图:

Void opt()流程图:

 

  int findo()流程图:

Void lru()流程图:

Int l()流程图:

4、测试

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

 

部分源程序代码:

#include"stdio.h"

charfind(intj);

intfindo(intj);

intl(intj);

intqueye;

doublequeyelu;

charz='%';

chara[4][20]={'7','0','1','2','0','3','0','4','2','3','0','3','2','1','2','0','1','7','0','1'};

//chara[][];

voidfifo()//先进先出算法

{

inti=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++)

体会与自我评价 

这次操作系统课程设计,让我们对操作系统有了更深的认识,首先操作系统是一管理电脑硬件与软件资源的程序,同时也是计算机系统内核与基石。

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

通常,把选择换成页面的算法称为页面置换算法。

 

 

最后,还非常感谢辛苦的操作系统老师,让我们对操作系统有了一定的了解,为这次课程设计奠定了良好的基础,课程设计给了我们这次总体运用自己能力的机会,我们坚信:

只要功夫深,铁杵磨成针。

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

当前位置:首页 > 工程科技 > 环境科学食品科学

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

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