闽南师范大学操作系统课程设计内存LRU页面置换算法的设计

合集下载

内存置换算法课程设计

内存置换算法课程设计

内存置换算法课程设计一、教学目标本课程旨在让学生了解内存置换算法的基本概念、原理和实现方法,掌握几种常见的内存置换算法,培养学生运用算法解决实际问题的能力。

具体目标如下:1.知识目标:a.掌握内存置换算法的定义、作用和分类;b.理解先进先出置换算法(FIFO)、最近最少使用置换算法(LRU)、最优置换算法(OPT)的基本原理;c.掌握几种常见置换算法的实现和优缺点。

2.技能目标:a.能够运用内存置换算法解决实际问题,如页面置换、缓冲区管理等;b.能够比较和评估不同内存置换算法的性能;c.能够编写简单的内存置换算法程序。

3.情感态度价值观目标:a.培养学生对计算机科学和算法的兴趣和好奇心;b.培养学生独立思考、解决问题的能力;c.培养学生团队协作、交流分享的良好习惯。

二、教学内容本课程的教学内容主要包括内存置换算法的基本概念、原理和实现方法。

具体安排如下:1.内存置换算法的定义、作用和分类;2.先进先出置换算法(FIFO)的原理和实现;3.最近最少使用置换算法(LRU)的原理和实现;4.最优置换算法(OPT)的原理和实现;5.常见置换算法的比较和评估;6.内存置换算法在实际问题中的应用。

三、教学方法为了提高教学效果,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。

具体应用如下:1.讲授法:用于讲解内存置换算法的基本概念、原理和实现方法;2.讨论法:用于引导学生探讨不同内存置换算法的优缺点及适用场景;3.案例分析法:用于分析实际问题,让学生学会运用内存置换算法解决问题;4.实验法:让学生通过编写程序,动手实现内存置换算法,提高实际操作能力。

四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:《计算机操作系统》、《算法导论》等相关书籍;2.参考书:提供相关论文、资料,以便学生深入研究;3.多媒体资料:制作课件、视频等,以便于讲解和演示;4.实验设备:提供计算机实验室,让学生动手实践。

LRU页面置换算法的设计实验报告

