模拟页面置换算法操作系统课程设计.docx

上传人:b****3 文档编号:3511886 上传时间:2022-11-23 格式:DOCX 页数:8 大小:66.25KB
下载 相关 举报
模拟页面置换算法操作系统课程设计.docx_第1页
第1页 / 共8页
模拟页面置换算法操作系统课程设计.docx_第2页
第2页 / 共8页
模拟页面置换算法操作系统课程设计.docx_第3页
第3页 / 共8页
模拟页面置换算法操作系统课程设计.docx_第4页
第4页 / 共8页
模拟页面置换算法操作系统课程设计.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

模拟页面置换算法操作系统课程设计.docx

《模拟页面置换算法操作系统课程设计.docx》由会员分享,可在线阅读,更多相关《模拟页面置换算法操作系统课程设计.docx(8页珍藏版)》请在冰豆网上搜索。

模拟页面置换算法操作系统课程设计.docx

模拟页面置换算法操作系统课程设计

 

安徽大学江淮学院

《操作系统课程设计报告》

专业:

网络工程

班级:

网络工程班

姓名:

夏晨

指导教师:

江东

学号:

JW104031

二零一二年六月十五日

 

目录

 

1.课程设计目的……………………………………………………2

2.课程设计题目描述和要求………………………………………3

3.课程设计内容……………………………………………………3

3.1页面置换原理描述………………………………………………3

3.2模拟页面置换算法的代码……………………………………6

4.课程设计实验总结………………………………………………8

5.参考文献…………………………………………………………9

 

Clock页面置换算法

1.课程设计目的

本实验主要对操作系统中应用的一些关键算法进行模拟。

学生通过设计与实现相关算法,能够加强对相应理论的理解,并对了解操作系统内部的基本处理原理与过程也有很多益处。

2.课程设计题目描述和要求

基本要求:

描述Clock算法的基本原理、必要的数据结构、算法执行流程图、编码实现。

1)初始化:

输入作业可占用的总页框数,初始化置空。

2)输入请求序列:

输入一个作业页号访问请求序列,依次占用相应页框,直至全部占用;

3)Clock算法:

当页框全部占用后,对于后续新的页号访问请求,执行Clock算法,淘汰1个页面后装入新的页号。

4)显示当前分配淘汰序列:

显示淘汰的页号序列。

 

3.课程设计内容

3.1页面置换原理描述

在采用请求分页机制的操作系统中,当运行一个程序的时候,若要访问的页面不在内存中而需要把它们调入内存,但此时内存已无空闲空间,为了保证该进程能正常运行,需选择内存中暂时不用的页面调出到磁盘交换区。

选择调出哪个页面,由页面算法决定。

页面置换算法的好坏,直接影响系统的性能,所以一个好的页面置换算法,应尽可能选择调出较长时间内不会再访问的页面,以保证较低的缺页率。

改进型的Clock算法的思想:

在将一个页面换出时,如果该页已被修改过,便须将它重新写到磁盘上;但如果该页未被修改过,则不必将它拷回磁盘。

同时满足这两条件的页面作为首先淘汰的页。

由访问位A和修改位M可以组合成下面四种类型的页面:

1类(A=0,M=0):

表示该页最近既未被访问、又未被修改,是最佳淘汰页。

2类(A=0,M=1):

表示该页最近未被访问,但已被修改,并不是很好的淘汰页。

3类(A=1,M=0):

最近已被访问,但未被修改,该页有可能再被访问。

4类(A=1,M=1):

最近已被访问且被修改,该页有可能再被访问。

在内存中的每个页必定是这四类页面之一,在进行页面置换时,可采用与简单Clock算法相类似的算法,其差别在于须同时检查访问位和修改位,以确定该页是四类页面中的哪一种。

此算法称为改进型Clock算法。

其执行过程可分成以下三步:

(1)从指针所指示的当前位置开始,扫描循环队列,寻找A=0且M=0的第一类页面,将所遇到的第一个页面作为所选中的淘汰页。

在第一次扫描期间不改变访问位A。

(2)如果第一步失败,即查找一周后未遇到第一类页面,则开始第二轮扫描,寻找A=0且M=1的第二类页面,将所遇到的第一个这类页面作为淘汰页。

在第二轮扫描期间,将所有经过的页面的访问位置0。

