1 / 19
文档名称:

LRU置换算法和银行家算法实验报告.doc

格式:doc   大小:217KB   页数:19页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

LRU置换算法和银行家算法实验报告.doc

上传人:s0012230 2018/8/18 文件大小:217 KB

下载得到文件列表

LRU置换算法和银行家算法实验报告.doc

文档介绍

文档介绍:计算机操作系统
实验报告
课程名称
计算机操作系统
实验项目名称
LRU置换算法和银行家算法
学号
班级

姓名
专业
实验地点
12J-661实验室

济南大学
信息科学与技术学院
2013年12月10日
一、实验概述
1. 实验名称
LRU置换算法
2. 实验目的
(1)了解内存分页管理策略
(2)掌握调页策略
(3)掌握一般常用的调度算法
(4)学会各种存储分配算法的实现方法。
(5)了解页面大小和内存实际容量对命中率的影响。
3. 实验内容
FIFO置换算法性能之所以较差,是因为它所依据的条件是各个页面调入内存的时间,而页面调入的先后并不能反映页面的使用情况。最近最久未使用(LRU)置换算法,是根据页面调入内存后的使用情况进行决策的。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU置换算法是选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t,,当须淘汰一个页面时,选择现有页面中其t值最大的,即最近最久未使用的页面予以淘汰。
二、实验环境
进行实验使用的操作系统:windowXP
编译器:VS
语言:C#
三、实验过程
1. 设计思路和流程图
2. 算法实现
最近最久未使用(LRU)的页面置换算法,是根据页面调入内存后的使用情况进行决策的。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU置换算法是选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t,当须淘汰一个页面时,选择现有页面中其t值最大的,即最近最久未使用的页面予以淘汰。
3. 需要解决的问题及解答
LRU的实现(需要“堆栈”支持)可利用一个特殊的栈来保存当前使用的各个页面的页面号。每当进程访问某页面时,便将该页面的页面号从栈中移出,将它压入栈顶。因此,栈顶始终是最新被访问页面的编号,而栈底则是最近最久未使用页面的页面号。
4. 主要数据结构、实现代码及其说明
5. 源程序并附上注释
import ;
import ;
public class LRU {
int blockCount;
int seriaCount;
static int num=0;
int[] address;
int[] stack;
BufferedReader br;
public static void main(String[] args) {
int address[] = { 7, 0,1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1};
LRU lru = new LRU();
();
();
}
public void init() {
try {
br = new BufferedReader(new InputStreamReader());
}catch (Exception e) {
();
(0);
}
blockCount = 3;
stack = new int[blockCount];
("请输入访问内存的块序列的个数为3:");
seriaCount = readInt();
("读入的访问序列是:");
address = readIntArray();
}
public void display() {
boolean flag;
("--------------------------------------");
("最近最久未使用页面置换算法(LRU)页面置换序列:");
for (int i = 0; i< ; i++) {
int j =0;
flag =false;
int t, temp =address[i];
while(stack[j] != address[i]) {
t= stack[j];
stack[j]= temp;
temp= t;
j++;
if(t