LRU页面置换算法的设计实验报告
returni;//找到内存中有该页面,返回BLOCK中位置
return-1;
}
intfindReplace(intBsize)
{//查找应予置换的页面
intpos = 0;
for(inti=0; i<Bsize; i++)
if(block[i].timer >= block[pos].timer)
for(i=0;i<20;i++)
{
QString[i] = rand()%10 ;
}
cout<<"页面号引用串: ";
for(i=0;i<20;i++)
{
cout<<QString[i]<<" ";
}
cout<<endl<<"------------------------------------------------------"<<endl;
四、实验结果(含程序、数据记录及分析和实验总结等)
#include<iostream>
#include<string>
#include<stdlib.h>
#include<ctime>
usingnamespacestd;
constintBsize=10;
constintPsize=20;
structp
Bsize = 3;
Init(QString,Bsize);
cout<<"LRU算法结果如下:<<endl;

操作系统课程设计--一级页面置换算法设计

操作系统课程设计--一级页面置换算法设计

操作系统课程设计--一级页面置换算法设

在操作系统的课程设计中,页面置换算法是一个重要的主题。

在这个设计中,我们将着重讨论一级页面置换算法设计。

一级页面置换算法是一种最基础的页面置换算法,也是最简单和最容易实现的算法之一。

一级页面置换算法
一级页面置换算法只维护一个页面队列,并采用先进先出(FIFO)的策略。

当需要置换一个页面时,选择在队列中最先进入的页面进行置换。

这种算法非常简单,只需要一个队列来维护当前已经进入主存的页面即可。

虽然一级页面置换算法非常简单,但是在某些情况下,它会导致较差的性能。

例如,当一个程序的工作集超出了队列的大小时,一级页面置换算法将导致大量的缺页中断,从而降低系统性能。

一级页面置换算法的实现
在进行一级页面置换算法的实现时,我们需要实现以下功能:
1. 页面入队:当一个页面被访问时,在内存中没有它的副本时,该页面需要被加入队列。

2. 页面出队:当需要进行页面置换时,队列中最先进入的页面
需要被出队,并从物理内存中移除。

3. 页面访问:当访问一个页面时,需要查找该页面是否已经在
队列中,如果在队列中,则不进行任何操作。

如果不在队列中,则
需要将该页面入队。

结论
一级页面置换算法虽然简单,但是在一些情况下会导致较差的
性能。

对于更为复杂的程序,需要采用更为高级的页面置换算法,
以提高系统性能。

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

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

操作系统课程设计报告题目:页面置换算法模拟程序设计专业:软件工程院系:信息管理学院目录第一部分概述第二部分设计的基本概念和原理第三部分总体设计3.1算法流程图3.2算法的简要实现方法3.2.1 OPT页面置换算法3.2.2 FIFO页面置换算法3.2.3 LRU页面置换算法3.2.4 LFU页面置换算法第四部分详细设计4.1 main函数4.2 OPT函数4.2 FIFO函数4.3 LRU函数4.5 LFU函数4.6辅助函数4.6.1 Designer函数4.6.2 mDelay函数4.6.3 Download函数4.6.4 Compute函数4.6.5 showTable函数第五部分实现源代码第六部分简要的使用说明及主要运行界面第七部分总结第八部分参考文献第一部分概述设计任务:页面置换算法是虚拟存储管理实现的关键,通过本次课程设计理解内存页面调度的机制,在模拟实现OPT、FIFO、LRU和LFU几种经典页面置换算法的基础上,比较各种置换算法的效率及优缺点,从而了解虚拟存储实现的过程。

第二部分设计的基本概念和原理(1).页面淘汰机制页面淘汰又称为页面置换。

若请求调页程序要调进一个页面,而此时该作业所分得的主存块已全部用完,则必须淘汰该作业已在主存中的一个页。

这时,就产生了在诸页面中淘汰哪个页面的问题,这就是淘汰算法(或称为置换算法)。

置换算法可描述为,当要索取一个页面并送入主存时,必须将该作业已在主存中的某一页面淘汰掉,用来选择淘汰哪一页的规则就叫做置换算法。

(2).各种页面置换算法的实现思想OPT算法是当要调入一新页而必须先淘汰一旧业时,所淘汰的那一页应是以后不要再用的或是以后很长时间才会用到的页。

FIFO算法的实质是,总是选择在主存中居留时间最长(即最老)的一页淘汰。

其理由是最先调入主存的页面,其不再被使用的可能性比最近调入主存的页的可能性大。

LRU算法的实质是,当需要置换一页时,选择最长时间未被使用的那一页淘汰。

操作系统LRU课程设计

操作系统LRU课程设计

操作系统LRU课程设计一、课程目标知识目标:1. 理解操作系统中LRU(最近最少使用)页面置换算法的基本原理;2. 掌握LRU算法在内存管理中的应用及其对系统性能的影响;3. 学会分析不同页面置换算法的优缺点,并进行简单的比较。

技能目标:1. 能够运用所学知识编写简单的LRU页面置换算法的程序;2. 能够通过案例分析和实验操作,提升问题解决能力和团队协作能力;3. 能够运用所学知识对实际操作系统中的内存管理问题进行初步分析和优化。

情感态度价值观目标:1. 培养学生对操作系统的兴趣,激发他们主动探索和研究的精神;2. 增强学生的团队合作意识,培养他们尊重他人、共同进步的品质;3. 通过对操作系统知识的学习,引导学生认识到科技对社会发展的重要性,培养他们的社会责任感。

课程性质分析:本课程为计算机科学与技术专业的高年级课程,旨在帮助学生深入理解操作系统的内存管理原理,提高他们在实际应用中分析和解决问题的能力。

学生特点分析:学生已具备一定的编程基础和操作系统知识,具有较强的逻辑思维能力和自主学习能力。

教学要求:1. 结合实际案例,引导学生深入理解LRU算法的原理和应用;2. 强化实践操作,让学生在实践中掌握知识,提高技能;3. 注重培养学生的团队合作精神和情感态度价值观。

二、教学内容1. 引言:回顾操作系统内存管理的基本概念,引入LRU页面置换算法。

- 简要介绍内存管理的重要性;- 回顾页面置换算法的基本原理。

2. LRU算法原理:- 讲解LRU算法的核心思想;- 分析LRU算法在内存管理中的作用;- 介绍LRU算法的优缺点。

3. LRU算法实现:- 介绍LRU算法的常见实现方法;- 演示如何编写简单的LRU页面置换算法程序;- 分析不同实现方法对性能的影响。

4. 案例分析与实验:- 结合实际案例,分析LRU算法在实际操作系统中的应用;- 安排实验,让学生动手实现和优化LRU算法;- 讨论实验过程中的问题及解决方案。

页面置换算法课程设计

页面置换算法课程设计

页面置换算法课程设计一、教学目标本章节的教学目标分为三个维度:知识目标、技能目标和情感态度价值观目标。

1.知识目标:使学生掌握页面置换算法的概念、原理和常见的算法,如FIFO、LRU、LFU 等。

2.技能目标:培养学生运用页面置换算法解决实际问题的能力,能够分析算法优缺点,并根据场景选择合适的算法。

3.情感态度价值观目标:培养学生对计算机科学领域的兴趣,激发学生探索和创新的精神,使其认识到算法在现代社会中的重要性。

二、教学内容本章节的教学内容主要包括以下几个部分:1.页面置换算法的概念和背景知识,如虚拟存储器、分页系统等。

2.常见页面置换算法的原理和实现,如 FIFO、LRU、LFU 等。

3.页面置换算法的性能分析,包括优缺点、适用场景等。

4.结合实际案例,让学生了解页面置换算法在操作系统中的应用。

三、教学方法为了提高教学效果,本章节将采用多种教学方法:1.讲授法:用于讲解页面置换算法的概念、原理和性能分析。

2.案例分析法:通过分析实际案例,使学生了解页面置换算法在操作系统中的应用。

3.实验法:安排实验课,让学生动手实现页面置换算法,提高其实际操作能力。

4.讨论法:学生分组讨论,比较不同页面置换算法的优缺点,培养学生独立思考和团队协作的能力。

四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《操作系统原理与应用》等相关教材,提供理论知识基础。

2.参考书:提供 additional references for students who want to deepentheir understanding of the subject.3.多媒体资料:制作PPT课件,生动展示页面置换算法的原理和应用。

4.实验设备:提供计算机及相关设备,让学生进行实验操作。

五、教学评估本章节的评估方式包括以下几个方面:1.平时表现:通过课堂参与、提问、讨论等环节,评估学生的学习态度和积极性。

lru 页面置换算法

lru 页面置换算法

LRU 页面置换算法1. 简介LRU(Least Recently Used)页面置换算法是一种常用的操作系统内存管理算法,用于在内存不足时决定哪些页面应该被置换出去以腾出空间给新的页面。

LRU算法基于一个简单的原则:最近最少使用的页面应该被置换。

在计算机系统中,内存是有限的资源,而运行程序所需的内存可能超过可用内存大小。

当系统发现没有足够的空闲内存来加载新页面时,就需要选择一些已经在内存中的页面进行替换。

LRU算法就是为了解决这个问题而设计的。

2. 原理LRU算法基于一个简单的思想:如果一个页面最近被访问过,那么它将来可能会再次被访问。

相反,如果一个页面很久没有被访问过,那么它将来可能不会再次被访问。

根据这个思想,LRU算法将最近最少使用的页面置换出去。

具体实现上,可以使用一个数据结构来记录每个页面最近一次被访问的时间戳。

当需要替换一页时,选择时间戳最早(即最久未访问)的页面进行替换即可。

3. 实现方式LRU算法的实现可以基于多种数据结构,下面介绍两种常见的实现方式。

3.1 使用链表一种简单的实现方式是使用一个双向链表来记录页面的访问顺序。

链表头部表示最近访问过的页面,链表尾部表示最久未被访问过的页面。

每当一个页面被访问时,将其从原位置移动到链表头部。

当需要替换一页时,选择链表尾部的页面进行替换。

这种实现方式的时间复杂度为O(1),但空间复杂度较高,为O(n),其中n为内存中可用页面数。

class Node:def __init__(self, key, value):self.key = keyself.value = valueself.prev = Noneself.next = Noneclass LRUCache:def __init__(self, capacity):self.capacity = capacityself.cache = {}self.head = Node(0, 0)self.tail = Node(0, 0)self.head.next = self.tailself.tail.prev = self.headdef get(self, key):if key in self.cache:node = self.cache[key]self._remove(node)self._add(node)return node.valueelse:return -1def put(self, key, value):if key in self.cache:node = self.cache[key]node.value = valueself._remove(node)self._add(node)else:if len(self.cache) >= self.capacity:del self.cache[self.tail.prev.key] self._remove(self.tail.prev)node = Node(key, value)self.cache[key] = nodeself._add(node)def _remove(self, node):prev = node.prevnext = node.nextprev.next = nextnext.prev = prevdef _add(self, node):head_next = self.head.nextself.head.next = nodenode.prev = self.headnode.next = head_nexthead_next.prev = node3.2 使用哈希表和双向链表另一种实现方式是使用一个哈希表和一个双向链表。

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

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

操作系统课程设计报告书一、设计目的学习计算机软件技术,特别是计算机操作系统技术,除了需要刻苦努力外,还需要掌握软件和操作系统的原理与设计技巧。

本设计木的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。

二、设计任务1、通过随机数产生一个指令序列,共320条指令。

指令的地址按下述原则生成:50%的指令是顺序执行的;25%的指令是均匀分布在前地址部分;25%的指令是均匀分布在地址部分。

2、将指令序列换成为页地址流。

3、计算并输出下述各种算法在不同内存容量下的命中率。

(1)先进先出的算法(FIFO);(2)最近最少使用算法(LRU);(3)最近最不经常使用算法(NUR);三、设计内容与步骤分页存储管理将一个进程的逻辑地址空间分成若干大小相等的片,称为页面或页。

1、调页策略1)何时调入页面2)请求调页策略2、从何处调入页面(1) 系统拥有足够的对换区空间,这时可以全部从对换区调入所需页面,以提高调页速度。