(3)如果第二步也失败,即未找到第二类页面,则将指针返回到开始的位置,并将所有的访问位复0。

然后,重复第一步,如果仍失败,必要时再重复第二步,此时就一定能够找到被淘汰的页。

 

3.2流程图实现

 

3.2模拟页面置换算法的代码

(1)定义页面表的数据结构,它包括页号(info),访问位(A),修改标志(M)和指针4个属性。

代码如下:

templateclassNode//结点类模板,不同数据类型,编译时生成不同的类

{public:

Tinfo;//定义三个变量

intA;//访问页变量,引用位的值

intM;//修改页变量,引用位的值

Node*link;//定义类的基地址

};

(2)通过界面接收的页面数(K),在主程序中先对K个页面通过调用方法Insertrear(Tdata)进行初始化,代码如下:

while

(1)

{if(n

{cout<<"请输入要访问的页面号:

"<

cin>>num;

cout<

www->Insertrear(num);

n++;

}

}

(3)初始化页面之后会提示是否对内存中存在的页面进行修改,选择Y,就会调用方法change(),并对你选择的页面的修改标志(M)进行修改,把它改为1(说明该页面已被修改过了)。

选择N,就会提示你“请输入访问的页面号”,当你输入一个页面号:

a、通过调用方法find0(Tdata)判断你输入的页面号是否跟内存中存在的页面号是否相同,如果相同,通过调用方法tihuan(Node*p,Tdata)来进行置换页面。

代码如下:

find0(Tdata)

{Node*tempb;

tempb=head->link;

while(tempb!

=head)

{if(tempb->info==data)

returntempb;

tempb=tempb->link;

}

returnNULL;

}

b、如果不是相同的两个页面,通过调用find1(Tdata)来寻找内存中是否存在访问位为0,修改标志为0的页号,如果找到了,通过调用方法tihuan(Node*p,Tdata)来进行置换页面。

如果没有找到就调用find2(Tdata)来进行第二次扫描,并把扫描过的页面的访问为改为1。

如果在内存中找到访问为为0,修改标志为1的页号,通过调用方法tihuan(Node*p,Tdata)来进行置换页面,否则,继续循环find1(Tdata)的查找直到置换为止。

代码如下:

第一次扫描:

find1(Tdata)

{

Node*tempb;

tempb=head->link;

while(tempb!

=head)

{

if(tempb->A==0&&tempb->M==0)

returntempb;

tempb=tempb->link;

}

returnNULL;

}

第二次扫描:

find2(Tdata)

{

Node*tempb;

tempb=head->link;

while(tempb!

=head)

{

if(tempb->A==0&&tempb->M==1)

returntempb;

tempb->A=0;

tempb=tempb->link;

}

returnNULL;

}

找到内存中存在访问位为0,修改标志为0的页号,如下:

页号访问位修改标志

210

311

110

找到内存中存在访问为0,修改标志为1的页号,如下:

页号访问位修改标志

501

711

1411

请输入要访问的页面号

12

找到内存访问位为0,修改位为1的页号,修改后:

页号访问位修改标志

1210

711

1411

 

四、实验总结

通过这几周的课程设计,加深了对操作系统的认识,了解了操作系统中各种资源分配算法的实现,特别是对虚拟存储,页面置换有了深入的了解,并能够用高级语言进行模拟演示。

在这短短的几周时间里,通过浏览、阅读有关的资料,学到了很多东西,同时也发现仅仅书本的知识是远远不够的,需要把知识运用到实践中去,能力才能得到提高。

不仅提高对操作系统的了解,这次的课程设计也使自己的C编程能力加强了不少。

一分耕耘,一分收获,这次的课程设计让我受益匪浅。

虽然自己所做的很少也不够完善,但毕竟也是努力的结果。

另外,使我体会最深的是:

任何一门知识的掌握,仅靠学习理论知识是远远不够的,要与实际动手操作相结合才能达到功效。

 

5参考文献

[1]谭浩强.C语言程序设计.第三版清华大学出版社

[2]严蔚敏。

数据结构(C语言版)清华大学出版社

[3]汤小丹.系统.西安电子科技大学出版社

[4]周峰,周艳.计算机操作系统原理教程郁实训.北京大学出版社

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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