操作系统课程设计实验报告模板.docx

上传人:b****6 文档编号:7954052 上传时间:2023-01-27 格式:DOCX 页数:20 大小:906.77KB
下载 相关 举报
操作系统课程设计实验报告模板.docx_第1页
第1页 / 共20页
操作系统课程设计实验报告模板.docx_第2页
第2页 / 共20页
操作系统课程设计实验报告模板.docx_第3页
第3页 / 共20页
操作系统课程设计实验报告模板.docx_第4页
第4页 / 共20页
操作系统课程设计实验报告模板.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

操作系统课程设计实验报告模板.docx

《操作系统课程设计实验报告模板.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计实验报告模板.docx(20页珍藏版)》请在冰豆网上搜索。

操作系统课程设计实验报告模板.docx

操作系统课程设计实验报告模板

 

操作系统课程设计

实验报告书

 

题目:

页面置换算法之先进先出

题目编号:

18

院系:

信息科学与技术学院

班级:

12级1班

小组成员:

组长:

张海洋

学号:

12051004

组员:

李奔

学号:

12051005

2014-12-31

目录

一、课程设计任务划分1

二、基本原理2

(一)页面置换算法定义

(二)所使用的算法 

(三)设计思想

三、基本思路3

(一)流程图

(二)变量

(三)所用函数

四、调试及实验结果4

五、个人体会5

一、课程设计任务划分

成员

具体分工

张海洋

设计项目流程

程序合并

实验报告书书写

李奔

程序调试

网上搜索程序资料

心得体会

二、基本原理

(题目所涉及课程内容,用到了那种算法,该算法的基本原理是什么?

500字以上,可加页,下同)

(一)页面置换算法定义

在地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断。

当发生缺页中断时操作系统必须在内存选择一个页面将其移出内 存,以便为即将调入的页面让出空间。

而用来选择淘汰哪一页的规则叫做页面置换算法。

  

(二)所使用的算法  

1)最佳置换算法(OPT):

将以后永不使用的或许是在最

长(未来)时间内不再被访问的页面换出。

2)先进先出算法(FIFO):

淘汰最先进入内存的页面,即

选择在内存中驻留时间最久的页面予以淘汰。

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

淘汰最近最久未被使用

的页面。

(三)设计思想

选择置换算法,先输入所有页面号,为系统分配物理块,依次进行置换:

OPT基本思想:

是用一维数组page[pSIZE]存储页面号序列,memery[mSIZE]是存储装入物理块中的页面。

数组next[mSIZE]记录物理块中对应页面的最后访问时间。

每当发生缺页时,就从物理块中找出最后访问时间最大的页面,调出该页,换入所缺的页面。

FIFO基本思想:

是用队列存储内存中的页面,队列的特点是先进先出,与该算法是一致的,所以每当发生缺页时,就从队头删除一页,而从队尾加入缺页。

或者借助辅助数组time[mSIZE]记录物理块中对应页面的进入时间,每次需要置换时换出进入时间最小的页面。

LRU基本思想:

是用一维数组page[pSIZE]存储页面号序列,memery[mSIZE]是存储装入物理块中的页面。

数组flag[10]标记页面的访问时间。

每当使用页面时,刷新访问时间。

发生缺页时,就从物理块中页面标记最小的一页,调出该页,换入所缺的页面。

三、基本思路

(1)流程图

(2)变量

 

/*全局变量*/

intmSIZE;/*物理块数*/

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

staticintmemery[10]={0};/*物理块中的页号*/

staticintpage[100]={0};/*页面号引用串*/

staticinttemp[100][10]={0};/*辅助数组*/

inttime[10]={0};/*记录进入物理块的时间*/

intnext[10]={0};/*记录下一次访问时间*/

intmax=0;/*记录换出页*/

intcount=0;/*记录置换次数*/

(3)所用函数

1./*置换算法函数*/

voidFIFO();/*先进先出页面置换算法*/

函数原型:

voidFIFO()

{

intmemery[10]={0};

inttime[10]={0};/*记录进入物理块的时间*/

inti,j,k,m;

intmax=0;/*记录换出页*/

intcount=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]

0:

1;

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

}

voidLRU();/*最近最久未使用置换算法*/

函数原型:

voidLRU()

{

intmemery[10]={0};

intflag[10]={0};/*记录页面的访问时间*/

inti,j,k,m;

intmax=0;/*记录换出页*/

intcount=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]

0:

1;

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

}

voidOPT();/*最佳置换算法*/

函数原型:

voidOPT()

{

intmemery[10]={0};

intnext[10]={0};/*记录下一次访问时间*/

inti,j,k,l,m;

intmax;/*记录换出页*/

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

}

else{

for(j=0;j

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

}

}

compute();

print(count);

}

 

2./*辅助函数*/

voiddesignBy();/*显示设计者信息*/

函数原型:

voiddesignBy()

{

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

printf("┃页面置换算法┃\n");

printf("┃班级:

┃\n");

printf("┃姓名:

同学┃\n");

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

}

voiddownload();/*载入数据*/

函数原型:

voiddownload()

{

inti;

system("color0D");

printf("╔════════════╗\n");

printf("║正在载入数据,请稍候!

!

!

║\n");

printf("╚════════════╝\n");

printf("Loading...\n");

printf("O");

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

printf("\b");

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

{

mDelay((pSIZE+mSIZE)/2);

printf(">");

}

printf("\nFinish.\n载入成功,按任意键进入置换算法选择界面:

>>>");

getchar();

}

voidmDelay(unsignedintDelay);/*设置延迟*/

函数原型:

voidmDelay(unsignedintDelay)

{

unsignedinti;

for(;Delay>0;Delay--)

{

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

{

printf("\b");

}

}

voidcompute();/*计算过程延迟*/

函数原型:

voidcompute()

{

inti;

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

for(i=1;i<20;i++)

{

mDelay(15);

if(i%4==0)

printf("\b\b\b\b\b\b\b\b\b\b\b\b");

else

printf("Θ");

}

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

for(i=0;i++<30;printf(""));

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

}

 

3./*主函数*/

voidmain()

 

四、调试及实验结果

第一组数据:

1.开始运行

2.按任意键进行初始化:

3.载入数据:

4.进入置换算法选择界面:

 

5.运算中延迟操作:

6.三种算法运行结果

 

 

7.退出算法

第二组数据:

1.开始运行

 

2.按任意键进行初始化:

3.载入数据:

 

4.进入置换算法选择界面:

5.运算中延迟操作:

6.三种算法运行结果

 

7.退出算法

五、个人体会

给出设计文档和调试编码的感受,或对原理知识的理解。

(100字以上)

由于时间有限,本次设计完成的并不是很完美,下面从以下几点来说明本次课程设计的个人体会:

1.本次课程设计中做的比较好的地方:

做的好的地方就是在于对题目意思的正确理解,以及在此基础上的模型设计。

最开始一看题目的时候感觉很迷茫,有点不知道如何着手,等静下心来仔细分析了程序,明确了目标,明确了思路,才对程序有了一个较为完整的实现。

2.做得不太好的地方,以及以后如何改正:

做得不太好的地方就是不能把自己所学的C知识和本次课程设计的相关知识很好的结合起来,以至于没有很好的表达出本次课程设计的细节。

在以后的过程中,我会运用本次课程设计中所学的知识,以及思考问题的方式和方法,争取能够发扬优点,尽量克服不细心,不严谨等缺点。

3.从本次设计中得到的收获:

通过本次课程设计,我学会了综合运用所学相关知识的能力,动手能力以及独立思考问题的能力。

下面具体的收一个边学程序是遇到的困难,首先就是如何把想法变为做法的问题,最开始一拿到题目,我就觉得无从下手,因为我的阅历,不知道如何把这样一个问题变成程序,变成能够让人一目了然的东西,于是,我就先写下了p,v操作的实现过程,因为这个对我来说简单一些,然后,在此基础之上,就好办了,结果最后用了2个函数就解决问题了,所以,我觉得有时候思考问题不要太死脑筋,换一个角度的话,也许会更好,说不定就能达到事半功倍的效果。

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

当前位置:首页 > 经管营销 > 经济市场

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

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