为此,在进程运行前,便须将与该进程有关的文件,从文件区拷贝到对换区。

(2) 系统缺少足够的对换区空间,这时凡是不会被修改的文件,都直接从文件区调入;而当换出这些页面时,由于它们未被修改而不必再将它们换出时,以后需要时,再从对换区调入。

(3) UNIX方式。

由于与进程有关的文件都放在文件区,故凡是未运行过的页面,都从文件区调入。

而对于曾经运行过但又被换出的页面,由于被放在对换区,因此在下次时,应从对换区调入。

由于UNIX系统允许页面共享,因此,某进程所请求的页面有可能已被其它进程调入内存,此时也就无须再从对换区调入。

3、页面调入过程四、页面置换算法在进程运行过程中,若其所要访问的页面不在内存而需把它们调入内存,但内存已无空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据,送磁盘的对换区中。

但应将哪个页面调出,须根据一定的算法来确定。

操作系统课程设计面置换算法LRU算法

操作系统课程设计面置换算法LRU算法

实验报告实验说明:执行程序时,当主存没有可用页面时,为了选择淘汰主存中的哪一页 面,腾出1个空闲块以便存放新调入的页面。

淘汰哪个页面的首要问题是 选择何种置换算法。

该程序采用LRU 方法选择,依置换策略选择一个可置 换的页面并计算它们的缺页率以便比较。

