操作系统-内存置换算法_第1页
操作系统-内存置换算法_第2页
操作系统-内存置换算法_第3页
操作系统-内存置换算法_第4页
操作系统-内存置换算法_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、存储管理的页面置换算法存储管理的页面置换算法在考试中常常会考到,操作系统教材中主要介绍了3种常用的页面置换算法,分别是:先进先出法(FIFO)、最佳置换法(OPT)和最近最少使用置换法(LRU)。大家要理解3种置换算法的含义,然后能熟练地运用在具体的练习中就可以了。为什么要进行页面置换在请求分页存储管理系统中,由于使用了虚拟存储管理技术,使得所有的进程页面不是一次性地全部调入内存,而是部分页面装入。这就有可能出现下面的情况:要访问的页面不在内存,这时系统产生缺页中断。操作系统在处理缺页中断时,要把所需页面从外存调入到内存中。如果这时内存中有空闲块,就可以直接调入该页面;如果这时内存中没有空闲块

2、,就必须先淘汰一个已经在内存中的页面,腾出空间,再把所需的页面装入,即进行页面置换。有助于理解的关键词有:请求分页、虚拟存储、缺页中断、页面置换。先进先出法(FIFO)算法描述:由于认为最早调入内存的页不再被使用的可能性要大于刚调入内存的页,因此,先进先出法总是淘汰在内存中停留时间最长的一页,即先进入内存的页,先被换出。先进先出法把一个进程所有在内存中的页按进入内存的次序排队,淘汰页面总是在队首进行。如果一个页面刚被放入内存,就把它插在队尾。【例1】教材第4章课后习题。考虑下述页面走向:1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6。当内存块数量分别为3,5时,

3、试问先进先出置换算法(FIFO)的缺页次数是多少?(注意,所有内存块最初都是空的,凡第一次用到的页面都产生一次缺页。)解:当内存块数量分别为3时,FIFO算法的执行过程如下图所示。打叉的表示发生了缺页,共缺页16次。提示:当FIFO算法执行到蓝色的4号页面时,这时内存中有三个页面,分别是1,2,3。按照FIFO算法,在内存中停留时间最长的页面被淘汰。三个页面在内存中的停留时间用绿色区域标记出来了,可见,1号页面是停留时间最长的,因此要淘汰1号页面。当内存块数量分别为5时,共缺页10次。FIFO算法的执行过程如下。优缺点:先进先出法(FIFO)简单易于实现,但是性能不好,存在Belady现象。例

4、如对于以下页面:1,2,3,4,1,2,5,1,2,3,4,5,当内存块为3时,出现9次缺页中断;当内存块为4时,出现10次缺页中断。缺页率随着内存块增加而增加的现象,称为Belady现象。有兴趣的同学可以试一试,看看是不是这样的。代码:#include "iostream"using namespace std;#include #include /ram 模拟系统为进程分配的3个内存块deque ram(3; int length=0;/检测是否在内存中int isContain(int findNumint i;for (i=0;i if (findNum=ramib

5、reak;return i;/缺页中断 将缺少的页调入内存 同时将最早进来的页调出int intServer(int pageif(length!=ram.size(ramlength=page;length+;elseram.pop_front(;ram.push_back(page;return 0;/显示3个内存块中存放的页面号void display( int i;cout<<"内存块中存放的页面号:"for (i=0;i printf("%2d ",rami;cout< int main(/int i=0;for (i=0;i

6、 rami=0;/该模拟进程总共有20条指令 instructesi 为i条指令所在页int instructes21=0;srand(122055105;/随机产生指令所在的页for(int i=1;i<=20;i+/该模拟进程指令或数据分布在6个页面中/分别为第 1,2,3,4,5,6 页instructesi=rand(%6+1;/cout<<"第"< printf("第%2d指令所在页%d n",i,instructesi;int count=0;for ( i=1;i<=20;i+printf("当前待执行指令所在页:%2d:n",instructesi;display(;int pos=isContain(instructesi;if (pos=ram.size(printf("第%2d页不在内存中 -> 缺页中断n",instructesi;intServer(instructesi;count+;cout< cout<<"总共执行20条指令n"<<"缺页次数:"< cout<<"缺页率:"<<(floatcount

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论