LRU页面置换算法

本文以序列长度20的{ 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};以及页面4;为例;

 1 #include <stdio.h>
 2
 3 #define InitPysiBlocks 4
 4 #define MaxPages 20
 5 int PysicalBlocks[InitPysiBlocks] = { -1,-1,-1,-1 };
 6 int PageSequence[MaxPages] = { 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};
 7
 8 void LRU(int py[],int pg[])
 9 {
10     int i,j,k,m,flag[MaxPages],temp[MaxPages][InitPysiBlocks];
11     int max = 0;
12     char f[MaxPages];
13     for(i = 0; i < InitPysiBlocks; i++)
14     {
15         py[i] = pg[i];
16         flag[i] = i;
17         f[i] = ‘*‘;
18         for(j = 0; j < InitPysiBlocks; j++)
19             temp[i][j] = py[j];
20     }
21     for(i = InitPysiBlocks; i < MaxPages; i++)
22     {
23         for(j = 0,k = 0; j < InitPysiBlocks; j++)
24         {
25             if(py[j] != pg[i])
26                 k++;
27             else
28                 flag[j] = i;
29         }
30         if(k == InitPysiBlocks)
31         {
32             f[i] = ‘*‘;
33             max = flag[0] < flag[1]?0:1;
34             for(m = 2; m < InitPysiBlocks; m++)
35                 if(flag[m] < flag[max])
36                     max = m;
37             py[max] = pg[i];
38             flag[max] = i;
39             for(j = 0; j < InitPysiBlocks; j++)
40                 temp[i][j] = py[j];
41         }
42         else
43         {
44             f[i] = ‘ ‘;
45             for(j = 0; j < InitPysiBlocks; j++)
46                 temp[i][j] = py[j];
47         }
48     }
49     printf("输出结果为下表(-1代表为空,*代表有缺页):\n");
50     for(i = 0; i < InitPysiBlocks; i++)
51     {
52         for(j = 0; j < MaxPages; j++)
53             printf("%3d",temp[j][i]);
54         printf("\n");
55     }
56     for(i = 0; i < MaxPages; i++)
57         printf("%3c",f[i]);
58     printf("\n");
59 }
60
61 void main()
62 {
63     LRU(PysicalBlocks,PageSequence);
64 }

测试:

时间: 2024-08-15 16:35:16

LRU页面置换算法的相关文章

[Operate System &amp; Algorithm] 页面置换算法

页面置换算法是什么?我们看一下百度百科对页面置换算法给出的定义:在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断.当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存中选择一个页面将其移出内存,以便为即将调入的页面让出空间.而用来选择淘汰哪一页的规则叫做页面置换算法.好了,说到底,页面置换算法就是因为操作系统的内部不够,在调入新的页面时如何取代哪个页面的问题.常见的页面置换算法有如下图所示几种: 上述的随机替换我们很容易理解,就是操作系统随机挑选的一个被

操作系统 页面置换算法LRU和FIFO

LRU(Least Recently Used)最少使用页面置换算法,顾名思义,就是替换掉最少使用的页面. FIFO(first in first out,先进先出)页面置换算法,这是的最早出现的置换算法.该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最长的页面给予淘汰. FIFO置换算法有这样一个奇怪现象:内存空间块数越多,缺页中断率可能相反的越高(缺页中断次数越高). LFU(Least Frequently Used)最近最少使用算法,它是基于“如果一个数据在最近一段时间内使用次

操作系统页面置换算法(opt,lru,fifo,clock)实现

#include <iostream> #include<map> #include<set> #include <algorithm> #include<cstdio> #include<cstring> #include<cmath> #define N 200 using namespace std; int page[N];//页面引用号 int block[N];//物理块,内存 int dist[N][N];/

页面置换算法(最佳置换算法、FIFO置换算法、LRU置换算法、LFU置换算法)

页面置换产生的原因是:分页请求式存储管理(它是实现虚拟存储管理的方法之一,其中一个特性是多次性-->多次将页面换入或换出内存) 效果最好的页面置换算法:最佳置换算法 比较常用的页面置换算法有:FIFO置换算法.LRU置换算法.LFU置换算法 最佳置换算法:不可能实现-->是衡量其他置换算法的方法. FIFO置换算法:先进先出置换算法,淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰.(实现简单) LRU置换算法:最近最久未使用置换算法,该算法赋予每个页面一个访问字段,用来记录一

C#语言中的动态数组(ArrayList)模拟常用页面置换算法(FIFO、LRU、Optimal)

目录 00 简介 01 算法概述 02 公用方法 03 先进先出置换算法(FIFO) 04 最近最久未使用(LRU)算法 05 最佳置换算法(OPT) 00 简介 页面置换算法主要是记录内存的忙闲状态,为进程分配和释放内存.当主存的空间太小而无法装入所有的进程时,就需要在内存和硬盘之间进行调度操作. 多数操作系统只采用某种特定的页面置换算法进行置换,无法预先探测当前运行进程的页面访问模式,因此不能根据不同的页面访问模式,选用不同的页面置换算法.当然,如果能对不同的访问模式选取相应的页面置换算法,

操作系统之页面置换算法(最佳置换OPT,先进先出FIFO,最近最久未使用LRU)

最近学习操作系统时,实验要求实现常见的三种页面置换算法,博主按照书上要求试着编写,实现了案例,并记录在博客随记中,以便后续自己复习并也给需要的同学分享参考一下!水平有限,若有错,请悄悄告诉博主!博主好立即改正. 最佳置换算法(optimal replacement,OPT)是从内存中选择今后不再访问的页面或者在最长一段时间后才需要访问的页面进行淘汰.如下例子: 1 #include <iostream> 2 #include <stdio.h> 3 #include <std

存储器管理之页面置换算法

地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断.当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间.而用来选择淘汰哪一页的规则叫做页面置换算法.常见的置换算法有: 1)最佳置换算法(OPT)(理想置换算法) 这是一种理想情况下的页面置换算法,但实际上是不可能实现的.该算法的基本思想是:发生缺页时,有些页面在内存中,其中有一页将很快被访问(也包含紧接着的下一条指令的那页),而其他页面则可能要到10.100或者1000条指令后才会被访问,

页面置换算法

地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断.当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间.而用来选择淘汰哪一页的规则叫做页面置换算法.常见的置换算法有: 1)最佳置换算法(OPT)(理想置换算法) 这是一种理想情况下的页面置换算法,但实际上是不可能实现的.该算法的基本思想是:发生缺页时,有些页面在内存中,其中有一页将很快被访问(也包含紧接着的下一条指令的那页),而其他页面则可能要到10.100或者1000条指令后才会被访问,

操作系统原理(二)——内存管理之页面置换算法

页面置换算法 1. 总述 为提高内存利用率,解决内存供不应求的问题,更加合理的使用内存,人们创造了分页式内存抽象.同时有一个虚拟内存的概念,是指将内存中暂时不需要的部分写入硬盘,看上去硬盘扩展了内存的容量,所以叫做“虚拟”内存.使用虚拟内存,应用程序可以使用比实际物理内存更大的内存空间.可以认为这个更大的内存空间就在硬盘上,只有将某一部分需要被用到时,才被写入真实内存:当它暂时不再被用到时,又被写回硬盘.分页式内存管理将物理内存分为等大的小块,每块大小通常为1K.2K.4K等,称为页帧:逻辑内存