包括实验内容及条件) 主要参考书 计算机操作系统原理 操作系统 算法流程图:西安大学出版社 电子工业出版社 汤子涵主编 William Stallings 著主更算法流程图(包括实验步骤int ijndex=-l;for(i=0;i<M;i++){if(a[i]=-l){index=i;break:return index;void swap(int x){int i,k,temp,tempO;int index=isIn(xjeg|O]); /****判断x 是否在reg[O]数组中*******/if(index!=-l){reg[ 1 ][index]=reg[ 1 ] [index] A N; /**reg[ 1 ] [index]异或二进制数10000000**/}else{temp=isFull(reg[OJ);if(temp!=-l){ /*******内存没有满,直接调入页而************/reg[O][temp]=x;reg[ l][temp]=reg( l][tcnip]A N;}else if(temp==-l){k=min(reg[l ]);/**置换出寄存器中数值最小的对应的下标的页面***/tenipO=reg[O][k]; /*********临时保留要换出的页而号*****/ reg[O][k]=x;reg[l][k]=reg[l](kpN:printf(M the page %d is exchanged out!\n M,tempO);/******打印要置换出的页号** ******* *****/count++; /*********g 换次数加1 ♦*****♦*♦*****/ }}for(i=0;i<M;i++){reg[l][i]=reg[l][i]»l;/******** 寄存器中的所有数右移一位 *****/ }}niain(){ int x;system("cls");init();printfC^Input a sort of pages\n n); printf(v while you input -1 Jt will stop!\n H);scanf(M%d M,&x);/********输入页面号,宜到页而号为-!*♦*******/ while(x!=-l){num++; /*******输入的页而次数加1枠**#粋/swap(x);scanf(,r%d,\&x);}/** ****** *******打印缺页数和缺页率******* *** **** ****“$*/ printf(u the count of Exchanged is: %d \n H,count);printf(u the rate of exchanged is: %f\n,\count* 1.0/nuni); getch();)本次实践计划. 进度安排及完成情况05月09号商讨如何实现本次实验以及同学之间的分工. 05月10号査阅相关资料.05月16号~05月17号基本完成程序修改完善程序.代码测试.完成实验报告.主要测试方法及测试数据,包括测试结果及实验结果:Input a sort of pageswhile you input ~1 , it will stop! 712the page 7 is exchanged out!3the page 1 is exchanged out!4the page 2 is exchanged out!2the page 3 is exchanged out!43the page 0 is exchanged out!the page 2 is exchanged out!。

闽南师范大学操作系统课程设计内存LRU页面置换算法的设计

闽南师范大学操作系统课程设计内存LRU页面置换算法的设计

闽南师范⼤学操作系统课程设计内存LRU页⾯置换算法的设计闽南师范⼤学操作系统课程设计内存LRU页⾯置换算法的设计姓名:学号:系别:计算机学院专业:⽹络⼯程专业年级:13⽹络2班指导教师:全秀祥、闫格2016年5⽉15⽇⽬录⼀、课程设计项⽬介绍 (3)1.1 项⽬介绍 .................... 错误!未定义书签。

1.2 设计⽬的 (3)⼆、总体设计 (4)2.1 总体结构 (4)2.2 原理框图 (4)2.2 设计原理 (4)三、详细设计 (5)3.1数据结构 (5)3.2程序流程图 (5)3.2代码及注释 (6)四、运⾏结果 (14)4.1运⾏及测试结果 (14)4.2 使⽤说明书 (16)五、课程设计⼩结与⼼得体会 (17)5.1 课设⼩结 (17)5.2 ⼼得体会 (18)⼀、课程设计项⽬介绍1.1 项⽬介绍-内容:实现教材4.8节中所描述的LRU置换算法-要求:假设系统采⽤固定分配局部置换策略,某进程的总页⾯数为8(分别以数字0-7来代表);运⾏时,输⼊分配给该进程的页块数(如:3)和⼀个20位长的页⾯访问序列(如:12560,36536,56042,70435),输出缺页次数和缺页率。

置换图如下所⽰:序1 2 5 6 0 3 6 5 3 6 5 6 0 4 2 7 0 4 3 5列1 1 1 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 3 32 2 2 0 0 0 5 5 5 5 5 5 4 4 4 0 0 0 55 5 5 3 3 3 3 3 3 3 0 0 2 2 2 4 4 4缺√√√√√√√√√√√√√√√页则缺页次数和缺页率为:缺页次数:15 缺页率:15/20=0.751.2 设计⽬的通过对内存页⾯置换算法的设计,深⼊理解虚拟存储管理的原理。

⼆、总体设计2.1 总体结构LRU页⾯置换算法⾃定义页⾯应⽤LRU算法EXIT2.2 原理框图-1-1-11-1-112-1125Block2.3 设计原理LRU:最近最久未使⽤置换算法。

页面置换-操作系统课程设计

页面置换-操作系统课程设计

页面置换算法模拟1、设计目的通过请求页式管理方式中页面置换算法的模拟设计,了解虚拟存储的特点,掌握请求页式存储管理中的页面置换算法。

2、任务及要求2.1 设计任务模拟实现先进先出算法(FIFO)、最近最少使用算法(LRU)、最优页置换算法(OPT),并计算命中率。

2.2 设计要求2.2.1 首先用随机数生成函数产生“指令”序列,然后将指令序列变换成相应的页地址流,再计算不同算法下的命中率。

2.2.2 通过随机数产生一个指令序列,共产生400条。

其中50%的指令是顺序执行的,且25%的指令分布在前半部分地址空间,25%的指令分布在后半部分地址空间。

2.2.3 将指令地址流变换成页地址流2.2.4 循环运行,使用户内存容量从4到40,。

计算每个内存容量下不同页面置换算法的命中率。

3、算法及数据结构3.1算法的总体思想(流程)struct Pro{int num,time;};int a[total_instruction];int page[N];//调用函数int Search(int e,Pro *page1 ){Pro *page=new Pro[N];page=page1;for(int i=0;i<N;i++){if(e==page[i].num)return i;}return -1;}void Input(Pro p[total_instruction]){int m,i,m1,m2;srand((unsigned int )time(NULL));m=rand()%400;for(i=0;i<total_instruction;) //产生指令队列{if(m<0||m>399){printf("When i==%d,Error,m==%d\n",i,m);exit(0);}a[i]=m; //任选一指令访问点ma[i+1]=a[i]+1;a[i+2]=a[i]+2; //顺序执行两条指令m1=rand( )%m; //执行前地址指令m1a[i+3]=m1;a[i+4]=m1+1;a[i+5]=m1 + 2;//顺序执行两条指令m2 = rand()%(157-m1)+m1+3;a[i+6]=m2;if( (m2+2) > 159 ){a[i+7] = m2+1;i +=8;}else{a[i+7] = m2+1;a[i+8] = m2+2;i = i+9;}m = rand()%m2;}//forfor(i=0;i<total_instruction;i++) //将指令序列变换成页地址流{p[i].num=a[i]/10;p[i].time = 0;}}3.2先进先出算法(FIFO)模块3.2.1 功能根据页地址流,采用先进先出的算法进行页面置换。

(lru)的页面置换算法

(lru)的页面置换算法

LRU页面置换算法:虚拟内存中的高效内存管理LRU(Least Recently Used)页面置换算法是一种常用的页面置换算法,用于在计算机操作系统中管理虚拟内存。

当内存空间不足时,操作系统需要选择一个页面进行置换,以释放空间。

LRU算法选择最近最久未使用的页面进行置换,以减少访问冲突和提高内存利用率。

以下是LRU页面置换算法的详细解释:1.定义:LRU算法将最近使用的页面保存在内存中,而将最久未使用的页面置换出去。

这样可以确保经常访问的页面能够在内存中随时可用,从而提高程序的执行效率。

2.数据结构:为了实现LRU算法,需要使用一个数据结构来记录页面访问的顺序。

通常使用一个双向链表来实现,其中链表的每个节点代表一个页面,并包含页面标识、页面帧号、链表指针等信息。

3.访问过程:当CPU需要访问一个页面时,首先检查该页面是否在内存中。

如果页面不在内存中,则发生缺页中断,操作系统需要将某个页面置换出去,以便为新页面腾出空间。

4.置换策略:LRU算法选择最久未使用的页面进行置换。

具体实现时,可以从链表的头部开始查找,找到最早加入链表且未被访问的页面作为置换对象。

如果存在多个这样的页面,则选择最早加入链表的页面进行置换。

5.更新策略:每次访问一个页面时,需要将该页面从链表中删除,并将其重新加入到链表的头部。

这样,最近访问的页面总是在链表的头部,而最久未使用的页面则在链表的尾部。

6.性能分析:LRU算法在大多数情况下能够提供较好的性能,因为经常访问的页面往往更容易引起缺页中断。

但是,对于一些特殊的应用程序,如递归程序或循环程序,LRU算法可能无法获得最佳性能。

在这种情况下,可能需要采用其他更复杂的页面置换算法,如最近最少使用(LFU)算法或工作集算法等。

总之,LRU页面置换算法是一种简单而有效的内存管理算法,能够提高内存利用率和程序执行效率。

在实际应用中,需要根据具体的应用场景和需求选择合适的页面置换算法。

实验三模拟操作完整系统的页面置换

实验三模拟操作完整系统的页面置换

院系:计算机学院实验课程:操作系统实验项目:模拟操作系统的页面置换指导老师:陈红英老师开课时间:2011 ~ 2012年度第 2学期专业:网络工程班级:10级学生:yuth学号:*华南师范大学教务处一、综合设计实验题目模拟操作系统的页面置换1、采用一种熟悉的语言,如C、PASCAL 或C++ 等,编制程序,最好关键代码采用C/C++ ,界面设计可采用其它自己喜欢的语言。

2、模拟操作系统采用OPT、FIFO 和LRU算法进行页面置换的过程。

3、设程序中地址范围为0 到32767 ,采用随机数生成256 个指令地址,满足50%的地址是顺序执行,25%向前跳,25% 向后跳。

为满足上述条件,可采取下列方法:设d0=10000,第n个指令地址为d n,第n+1 个指令地址为d n+1,n的取值范围为0 到255。

每次生成一个 1 到1024范围内的随机数a,如果a落在1 到512 范围内,则d n+1=d n+1。

如果a落在513 到768范围内,则设置d n+1为1 到d n 范围内一个随机数。

如果a落在769 到1024范围内,则设置d n+1为d n到32767范围内一个随机数。

例如:srand(); 初始化一个随机函数。

a[0] =10*rand()/32767*255+1;a[1]=10*rand()/32767*a[0]…语句可用来产生a[0]与a[1]中的随机数。

或采用以下方式:(1)通过随机数产生一个指令序列,共320条指令。

指令的地址按下述原则生成:A:50%的指令是顺序执行的B:25%的指令是均匀分布在前地址部分C:25%的指令是均匀分布在后地址部分具体的实施方法是:A:在[0,319]的指令地址之间随机选取一起点mB:顺序执行一条指令,即执行地址为m+1的指令C:在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m'D:顺序执行一条指令,其地址为m'+1E:在后地址[m'+2,3 19]中随机选取一条指令并执行F:重复步骤A-E,直到320次指令(2)将指令序列变换为页地址流设:页面大小为1K;用户内存容量4页到32页;用户虚存容量为32K。

操作系统页面置换课程设计报告

操作系统页面置换课程设计报告

南京工程学院课程设计说明书(论文) 题目页面置换算法的模拟课程名称操作系统课程设计院(系、部、中心)计算机工程学院班级学生姓名学号设计地点指导教师设计起止时间:2016年12月19日至2016年12月25日一、课题简介1.课题内容作业要访问的页面不在主存时,由缺页中断处理程序将所需的页面调入主存,若此时主存中没有空闲物理块,则系统将按照一定的页面置换算法选择一些页面移出,以便装入所缺的页面。

页面置换算法也称为页面淘汰算法或页面调度算法,其性能将直接影响系统的执行效率。

FIFO是最早出现的置换算法,该算法总是淘汰最先进入主存的页面。

特点是实现简单,但因为与进程实际的运行规律不适应,所以算法效率不高。

LRU算法每次都选择最近最久未使用的页面淘汰,即总是淘汰最后一次访问时间距当前时间间隔最长的页面。

该算法的思想依据是根据程序执行时所具有的局部性来考虑的,也就是说,刚被访问过的页面再次被访问的机率较大,而那些较长时间未被使用的页面被访问的机率要小。

LRU置换算法是一种通用的有效算法,因而被广泛采用。

掌握虚拟存储管理中页面置换算法的原理,设计恰当的数据结构和算法,模拟实现上述页面置换算法2.课题目的通过设计实现仿真程序,进一步理解请求分页虚拟存储管理技术。

同时,提高同学的编程能力、综合应用知识的能力和分析解决问题的能力。

二、系统设计方案1.功能设计实现了图形用户界面设计和调用了三种不同的置换算法FIFO、OPT、LRU,通过选择随机页面序列或者输入页面序列按钮来产生页面,以及手动输入物理块数,将用以上三种算法进行分析和把页面置换过程输出到图形界面来显示。

功能模块图如下图所示2.数据结构在本次课程设计中,总体使用了一个类Keshe,Keshe类中包含了三个主要的函数FIFO、LRU、OPT,其中LRU中使用了链表结构。

Keshe类中定义了如下变量:private int blockCount=20;//物理块最大个数private static int pageCount=12;//页面个数private static int page[]=new int[pageCount];//页面序列3.系统流程三、程序主要代码分析//查询以后不再访问或距现在最长时间后再访问的页面号public int search(int start,int[]block){int max=-1;int index=-1; //初始化需要淘汰的块号for(int i=0;i<blockCount;i++){int j=start;for(;j<pageCount;j++) //判断当前块内页面是否与未来页面相等if(block[i]==page[j])break;if(max<j){max=j;index=i;}}return index;//返回要淘汰的内存中的块号}}四、程序运行结果及分析输入页面序列6,7,6,5,9,6,8,9,7,6,9,6以及输入物理块数3使用OPT、FIFO、LRU置换算法,输出页面置换过程,中断次数以及缺页中断率显示结果如下点击按钮随机页面序列,输入物理块数3使用OPT、FIFO、LRU置换算法,输出页面置换过程,中断次数以及缺页中断率显示结果如下五、改进意见与收获体会通过这次课程设计,我对操作系统有了更深的认识,更好地掌握了操作系统的原理和重要算法的理解,深入了解到请求分页虚拟存储管理中的页面置换算法:最佳置换算法OPT、先进先出置换算法FIFO、最近最久未用置换算法LRU。

操作系统课程设计:lru页面置换算法

操作系统课程设计:lru页面置换算法

操作系统功能模拟设计实验题目: lru置换算法(C编写)学生姓名:计号学号: 1104032022专业:网络工程班级:11网络工程二班实验题目LRU页面调度算法处理缺页中断一、实验目的:了解和掌握寄存器分配和内存分配的有关技术二、实验内容(1)首先对LRU页面调度算法原理进行深刻的理解和掌握;(2)选择一种熟悉的编程语言来实现对一组访问序列进行内部的cache更新;(3)根据LRU页面调度算法算法的要求设计相应的数据结构,如:记录访问序列的数组、模拟内存cache的数组等等;(4)显示每个访问数进入cache的操作并显示出每次访问后内存中序列的状态。

三、实验环境Windows系统,c语言四、实验主要步骤(包括使用的数据结构的说明)1、初始化及使用数据结构开始的阶段,产生随机的访问序列,并用了结构体:struct page{int pageframe[10]; // 表示页表int flag; //标记是否有页面置换int length; //用来访问序列的长度int page_count; //页框的数目int page_serial[20]; //存取随机产生的访问序列组int count; //用来标识页框是否被装满int k; //用于记录访问页表的指针int pagetime[10]; //用来记录页框里面的数被访问的过后到再一次被访问所经历的的时间}p;并初始化这些量;void init(){ //初始化所有页表int i;p.flag=0;for(i=0;i<10;i++){p.pageframe[i]=-1;p.pagetime[i]=0;}for(i=0;i<20;i++){p.page_serial[i]=-1;}}2、LRU页面调度算法原理LRU页面调度算法是对要访问cache的访问序列进行更新的,当页表还是空的时候,进来要访问的页如果页表里面有的话,就对它的访问记录加一,如果也表里面没有切页表么有填满,就像页表里面添加。

常用页面置换课程设计

常用页面置换课程设计

常用页面置换课程设计一、教学目标本课程的教学目标是使学生掌握常用的页面置换算法,包括FIFO、LRU、LFU 等,理解它们的原理和实现方式,能够根据实际应用场景选择合适的页面置换算法。

同时,通过课程的学习,培养学生分析问题和解决问题的能力,提高他们对计算机系统的认识和理解。

具体来说,知识目标包括:1.掌握常用的页面置换算法及其原理。

2.了解页面置换算法在操作系统中的应用。

3.理解不同页面置换算法对系统性能的影响。

技能目标包括:1.能够实现常用的页面置换算法。

2.能够分析不同页面置换算法对系统性能的影响。

3.能够根据实际应用场景选择合适的页面置换算法。

情感态度价值观目标包括:1.培养学生对计算机系统的兴趣和热情。

2.培养学生分析问题和解决问题的能力。

3.培养学生团队协作和自主学习的意识。

二、教学内容本课程的教学内容主要包括以下几个部分:1.页面置换算法的基本概念和原理。

2.FIFO、LRU、LFU等常用页面置换算法的实现和分析。

3.页面置换算法在操作系统中的应用。

4.不同页面置换算法对系统性能的影响及优缺点比较。

具体安排如下:1.第一课时:介绍页面置换算法的基本概念和原理。

2.第二课时:讲解FIFO页面置换算法的原理和实现。

3.第三课时:讲解LRU页面置换算法的原理和实现。

4.第四课时:讲解LFU页面置换算法的原理和实现。

5.第五课时:分析不同页面置换算法对系统性能的影响及优缺点比较。

6.第六课时:结合实际应用场景,让学生选择合适的页面置换算法。

三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学。

1.讲授法:教师通过讲解页面置换算法的基本概念、原理和实现方法,使学生掌握相关知识。

2.案例分析法:教师通过分析实际应用场景,让学生了解页面置换算法在操作系统中的具体应用。

3.实验法:学生通过动手实践,实现不同页面置换算法,从而加深对知识的理解和掌握。

4.讨论法:教师学生进行小组讨论,让学生分享学习心得,互相答疑解惑。

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

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

操作系统课程设计报告题目:页面置换算法模拟程序设计专业:软件工程院系:信息管理学院目录第一部分概述第二部分设计的基本概念和原理第三部分总体设计3.1算法流程图3.2算法的简要实现方法3.2.1 OPT页面置换算法3.2.2 FIFO页面置换算法3.2.3 LRU页面置换算法3.2.4 LFU页面置换算法第四部分详细设计4.1 main函数4.2 OPT函数4.2 FIFO函数4.3 LRU函数4.5 LFU函数4.6辅助函数4.6.1 Designer函数4.6.2 mDelay函数4.6.3 Download函数4.6.4 Compute函数4.6.5 showTable函数第五部分实现源代码第六部分简要的使用说明及主要运行界面第七部分总结第八部分参考文献第一部分概述设计任务:页面置换算法是虚拟存储管理实现的关键,通过本次课程设计理解内存页面调度的机制,在模拟实现OPT、FIFO、LRU和LFU几种经典页面置换算法的基础上,比较各种置换算法的效率及优缺点,从而了解虚拟存储实现的过程。

第二部分设计的基本概念和原理(1).页面淘汰机制页面淘汰又称为页面置换。

若请求调页程序要调进一个页面,而此时该作业所分得的主存块已全部用完,则必须淘汰该作业已在主存中的一个页。

这时,就产生了在诸页面中淘汰哪个页面的问题,这就是淘汰算法(或称为置换算法)。

置换算法可描述为,当要索取一个页面并送入主存时,必须将该作业已在主存中的某一页面淘汰掉,用来选择淘汰哪一页的规则就叫做置换算法。

(2).各种页面置换算法的实现思想OPT算法是当要调入一新页而必须先淘汰一旧业时,所淘汰的那一页应是以后不要再用的或是以后很长时间才会用到的页。

FIFO算法的实质是,总是选择在主存中居留时间最长(即最老)的一页淘汰。

其理由是最先调入主存的页面,其不再被使用的可能性比最近调入主存的页的可能性大。

LRU算法的实质是,当需要置换一页时,选择最长时间未被使用的那一页淘汰。

操作系统课程设计报告页面置换算法

操作系统课程设计报告页面置换算法

计算机科学与技术学院《操作系统》课程设计报告(2013/2014学年第一学期)学生姓名:学生专业:网络工程学生班级:网络工程112001学生学号:指导教师:2013年12月20日计算机科学与技术学院课程设计任务书目录第一章问题的提出 (8)1.1关于页面置换算法模拟程序问题的产生 (8)1.2 任务分析 (8)第二章需求分析 (9)2.1需求说明 (9)2.2操作界面和操作方法 (10)第三章设计描述 (11)3.1方案设计 (11)3.2主要的函数 (11)第四章算法描述 (12)4.1主函数流程图 (12)4.2FIFO(先进先出)页面置换算法 (7)4.3LRU(最近最久未使用)页面置换算法 (9)4.4OPT(最佳置换算法) (7)4.5实现结果 (13)第五章程序测试 (17)5.1 设计测试数据 (17)5.2 测试结果及分析 (17)结论 (18)参考文献 (19)代码: (20)第一章问题的提出1.1关于页面置换算法模拟程序问题的产生在各种存储器管理方式中,有一个共同的特点,即它们都要求将一个作业全部装入内存方能运行,但是有两种情况:(1)有的作业很大,不能全部装入内存,致使作业无法运行;(2)有大量作业要求运行,但内存容量不足以容纳所有这些作业。

而虚拟内存技术正式从逻辑上扩充内存容量,将会解决以上两个问题。

从内存中调出一页程序或数据送磁盘的对换区中,通常,把选择换出的页面的算法称为页面置换算法(Page-Replacement Algorithms)。

进而页面置换算法模拟程序能客观的将其工作原理展现在我们面前。

1.2 任务分析首先,定义宏变量,设置所占最大内存长度。

编辑以时间为种子,初始化随即发生器。

进行相关页面输入程序的编写以及页面的打印。

尔后,寻找最近最近最久未使用的页面、记录当前内存块中页面离下次使用间隔长度等相关程序的代码编写。

最后,进行)FIFO 、LRU、OPT三种算法的编写。

lru页面置换算法课程设计

lru页面置换算法课程设计

lru页面置换算法课程设计一、课程目标知识目标:1. 理解操作系统中内存管理的重要性,掌握LRU(最近最少使用)页面置换算法的基本原理;2. 掌握LRU算法在虚拟内存中的应用,了解其在提高内存利用率方面的作用;3. 学会分析不同页面置换算法的优缺点,并能够比较LRU算法与其他算法的性能差异。

技能目标:1. 能够运用所学知识编写简单的LRU页面置换算法程序,实现虚拟内存的页面置换功能;2. 培养学生的编程实践能力,提高问题分析、解决能力;3. 学会通过实验数据分析页面置换算法的性能,培养科学研究和评价的能力。

情感态度价值观目标:1. 培养学生对计算机操作系统领域的学习兴趣,激发学生主动探索精神;2. 培养学生团队合作意识,学会倾听、交流、协作,提高人际沟通能力;3. 引导学生关注科技发展,了解页面置换算法在现实生活中的应用,培养学生的社会责任感。

本课程针对高中年级学生,结合学科特点和教学要求,注重理论与实践相结合,以培养学生的实际操作能力和创新精神为核心。

通过本课程的学习,使学生能够掌握LRU页面置换算法的基本原理,具备一定的编程实践能力,同时培养学生的团队合作意识和人际沟通能力,为将来的学习和工作打下坚实基础。

二、教学内容1. 理论知识:- 操作系统内存管理概述,理解内存分配、回收和页面置换的基本概念;- LRU页面置换算法的原理与实现步骤,对比其他常见页面置换算法;- 虚拟内存的工作原理,分析LRU算法在虚拟内存管理中的作用。

2. 实践操作:- 编写LRU页面置换算法的伪代码或程序,实际操作演示;- 设计实验,模拟不同场景下页面访问序列,分析LRU算法的性能表现;- 优化LRU算法,探讨提高页面置换效率的方法。

3. 教学大纲:- 第一课时:操作系统内存管理概述,介绍内存分配与回收;- 第二课时:页面置换算法原理,分析LRU算法的优势与局限;- 第三课时:虚拟内存与LRU算法,讲解LRU在虚拟内存中的应用;- 第四课时:实践操作,编写LRU页面置换算法程序,进行性能分析;- 第五课时:课程总结,探讨优化策略,拓展相关知识。

操作系统页面置换算法_课程设计论文

操作系统页面置换算法_课程设计论文

操作系统页面置换算法_课程设计论文《操作系统》课程设计任务书题目:常用页面置换算法模拟实验学号: 学生姓名:班级:题目类型:软件工程,R,指导教师: 一、设计目的学生通过该题目的设计过程,掌握常用页面置换算法的原理、软件开发方法并提高解决实际问题的能力。

二、设计任务1、了解UNIX的命令及使用格式,熟悉UNIX/LINUX的常用基本命令,练习并掌握UNIX提供的vi编辑器来编译C程序,学会利用gcc、gdb编译、调试C程序。

2、设计一个虚拟存储区和内存工作区,并使用最佳淘汰算法,OPT,、先进先出算法,FIFO,、最近最久未使用算法,LRU,计算访问命中率。

,命中率,,,页面失效次数,页地址流长度,三、设计要求1、分析设计要求,给出解决方案,要说明设计实现所用的原理、采用的数据结构,。

2、设计合适的测试用例,对得到的运行结果要有分析。

3、设计中遇到的问题,设计的心得体会。

4、文档:课程设计打印文档每个学生一份,并装在统一的资料袋中。

5、光盘:每个学生的文档和程序资料建在一个以自己学号和姓名命名的文件夹下,刻录一张光盘,装入资料袋中。

四、提交的成果1. 设计说明书一份,内容包括:1) 中文摘要100字;关键词3-5个;2) 设计思想;3,各模块的伪码算法;4,函数的调用关系图;5,测试结果;6,源程序,带注释,;7,设计总结;8) 参考文献、致谢等。

2. 刻制光盘一张。

五、主要参考文献1. 汤子瀛,哲凤屏.《计算机操作系统》.西安电子科技大学学出版社.2. 王清,李光明.《计算机操作系统》.冶金工业出版社.3.,钟秀等. 操作系统教程. 高等教育出版社4.曾明. Linux操作系统应用教程. 陕西科学技术出版社.5. 张丽芬,刘利雄.《操作系统实验教程》. 清华大学出版社.6. 孙静, 操作系统教程,,原理和实例分析. 高等教育出版社7. 周长林,计算机操作系统教程. 高等教育出版社8. 张尧学,计算机操作系统教程,清华大学出版社9. 任满杰,操作系统原理实用教程,电子工业出版社10.张坤.操作系统实验教程,清华大学出版社六、各阶段时间安排,共2周,周次日期内容地点教师讲解设计要求教室星期一~二查找参考资料图书馆第1周星期三~五算法设计,编程实现教室星期一~三算法设计,编程实现教室第2周星期四~五检查程序,答辩教室2013年12月9日摘要操作系统是管理计算机系统的全部硬件资源包括软件资源及数据资源,控制程序运行改善人机界面,为其它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,为用户提供方便的、有效的、友善的服务界面。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

闽南师范大学操作系统课程设计内存LRU页面置换算法的设计姓名:学号:系别:计算机学院专业:网络工程专业年级:13网络2班指导教师:全秀祥、闫格2016年5月15日目录一、课程设计项目介绍 (3)1.1 项目介绍 .................... 错误!未定义书签。

1.2 设计目的 (3)二、总体设计 (4)2.1 总体结构 (4)2.2 原理框图 (4)2.2 设计原理 (4)三、详细设计 (5)3.1数据结构 (5)3.2程序流程图 (5)3.2代码及注释 (6)四、运行结果 (14)4.1运行及测试结果 (14)4.2 使用说明书 (16)五、课程设计小结与心得体会 (17)5.1 课设小结 (17)5.2 心得体会 (18)一、课程设计项目介绍1.1 项目介绍-内容:实现教材4.8节中所描述的LRU置换算法-要求:⏹假设系统采用固定分配局部置换策略,某进程的总页面数为8(分别以数字0-7来代表);⏹运行时,输入分配给该进程的页块数(如:3)和一个20位长的页面访问序列(如:12560,36536,56042,70435),输出缺页次数和缺页率。

置换图如下所示:序1 2 5 6 0 3 6 5 3 6 5 6 0 4 2 7 0 4 3 5列1 1 1 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 3 32 2 2 0 0 0 5 5 5 5 5 5 4 4 4 0 0 0 55 5 5 3 3 3 3 3 3 3 0 0 2 2 2 4 4 4缺√√√√√√√√√√√√√√√页则缺页次数和缺页率为:缺页次数:15 缺页率:15/20=0.751.2 设计目的通过对内存页面置换算法的设计,深入理解虚拟存储管理的原理。

二、总体设计2.1 总体结构LRU页面置换算法自定义页面应用LRU算法EXIT2.2 原理框图-1-1-11-1-112-1125Block2.3 设计原理LRU:最近最久未使用置换算法。

该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的的时间Timer,当须淘汰一个页面时,选择离当前时间最近的一段时间内最久没有使用过的页先淘汰即选择现有页面中其Timer值最大的给予淘汰。

该算法的主要出发点是,如果某页被访问了,则它可能马上还要被访问。

或者反过来说,如果某页很长时间未被访问,则它在最近一段时间也不会被访问。

三、详细设计3.1 数据结构typedef struct pages //定义一个结构体其成员有页面号 //content 和被访问标记timer ; void Init(int QString[20]) //初始化内存块int findSpace(void) //查找是否有空闲内存 int findExist(int curpage) //查找内存中是否有该页面 int findReplace(void) //查找应予置换的页面 void display(void) //显示void LRU(void) //LRU 页面置换算法void BlockClear(void) //清空3.2 程序流程图 开始页面走向存入数组QString[]中,内存块用page[]表示,初始化为0当前QString[]中i 个元素是否已在内存QString[]是否有空i++Y N把page[]中最近最久未使用的页面置换出去,i++把QString[]的内容直接装入最上面一个空内存块,i++YN 输出当前内存块状态结束3.3 代码及注释#include <stdio.h>#include <string.h>#include <iostream>using namespace std;int Bsize=3;int Psize=20;typedef struct pages //定义一个结构体{int content;//页面号int timer;//被访问标记}page;page block[8];//物理块page pages[20];//页面号串void Init(int QString[20]){//初始化int i;for(i=0; i<Bsize; i++){block[i].content = -1;block[i].timer = 0;}for(i=0; i<Psize; i++){pages[i].content = QString[i];pages[i].timer = 0;}}int findSpace(void){//查找是否有空闲内存int i;for(i=0; i<Bsize; i++)if(block[i].content == -1)return i;//找到空闲内存,返回BLOCK中位置return -1;}int findExist(int curpage){//查找内存中是否有该页面int i;for(i=0; i<Bsize; i++)if(block[i].content == pages[curpage].content)return i;//找到内存中有该页面,返回BLOCK中位置return -1;}int findReplace(void){//查找应予置换的页面,被置换的页面的Timer值最大int pos = 0,i;for(i=0; i<Bsize; i++)if(block[i].timer >= block[pos].timer)pos = i;//找到应予置换页面,返回BLOCK中位置return pos;}void display(void){//显示int i;for(i=0; i<Bsize; i++)if(block[i].content != -1)cout<<block[i].content<<" ";cout<<endl;}void LRU(void){//LRU页面置换算法int exist,space,position,n=0,i,j;double p=0,q=0;for(i=0; i<Psize; i++){exist = findExist(i);if(exist != -1){cout<<"不缺页"<<endl;block[exist].timer=0;n++;}else{ //找到空闲分区space = findSpace();if(space != -1){block[space] = pages[i];display();}else{//没有找到空闲分区,需找一个页面进行置换position = findReplace();block[position].timer=0;block[position] = pages[i];display();}}for(j=0; j<Bsize; j++)block[j].timer++;//BLOCK中所有页面TIMER++ }cout<<endl<<"缺页次数为:"<<Psize-n<<endl<<endl;p=(Psize-n)*1.0/Psize;cout<<"缺页率为:"<<p<<endl<<endl;q=n*1.0/Psize;cout<<"命中率为:"<<q<<endl<<endl;}void BlockClear(void){//清空int i;for(i=0; i<Bsize; i++){block[i].content = -1;block[i].timer = 0;}}int main(){int QString[20],i;cout<<endl;cout<<" ┏━━━━━━━━━━━━━━━━━━━━┓"<<endl; cout<<" ┃┃"<<endl; cout<<" ┃┃"<<endl; cout<<" ┃请求页式存储管理中LRU算法的实现┃"<<endl; cout<<" ┃┃"<<endl; cout<<" ┃ 1. 自定义页面┃"<<endl; cout<<" ┃┃"<<endl; cout<<" ┃ 2. 应用LRU算法┃"<<endl; cout<<" ┃┃"<<endl; cout<<" ┃ 3. EXIT ┃"<<endl; cout<<" ┃┃"<<endl; cout<<" ┃┃"<<endl; cout<<" ┣━━━━━━━━━━━━━━━━━━━━┫"<<endl;int select;do{cout<<endl<<"请输入你要进行的操作序号(1~3):";cin>>select;if(select==1){cout<<endl<<"请输入页块数(1-8):";scanf("%d%*c",&Bsize);while(Bsize<1||Bsize>8){cout<<"输入不符合要求,请重新输入:";scanf("%d%*c",&Bsize);}cout<<endl<<"请输入进程数(1-20):";scanf("%d%*c",&Psize);while(Psize<1||Psize>20){cout<<"输入不符合要求,请重新输入:";scanf("%d%*c",&Psize);}cout<<endl<<"请输入页面访问序列:";for(i=0;i<Psize;i++)scanf("%d",&QString[i]);Init(QString);cout<<endl<<endl;cout<<"|******************************************************* ********|"<<endl<<endl;}else if(select==2){cout<<endl<<"LRU算法结果如下:"<<endl;LRU();BlockClear();cout<<"|******************************************************* ********|"<<endl<<endl;}else if(select==3){break;}}while(select==1||select==2||select==3);return 0;}四、运行结果4.1 运行及测试结果进程页块数:3,页面访问序列1 2 5 6 0 3 6 5 3 6 5 6 0 4 2 7 0 4 3 5进程页块数:4,页面访问序列3 2 4 6 1 3 6 4 3 6 5 6 2 4 0 7 1 4 3 5输入不在范围内的进程数和页块数4.2 使用说明书打开终端,输入“g++ -LRU.cpp -o LRU”之后,输入“ ./LRU”运行程序;出现主界面后可以看到三个功能选项,输入要操作的序列号即可;输入1,再输入相应的块数,进程数和页面访问序列即可进行自定义页面;输入2,就会利用LRU页面置换算法进行缺页次数、缺页率和命中率的计算;输入3,退出程序。

相关文档
最新文档