页面置换 FIFO LRU OPT 算法在不同内存容量下的命中率(JAVA实现)

页面置换算法

目的:深入掌握内存调度算法的概念原理和实现方法。

设计要求:编写程序实现:

  1. 先进先出页面置换算法(FIFO)
  2. 最近最久未使用页面置换算法(LRU)
  3. 最佳置换页面置换算法(OPT)

专题:设计一个虚拟存储区和内存工作区,编程序演示以上三种算法的具体实现过程,并计算访问命中率。演示页面置换的三种算法。通过随机数产生一个指令序列,将指令序列转换成为页地址流。计算并输出各种算法在不同内存容量下的命中率

分析:

命中率= 1 - 中断淘汰次数/命令总数

1、先进先出页面置换算法(FIFO)

**设内存分成3个页帧,X表示中断,{}中为CPU要调用的页面**

该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰.

实现:设置一个数组模拟内存,用一个int一直记录内存中最先进入的页面index,每次需要中断淘汰页面时则淘汰记录在小标中那一个

2、最近最久未使用页面置换算法(LRU)

相关推荐
设计一个虚拟存储区和内存工作区,并使用下列算法计算访问命中率. (1) 进先出的算法(FIFO) (2) 最近最少使用的算法(LRU) (3) 最佳淘汰算法(OPT)(4) 最少访问页面算法(LFU) (5) 最近最不经常使用算法(NUR) 命中率=1-页面失效次数/页地址流长度 本实验的程序设计基本上按照实验内容进行。即首先用 srand()和 rand()函数定 义和产生指令序列,然后将指令序列变换成相应的页地址流,并针对不同算法 计算出相应的命中率。相关定义如下: 1 数据结构 (1)页面类型 typedef struct{ int pn,pfn,counter,time; }pl-type; 其中 pn 为页号,pfn 为面号, counter 为一个周期内访问该页面的次数, time 为访问时间. (2) 页面控制结构 pfc-struct{ int pn,pfn; struct pfc_struct *next;} typedef struct pfc_struct pfc_type; pfc_type pfc_struct[total_vp],*freepf_head,*busypf_head; pfc_type *busypf_tail; 其中 pfc[total_vp]定义用户进程虚页控制结构, *freepf_head 为空页面头的指针, *busypf_head 为忙页面头的指针, *busypf_tail 为忙页面尾的指针. 2.函数定义 (1)Void initialize( ):初始化函数,给每个相关的页面赋值. (2)Void FIFO( ):计算使用 FIFO 算法时的命中率. (3)Void LRU( ):计算使用 LRU 算法时的命中率. (4)Void OPT( ):计算使用 OPT 算法时的命中率. (5)Void LFU( ):计算使用 LFU 算法时的命中率. (6)Void NUR( ):计算使用 NUR 算法时的命中率. 3.变量定义 (1)int a[total_instruction]: 指令流数据组.(2)int page[total_instruction]: 每条指令所属的页号. (3)int offset[total_instruction]: 每页装入 10 条指令后取模运算页号偏移 值. (4)int total_pf: 用户进程的内存页面数. (5)int disaffect: 页面失效次数.
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页