当前位置:文档之家› 虚拟内存页面置换算法实验报告

虚拟内存页面置换算法实验报告

虚拟内存页面置换算法实验报告
虚拟内存页面置换算法实验报告

软件学院

上机实验报告

课程名称:操作系统原理

实验项目:虚拟内存页面置换算法实验室:地狱018

姓名:死神学号:

专业班级:实验时间:2015/12/13

一、实验目的及要求

通过这次实验,加深对虚拟内存页面置换概念的理解,进一步掌握先进先出FIFO、最佳置换OPI和最近最久未使用LRU页面置换算法的实现方法。结合Linux的内层的分析方法查看内存的分配过程及linux kernel的内存管理机制

二、实验性质

设计性

三、实验学时

4学时

四、实验环境

实验环境1.实验环境:C与C++程序设计学习与实验系统

2.知识准备:

(1)使用Linux的基本命令;

(2)了解Linux vmstat、free、top等命令查看linux系统的内存分配

情况;

(3)掌握虚拟内存页面置换算法FIFO等基本算法理论。

五、实验内容及步骤

假设有n个进程分别在T1, … ,Tn时刻到达系统,它们需要的服务时间分别为S1, … ,Sn。分别采用先来先服务FCFS和短作业优先SJF进程调度算法进行调度,计算每个进程的完成时间、周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。

步骤

通过已知最小物理块数、页面个数、页面访问序列、及采用置换方式可以得出页面置换的缺页次数和缺页率,及每次缺页时物理块中存储。

1.输入的形式

int PageOrder[MaxNumber];//页面序列

int PageNum,LackNum=0,BlockNum;//页面个数,缺页次数,最小物理块数

2. 输出的形式

double LackPageRate//缺页率

缺页个数

每次缺页时物理块中存储

程序所能达到的功能

模拟先进先出FIFO、最佳置换OPI和最近最久未使用LRU页面置换算法的工作过程。假设内存中分配给每个进程的最小物理块数为m,在进程运行过程中要访问的页面个数为n,页面访问序列为P1, … ,Pn,分别利用不同的页面置换算法调度进程的页面访问序列,给出页面访问序列的置换过程,计算每种算法缺页次数和缺页率。测试数据,包括正确的输入及其输出结果和含有错误的输入及其输出结果。

程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。

int PageOrder[MaxNumber];//页面序列

int PageCount[MaxNumber]={0};//计算内存内数据离下一次出现的距离

int PageNum,LackNum=0,BlockNum;//页面个数,缺页次数,最小物理块数

double LackPageRate=0;

bool found=false;

六、实验数据及结果分析

运行截图:

图6.1

图6.2

图6.3

七、实验总结

这次试验,让我加深了对虚拟内存页面置换算法的理解,进一步掌握先进先出FIFO、最佳置换OPI和最近最久未使用LRU页面置换算法的实现方法。熟悉Linux需要经过大量的实验、改进与思考,在编写代码的过程中遇到了一些问题要积极面对并通过讨论上网或者问老师解决。通过这次试验我了解了虚拟内存置换算法的一些知识,是我对于所学习的专业知识得到了更好的巩固和提升。

附录源程序清单

#include

using namespace std;

#define MaxNumber 100

void OPI(int PageOrder[MaxNumber],int PageCount[MaxNumber],

int PageNum,int LackNum,int BlockNum, double LackPageRate,bool found)

{

int module[MaxNumber];

int sum=0;

int i,j,k,m;

for(i=0;i

{

module[i]=PageOrder[i];

sum++;

页面置换算法模拟程序-附代码

目录 1.问题的提出 (2) 1.1关于页面置换算法模拟程序问题的产生 (2) 1.2任务分析 (2) 2.需求分析 (2) 3.方案设计 (3) 4.总体设计 (4) 4.1程序N-S图 (4) 4.2主要的函数 (4) 4.3主要流程图及代码 (5) 4.3.1 FIFO(先进先出) (5) 4.3.2 LRU(最近最久未使用) (6) 4.3.3 OPT(最佳置换算法) (8) 4.4实现结果 (11) 5.程序测试 (14) 5.1设计测试数据 (14) 5.2测试结果及分析 (15) 摘要 随着计算机的普及人们的物质生活得到了极大的满足,人们在精神生活方面同样也需要

提高,所以越来越多的人进行着各种各样的学习。操作系统是计算机教学中最重要的环节之一,也是计算机专业学生的一门重要的专业课程。操作系统质量的好坏,直接影响整个计算机系统的性能和用户对计算机的使用。一个精心设计的操作系统能极大地扩充计算机系统的功能,充分发挥系统中各种设备的使用效率,提高系统工作的可靠性。由于操作系统涉及计算机系统中各种软硬件资源的管理,内容比较繁琐,具有很强的实践性。要学好这门课程,必须把理论与实践紧密结合,才能取得较好的学习效果. 本课程设计是学生学习完《操作系统教程》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。 熟悉页面置换算法及其实现,引入计算机系统性能评价方法的概念。 关键词:编制页面置换算法模拟程序、打印页面、FIFO页面算法、LRU页面置换算法、OPT页面置换算法。

实验报告三-虚拟内存页面置换算法

实验报告三-虚拟内存页面置换算法

实验报告三虚拟内存页面置换算法 班级学号姓名 一、实验目的 通过这次实验,加深对虚拟内存页面置换概念的理解,进一步掌握先进先出FIFO,最佳置换OPI和最近最久未使用LRU页面置换算法的实现方法。 二、实验的开发环境 1. 硬件设备:PC机一台 2. 软件环境:安装Windows操作系统或者Linux 操作系统,并安装相关的程序开发环境,如 C \C++\Java 等编程语言环境。 三、实验设计思路 问题描述: 设计程序模拟先进先出FIFO,最佳置换OPI 和最近最久未使用LRU页面置换算法的工作过程。假设内存中分配给每个进程的最小物理块数为m,在进程运行过程中要访问的页面个数为n,页面访问序列为P1, … ,Pn,分别利用不同的页面置换算法调度进程的页面访问序列,给出页面访问序列的置换过程,计算每种算法缺页次数和缺页率。 四、实验内容及结果 程序要求如下:

1)利用先进先出FIFO,最佳置换OPI和最近最久未使用LRU三种页面置换算法模拟页面访问过程。 2)模拟三种算法的页面置换过程,给出每个页面访问时的内存分配情况。 3)输入:最小物理块数m,页面个数n,页面访问序列P1, …,Pn,算法选择1-FIFO,2-OPI,3-LRU。 4)输出:每种算法的缺页次数和缺页率。 程序源码如下: #include "iostream.h" const int DataMax=100; const int BlockNum = 10; int DataShow[BlockNum][DataMax]; // 用于存储要显示的数组 bool DataShowEnable[BlockNum][DataMax]; // 用于存储数组中的数据是否需要显示 //int Data[DataMax]={4,3,2,1,4,3,5,4,3,2,1,5,6,2,3,7,1,2,6,1}; // 测试数据 //int N = 20; // 输入页面个数 int Data[DataMax]; // 保存数据 int Block[BlockNum]; // 物理块 int count[BlockNum]; // 计数器 int N ; // 页面个数 int M;//最小物理块数 int ChangeTimes; void DataInput(); // 输入数据的函数 void DataOutput(); void FIFO(); // FIFO 函数 void Optimal(); // Optimal函数 void LRU(); // LRU函数 ///* int main(int argc, char* argv[]) { DataInput();// DataInput(); // FIFO(); // Optimal(); // LRU(); // return 0; int menu; while(true)

页面置换算法实验报告

一、实验目的 通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的特点,掌握虚拟存储请求页式存储管理中几种基本页面置换算法的基本思想和实现过程,并比较它们的效率。 二、实验内容 基于一个虚拟存储区和内存工作区,设计下述算法并计算访问命中率。 1、最佳淘汰算法(OPT) 2、先进先出的算法(FIFO) 3、最近最久未使用算法(LRU) 4、简单时钟(钟表)算法(CLOCK) 命中率=1-页面失效次数/页地址流(序列)长度 三、实验原理 UNIX中,为了提高内存利用率,提供了内外存进程对换机制;内存空间的分配和回收均以页为单位进行;一个进程只需将其一部分(段或页)调入内存便可运行;还支持请求调页的存储管理方式。 当进程在运行中需要访问某部分程序和数据时,发现其所在页面不在内存,就立即提出请求(向CPU发出缺中断),由系统将其所需页面调入内存。这种页面调入方式叫请求调页。为实现请求调页,核心配置了四种数据结构:页表、页帧(框)号、访问位、修改位、有效位、保护位等。 当CPU接收到缺页中断信号,中断处理程序先保存现场,分析中断原因,转入缺页中断处理程序。该程序通过查找页表,得到该页所在外存的物理块号。如果此时内存未满,能容纳新页,则启动磁盘I/O将所缺之页调入内存,然后修改页表。如果内存已满,则须按某种置换算法从内存中选出一页准备换出,是否重新写盘由页表的修改位决定,然后将缺页调入,修改页表。利用修改后的页表,去形成所要访问数据的物理地址,再去访问内存数据。整个页面的调入过程对用户是透明的。 四、算法描述 本实验的程序设计基本上按照实验内容进行。即使用srand( )和rand( )函数定义和产生指令序列,然后将指令序列变换成相应的页地址流,并针对不同的算法计算出相应的命中率。 (1)通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成:A:50%的指令是顺序执行的 B:25%的指令是均匀分布在前地址部分 C:25%的指令是均匀分布在后地址部分 具体的实施方法是: A:在[0,319]的指令地址之间随机选取一起点m B:顺序执行一条指令,即执行地址为m+1的指令 C:在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’ D:顺序执行一条指令,其地址为m’+1

虚拟存储器管理 页面置换算法模拟实验

淮海工学院计算机工程学院实验报告书 课程名:《操作系统原理A 》 题目:虚拟存储器管理 页面置换算法模拟实验 班级:软件*** 学号:20**1228** 姓名:****

一、实验目的与要求 1.目的: 请求页式虚存管理是常用的虚拟存储管理方案之一。通过请求页式虚存管理中对页面置换算法的模拟,有助于理解虚拟存储技术的特点,并加深对请求页式虚存管理的页面调度算法的理解。 2.要求: 本实验要求使用C语言编程模拟一个拥有若干个虚页的进程在给定的若干个实页中运行、并在缺页中断发生时分别使用FIFO和LRU算法进行页面置换的情形。其中虚页的个数可以事先给定(例如10个),对这些虚页访问的页地址流(其长度可以事先给定,例如20次虚页访问)可以由程序随机产生,也可以事先保存在文件中。要求程序运行时屏幕能显示出置换过程中的状态信息并输出访问结束时的页面命中率。程序应允许通过为该进程分配不同的实页数,来比较两种置换算法的稳定性。 二、实验说明 1.设计中虚页和实页的表示 本设计利用C语言的结构体来描述虚页和实页的结构。 在虚页结构中,pn代表虚页号,因为共10个虚页,所以pn的取值范围是0—9。pfn代表实页号,当一虚页未装入实页时,此项值为-1;当该虚页已装入某一实页时,此项值为所装入的实页的实页号pfn。time项在FIFO算法中不使用,在LRU中用来存放对该虚页的最近访问时间。 在实页结构中中,pn代表虚页号,表示pn所代表的虚页目前正放在此实页中。pfn代表实页号,取值范围(0—n-1)由动态指派的实页数n所决定。next是一个指向实页结构体的指针,用于多个实页以链表形式组织起来,关于实页链表的组织详见下面第4点。 2.关于缺页次数的统计 为计算命中率,需要统计在20次的虚页访问中命中的次数。为此,程序应设置一个计数器count,来统计虚页命中发生的次数。每当所访问的虚页的pfn项值不为-1,表示此虚页已被装入某实页内, 此虚页被命中,count加1。最终命中率=count/20*100%。 3.LRU算法中“最近最久未用”页面的确定 为了能找到“最近最久未用”的虚页面,程序中可引入一个时间计数器countime,每当要访问 一个虚页面时,countime的值加1,然后将所要访问的虚页的time项值设置为增值后的当前

实验四页面置换算法代码

实验四页面置换算法模拟(2)一.题目要求: 设计一个虚拟存储区和内存工作区,编程序演示下述算法的具体实现过程,并计算访问命中率: 要求设计主界面以灵活选择某算法,且以下算法都要实现 1) 最佳置换算法(OPT):将以后永不使用的或许是在最长(未来)时间内不再 被访问的页面换出。 2) 先进先出算法(FIFO):淘汰最先进入内存的页面,即选择在内存中驻留 时间最久的页面予以淘汰。 3) 最近最久未使用算法(LRU):淘汰最近最久未被使用的页面。 4) 最不经常使用算法(LFU) 二.实验目的: 1、用C语言编写OPT、FIFO、LRU,LFU四种置换算法。 2、熟悉内存分页管理策略。 3、了解页面置换的算法。 4、掌握一般常用的调度算法。 5、根据方案使算法得以模拟实现。 6、锻炼知识的运用能力和实践能力。

三.相关知识: 1.虚拟存储器的引入: 局部性原理:程序在执行时在一较短时间内仅限于某个部分;相应的,它所访问的存储空间也局限于某个区域,它主要表现在以下两个方面:时间局限性和空间局限性。 2.虚拟存储器的定义: 虚拟存储器是只具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统。 3.虚拟存储器的实现方式: 分页请求系统,它是在分页系统的基础上,增加了请求调页功能、页面置换功能所形成的页面形式虚拟存储系统。 请求分段系统,它是在分段系统的基础上,增加了请求调段及分段置换功能后,所形成的段式虚拟存储系统。 4.页面分配: 平均分配算法,是将系统中所有可供分配的物理块,平均分配给各个进程。 按比例分配算法,根据进程的大小按比例分配物理块。 考虑优先的分配算法,把内存中可供分配的所有物理块分成两部分:一部分按比例地分配给各进程;另一部分则根据个进程的优先权,适当的增加其相应份额后,分配给各进程。 5.页面置换算法: 常用的页面置换算法有OPT、FIFO、LRU、Clock、LFU、PBA等。

LRU页面调度算法实现

LRU页调度算法实现 学院计算机科学与技术专业计算机科学与技术学号 学生姓名 指导教师姓名

2014年3月15日 一、设计目的、内容与要求 (一)目的: 操作系统课程设计是计算机专业重要的教学环节,为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。 (1)进一步巩固和复习操作系统的基础知识。 (2)培养学生结构化程序、模块化程序设计的方法和能力。 (3)提高学生调试程序的技巧和软件设计的能力。 (4)提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。(二)内容: 程序应模拟实现LRU算法思想,对n个页面实现模拟调度。 (三)要求: 1.不同的功能使用不同的函数实现(模块化),对每个函数的功能和调用接口要 注释清楚。对程序其它部分也进行必要的注释。 2.对系统进行功能模块分析、画出总流程图和各模块流程图。

3.用户界面要求方便、简洁明了、美丽大方、格式统一。所有功能可以反复使 用,最好使用菜单。 4.通过命令相应选项能直接进入某个相应菜单选项的功能模块。 所有程序需调试通过。 二、算法的基本思想 LRU是Least Recently Used 近期最少使用算法。 内存管理的一种页面置换算法,对于在内存中但又不用的数据块(内存块)叫做LRU,Oracle会根据哪些数据属于LRU而将其移出内存而腾出空间来加载另外的数据。 什么是LRU算法?LRU是Least Recently Used的缩写,即最少使用页面置换算法,是为虚拟页式存储管理服务的。关于操作系统的内存管理,如何节省利用容量不大的内存为最多的进程提供资源,一直是研究的重要方向。而内存的虚拟存储管理,是现在最通用,最成功的方式——在内存有限的情况下,扩展一部分外存作为虚拟内存,真正的内存只存储当前运行时所用得到信息。这无疑极大地扩充了内存的功能,极大地提高了计算机的并发度。虚拟页式存储管理,则是将进程所需空间划分为多个页面,内存中只存放当前所需页面,其余页面放入外存的管理方式。 程序中用到了if,switch选择语句,和for循环语句进行编程。 If语句基本格式为: If (表达式) 语句1 else

操作系统 虚拟内存页面置换算法 java版

实验五虚拟内存页面置换算法 1、实验目的 通过这次实验,加深对虚拟内存页面置换概念的理解,进一步掌握先进先出FIFO、最佳置换OPI和最近最久未使用LRU页面置换算法的实现方法。 2、试验内容 问题描述: 设计程序模拟先进先出FIFO、最佳置换OPI和最近最久未使用LRU页面置换算法的工作过程。假设内存中分配给每个进程的最小物理块数为m,在进程运行过程中要访问的页面个数为n,页面访问序列为P1, … ,P n,分别利用不同的页面置换算法调度进程的页面访问序列,给出页面访问序列的置换过程,计算每种算法缺页次数和缺页率。 3、程序要求: 1)利用先进先出FIFO、最佳置换OPI和最近最久未使用LRU 三种页面置换算法模拟页面访问过程。 2)模拟三种算法的页面置换过程,给出每个页面访问时的内存分配情况。 3)输入:最小物理块数m,页面个数n,页面访问序列P1, … ,P n,算法选择1-FIFO,2-OPI,3-LRU。 4)输出:每种算法的缺页次数和缺页率。 4、需求分析

(1) 输入的形式和输入值的范围算法选择 物理块数 页面个数 页面访问序列P1, …,Pn (2) 输出的形式 每种算法的缺页次数和缺页率(3)测试用例 引用率 70 77 01 7 1 2 2 1 03 2 3 04 2 4 3 230321 2 1 2017 7 1 01 页框(物理块)2 0 3 引用率 70 77 01 7 1 2 2 1 03 2 3 1 04 4 3 230321 1 3 2017 7 2 01 页框2 3 4 2 4 2 3 2 3 1 2 7 1 2 7 1 1 引用率 70 77 01 7 1 2 2 1 03 2 3 04 4 3 230321 1 3 2 2017 1 7 01 页框4 2 4 3 2 3 2 1 2

第7次 常用页面置换算法模拟实验

操作系统课程实验报告

断。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。最简单的页面置换算法是先入先出(FIFO)法。 2、算法流程图 3、步骤说明 (1)初始化 void init(){//初始化 int i; for (i = 0; i < page_frame_number; i++){ page_table[i].page_id = -1; page_table[i].load_time = -1; page_table[i].last_visit_time = -1; } } (2)选择算法,输入插入页面号。进入判断函数 int judge(){//判断页框是否满,或者页框里面是否已存在页面 int i;

for (i = 0; i < page_frame_number; i++){ if (page_table[i].page_id == -1 || page_table[i].page_id == page_id) return i; } return -2; } 之后根据返回数的不同决定了不同类型 返回-2则说明页框满且页框里面没有存在要插入的页面。 返回-1则说明页框未满 返回其它数则说明页框里存在相同的页面 (3)//当没有空页框,并且页面本身也没有存在,则执行一下代码 qsort(page_table, page_frame_number, sizeof(struct Page_table), cmp);//按照装入时间从小到大排序 page_table[0].page_id = page_id; page_table[0].load_time = counter; page_table[0].last_visit_time = counter; page_interrupt_number++; 将页框号为0的页面置换成最新插入的页面。 int cmp(const void *p, const void *q){//按照装入时间从小到大排序 int c = (*(struct Page_table*)p).load_time - (*(struct Page_table*)q).load_time; if (c > 0) return 1; else return -1; } 排序函数,将页面按装入时间从小到大排序 (4)//如果页面未满,则将页面替换在空页框里 if (page_table[j].page_id == -1){ page_table[j].page_id = page_id; page_table[j].load_time = counter; page_table[j].last_visit_time = counter; page_interrupt_number++; 则将页面替换在页框号最小的空页框里 (5)//如果页面本身存在页框中,则执行一下代码 page_table[j].last_visit_time = counter; 则更新页面的最近访问时间 (6)qsort(page_table, page_frame_number, sizeof(struct Page_table), cmp3);//按照装入时间从小到大排序 print(2); 打印出页表详细信息 printf("页表信息:\n页号页框号装入时间最近访问时间\n"); for (j = 0; j < page_frame_number; j++){ printf("%4d%8d%7d%7d\n", page_table[j].page_id, j, page_table[j].load_time,

操作系统实验4(虚拟内存页面置换算法)

操作系统实验报告四 【实验题目】 虚拟内存页面置换算法 【实验目的】 通过这次实验,加深对虚拟内存页面置换概念的理解,进一步掌握先进先出FIFO,最佳置换OPI和最近最久未使用LRU页面置换算法的实现方法。 【实验内容】 问题描述: 设计程序模拟先进先出FIFO,最佳置换OPI和最近最久未使用LRU页面置换算法的工作过程。假设内存中分配给每个进程的最小物理块数为m,在进程运行过程中要访问的页面个数为n,页面访问序列为P1, …,Pn,分别利用不同的页面置换算法调度进程的页面访问序列,给出页面访问序列的置换过程,计算每种算法缺页次数和缺页率。 程序要求如下: 1)利用先进先出FIFO,最佳置换OPI和最近最久未使用LRU三种页面置换算法模拟页面访问过程。 2)模拟三种算法的页面置换过程,给出每个页面访问时的内存分配情况。 3)输入:最小物理块数m,页面个数n,页面访问序列P1, … ,Pn,算法选择1-FIFO,2-OPI,3-LRU。 4)输出:每种算法的缺页次数和缺页率。 【实验要求】 1) 上机前认真复习页面置换算法,熟悉FIFO,OPI,LRU三种页面分配和置换算法的过程; 2) 上机时独立编程、调试程序; 3) 根据具体实验要求,完成好实验报告(包括实验的目的、内容、要求、源程序、实例运行结果截图)。 【源代码】 //--------------- YeMianZhiHuan.cpp ----------------- #include "iostream.h" const int DataMax=100; const int BlockNum = 10; int DataShow[BlockNum][DataMax]; // 用于存储要显示的数组 bool DataShowEnable[BlockNum][DataMax]; // 用于存储数组中的数据是否需要显示

页面置换算法实验报告

页面置换算法实验报告

一、实验目的: 设计和实现最佳置换算法、随机置换算法、先进先出置换算法、最近最久未使用置换算法、简单Clock置换算法及改进型Clock置换算法;通过支持页面访问序列随机发生实现有关算法的测试及性能比较。 二、实验内容: ●虚拟内存页面总数为N,页号从0到N-1 ●物理内存由M个物理块组成 ●页面访问序列串是一个整数序列,整数的取值范围为0到N - 1。页面访问序 列串中的每个元素p表示对页面p的一次访问 ●页表用整数数组或结构数组来表示 ?符合局部访问特性的随机生成算法 1.确定虚拟内存的尺寸N,工作集的起始位置p,工作集中包含的页 数e,工作集移动率m(每处理m个页面访问则将起始位置p +1), 以及一个范围在0和1之间的值t; 2.生成m个取值范围在p和p + e间的随机数,并记录到页面访问序 列串中; 3.生成一个随机数r,0 ≤r ≤1; 4.如果r < t,则为p生成一个新值,否则p = (p + 1) mod N; 5.如果想继续加大页面访问序列串的长度,请返回第2步,否则结束。 三、实验环境: 操作系统:Windows 7 软件:VC++6.0 四、实验设计: 本实验包含六种算法,基本内容相差不太,在实现方面并没有用统一的数据结构实现,而是根据不同算法的特点用不同的数据结构来实现: 1、最佳置换和随机置换所需操作不多,用整数数组模拟内存实现; 2、先进先出置换和最近最久未使用置换具有队列的特性,故用队列模拟内 存来实现; 3、CLOCK置换和改进的CLOCK置换具有循环队列的特性,故用循环队 列模拟内存实现; 4、所有算法都是采用整数数组来模拟页面访问序列。

操作系统页面置换算法模拟实验

淮海工学院计算机科学系实验报告书 课程名:《操作系统原理A 》 题目:虚拟存储器管理 页面置换算法模拟实验 班级: 学号: 姓名:

一、实验目的与要求 1.目的: 请求页式虚存管理是常用的虚拟存储管理方案之一。通过请求页式虚存管理中对页面置换算法的模拟,有助于理解虚拟存储技术的特点,并加深对请求页式虚存管理的页面调度算法的理解。 2.要求: 本实验要求使用C语言编程模拟一个拥有若干个虚页的进程在给定的若干个实页中运行、并在缺页中断发生时分别使用FIFO和LRU算法进行页面置换的情形。其中虚页的个数可以事先给定(例如10个),对这些虚页访问的页地址流(其长度可以事先给定,例如20次虚页访问)可以由程序随机产生,也可以事先保存在文件中。要求程序运行时屏幕能显示出置换过程中的状态信息并输出访问结束时的页面命中率。程序应允许通过为该进程分配不同的实页数,来比较两种置换算法的稳定性。 二、实验说明 1.设计中虚页和实页的表示 本设计利用C语言的结构体来描述虚页和实页的结构。 在虚页结构中,pn代表虚页号,因为共10个虚页,所以pn的取值范围是0—9。pfn代表实页号,当一虚页未装入实页时,此项值为-1;当该虚页已装入某一实页时,此项值为所装入的实页的实页号pfn。time项在FIFO算法中不使用,在LRU中用来存放对该虚页的最近访问时间。 在实页结构中中,pn代表虚页号,表示pn所代表的虚页目前正放在此实页中。pfn代表实页号,取值范围(0—n-1)由动态指派的实页数n所决定。next是一个指向实页结构体的指针,用于多个实页以链表形式组织起来,关于实页链表的组织详见下面第4点。 2.关于缺页次数的统计 为计算命中率,需要统计在20次的虚页访问中命中的次数。为此,程序应设置一个计数器count,来统计虚页命中发生的次数。每当所访问的虚页的pfn项值不为-1,表示此虚页已被装入某实页内, 此虚页被命中,count加1。最终命中率=count/20*100%。 3.LRU算法中“最近最久未用”页面的确定 为了能找到“最近最久未用”的虚页面,程序中可引入一个时间计数器countime,每当要访问 一个虚页面时,countime的值加1,然后将所要访问的虚页的time项值设置为增值后的当前

6.3页面置换1.页面置换的发生时机如果增加多道程序运行,就会过度

6.3页面置换 1. 页面置换的发生时机 如果增加多道程序运行,就会过度分配(over-allocating)内存。例如运行6个进程,且每个进程有10页大小但事实上只使用其中的5页,那么就获得了更高的CPU利用率和吞吐量,且有10帧可作备用。然而,每个进程有可能会突然试图使用其所有的10页,从而产生共60帧的总需求,而实际物理内存只有40帧可用。 再者,还需要考虑到内存不是仅用于保存程序的页面。I/O 缓存也需使用大量的内存。这种使用会增加内存分配算法的压力。在I/O缓存和程序页面之间平衡内存的分配是个棘手问题。有的系统为I/O 缓存分配了一定比例的内存,而另一些系统则允许用户进程和I/O 与系统竞争使用所有系统内存。 内存的过度分配会导致以下问题:当一个用户进程执行时,发生一个缺页中断。此时操作系统会确定所需页在磁盘上的位置,但是却发现空闲帧列表上并没有空闲帧,所有内存都正在使用(见图6.8) 。 图6.8 需要页置换的情况 这时操作系统会有若干选择。它可以终止用户进程。然而,按需调页是操作系统试图改善计算机系统的使用率和吞吐量的技术。用户并不关心其进程是否运行在调页系统上:调页对用户而言应是透明的。因此,这种选项并不是最佳选择。 操作系统也可以交换出一个进程,以释放其所有帧,并降低多道程序的级别。这种选择在有些环境下是好的,但更为常用的解决方法是页面置换(page replacement)。 在进程运行过程中,如果发生缺页,而此时内存中又无空闲块时,为了保证进程能正常运行,需要从内存中调出一页程序或数据送到磁盘的对换区。这个操作叫做页面置换。 决定将哪个页面调出必须根据页面置换算法(replacement policy)来确定。目标一般是将那些以后不再被访问或在较长时间内不会再被访问的页调出。置换算法通常会在局部性原理指导下依据历史统计数据进行预测。 2. 基本页置换 页置换采用如下方法。如果没有空闲帧,那么就查找当前未使用的帧,并将其释放。可采用这样的方式来释放一个帧:将其内容写到交换空间,并改变页表(和所有其他表)以表示

页面置换算法实验报告

操作系统课程设计报告课程名称:操作系统课程设计 课程设计题目:页面置换算法 学院:计算机科学与技术学院 专业:科技 小组成员: 庞思慧E01114081 王蒙E01114161 姚慧乔E01114349 朱潮潮E01114408 指导老师:邱剑锋

目录 1 实验目的 (3) 2 实验要求 (3) 3 实验内容与步骤 (3) 4 算法思想 (4) 5 模块设计 (4) 6 程序设计 (5) 7 测试结果 (7) 8 结果分析 (9) 9 程序代码 (9) 10 课程设计小结 (24)

页面置换算法模拟设计 1.实验目的 (1)通过模拟实现几种基本页面置换的算法,了解虚拟存储技术的特点。 (2)掌握虚拟存储请求页式存储管理中几种基本页面置换算法的基本思想,并至少用三种算法来模拟实现。 (3)通过对几种置换算法命中率的比较,来对比他们的优缺点。 2.实验要求 计算并输出下述各种算法在不同内存容量下的命中率。 A 先进先出的算法(FIFO) B 最近最少使用算法(LRU) C最佳淘汰算法(OPT) 3.实验内容与步骤 (1)通过随机数产生一个指令序列,共320条指令,具体的实施方法是: A.[0,319]的指令地址之间随机选取一起点M; B.顺序执行一条指令,即执行地址为M+1的指令; C.在前地址[0,M+1]中随机选取一条指令并执行,该指令的地址为M’; D.顺序执行一条指令,其地址为M’+1; E.在后地址[M’+2,319]中随机选取一条指令并执行; F.重复A—E,直到执行320次指令。 (2)指令序列变换成页地址流 A.页面大小为1K; B.用户内存容量为4页到32页;

页面置换算法实验(内含完整代码)

实验二存储管理 一、实验目的 通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的特点,掌握虚拟存储请求页式存储管理中几种基本页面置换算法的基本思想和实现过程,并比较它们的效率。 二、实验内容 基于一个虚拟存储区和内存工作区,设计下述算法并计算访问命中率。 1、最佳淘汰算法(OPT) 2、先进先出的算法(FIFO) 3、最近最久未使用算法(LRU) 4、简单时钟(钟表)算法(CLOCK) 命中率=1-页面失效次数/页地址流(序列)长度 三、实验原理简述 UNIX中,为了提高内存利用率,提供了内外存进程对换机制;内存空间的分配和回收均以页为单位进行;一个进程只需将其一部分(段或页)调入内存便可运行;还支持请求调页的存储管理方式。 当进程在运行中需要访问某部分程序和数据时,发现其所在页面不在内存,就立即提出请求(向CPU发出缺中断),由系统将其所需页面调入内存。这种页面调入方式叫请求调页。为实现请求调页,核心配置了四种数据结构:页表、页帧(框)号、访问位、修改位、有效位、保护位等。 当CPU接收到缺页中断信号,中断处理程序先保存现场,分析中断原因,转入缺页中断处理程序。该程序通过查找页表,得到该页所在外存的物理块号。如果此时内存未满,能容纳新页,则启动磁盘I/O将所缺之页调入内存,然后修改页表。如果内存已满,则须按某种置换算法从内存中选出一页准备换出,是否重新写盘由页表的修改位决定,然后将缺页调入,修改页表。利用修改后的页表,去形成所要访问数据的物理地址,再去访问内存数据。整个页面的调入过程对用户是透明的。 四、算法描述 本实验的程序设计基本上按照实验内容进行。即使用srand( )和rand( )函数定义和产生指令序列,然后将指令序列变换成相应的页地址流,并针对不同的算法计算出相应的命中率。 (1)通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成:A:50%的指令是顺序执行的 B:25%的指令是均匀分布在前地址部分 C:25%的指令是均匀分布在后地址部分 具体的实施方法是: A:在[0,319]的指令地址之间随机选取一起点m B:顺序执行一条指令,即执行地址为m+1的指令

LRU页面调度算法实现

LRU页面调度算法实现 学院计算机科学与技术专业计算机科学与技术学号 学生姓名 指导教师姓名 2014年3月16 日

目录 1.实验要求 (2) 2.实验目的 (2) 3.实验内容 (2) 4.相关知识 (2) 5.实验原理 (3) 6.流程图 (4) 7.源代码 (5) 8.运行结果 (9) 9.实验心得 (10) 10.参考文献 (11)

LRU页调度算法实现 一实验要求: 1.不同的功能使用不同的函数实现(模块化),对每个函数的功能和调用接口要注释清 楚。对程序其它部分也进行必要的注释。 2.对系统进行功能模块分析、画出总流程图和各模块流程图。 3.用户界面要求使用方便、简洁明了、美观大方、格式统一。所有功能可以反复使用,最好使用菜单。 4.通过命令行相应选项能直接进入某个相应菜单选项的功能模块。 5.所有程序需调试通过。 二实验目的: 将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。进一步巩固和复习操作系统的基础知识。培养学生结构化程序、模块化程序设计的方法和能力。提高学生调试程序的技巧和软件设计的能力。提高学生分析问题、解决问题以及综合利用C 语言进行程序设计的能力。 三实验内容: 程序应模拟实现LRU 算法思想,对n个页面实现模拟调度。 四相关知识: 1.虚拟存储器的引入: 局部性原理:程序在执行时在一较短时间内仅限于某个部分;相应的,它所访问的存储空间也局限于某个区域,它主要表现在以下两个方面:时间局限性和空间局限性。 2.虚拟存储器的定义:

虚拟存储器是只具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统。 3.虚拟存储器的实现方式: 分页请求系统,它是在分页系统的基础上,增加了请求调页功能、页面置换功能所形成的页面形式虚拟存储系统。 请求分段系统,它是在分段系统的基础上,增加了请求调段及分段置换功能后,所形成的段式虚拟存储系统。 五.实验原理: 目前有许多页面调度算法,本实验主要涉及最近最久未使用调度算法。本实验使用页面调度算法时作如下假设,进程在创建时由操作系统为之分配一个固定数目物理页,执行过程中物理页的数目和位置不会改变。也即进程进行页面调度时只能在分到的几个物理页中进行。 LRU基本思想: LRU是Least Recently Used的缩写,即最近最少使用页面置换算法,是为虚拟页式存储管理服务的。 关于操作系统的内存管理,如何节省利用容量不大的内存为最多的进程提供资源,一直是研究的重要方向。而内存的虚拟存储管理,是现在最通用,最成功的方式——在内存有限的情况下,扩展一部分外存作为虚拟内存,真正的内存只存储当前运行时所用得到信息。这无疑极大地扩充了内存的功能,极大地提高了计算机的并发度。虚拟页式存储管理,则是将进程所需空间划分为多个页面,内存中只存放当前所需页面,其余页面放入外存的管理方式。 LRU算法的提出,是基于这样一个事实:在前面几条指令中使用频繁的页面很可能在后面的几条指令中频繁使用。反过来说,已经很久没有使用的页面很可能在未来较长的一段时间内不会被用到。这个,就是著名的局部性原理——比内存速度还要快的cache,也是基于同样的原理运行的。因此,我们只需要在每次调换时,找到最近最少使用的那个页面调出内存。这就是LRU算法的全部内容。 实验中是用一维数组page[pSIZE]存储页面号序列,memery[mSIZE]是存储装入物理块中的页面。数组flag[10]标记页面的访问时间。每当使用页面时,刷新访问时间。发生缺页时,就从物理块中页面标记最小的一页,调出该页,换入所缺的页面。

虚拟内存页面置换算法实验报告

软件学院 上机实验报告 课程名称:操作系统原理 实验项目:虚拟内存页面置换算法实验室:地狱018 姓名:死神学号: 专业班级:实验时间:2015/12/13

一、实验目的及要求 通过这次实验,加深对虚拟内存页面置换概念的理解,进一步掌握先进先出FIFO、最佳置换OPI和最近最久未使用LRU页面置换算法的实现方法。结合Linux的内层的分析方法查看内存的分配过程及linux kernel的内存管理机制 二、实验性质 设计性 三、实验学时 4学时 四、实验环境 实验环境1.实验环境:C与C++程序设计学习与实验系统 2.知识准备: (1)使用Linux的基本命令; (2)了解Linux vmstat、free、top等命令查看linux系统的内存分配 情况; (3)掌握虚拟内存页面置换算法FIFO等基本算法理论。 五、实验内容及步骤 假设有n个进程分别在T1, … ,Tn时刻到达系统,它们需要的服务时间分别为S1, … ,Sn。分别采用先来先服务FCFS和短作业优先SJF进程调度算法进行调度,计算每个进程的完成时间、周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。

步骤 通过已知最小物理块数、页面个数、页面访问序列、及采用置换方式可以得出页面置换的缺页次数和缺页率,及每次缺页时物理块中存储。 1.输入的形式 int PageOrder[MaxNumber];//页面序列 int PageNum,LackNum=0,BlockNum;//页面个数,缺页次数,最小物理块数 2. 输出的形式 double LackPageRate//缺页率 缺页个数 每次缺页时物理块中存储 程序所能达到的功能 模拟先进先出FIFO、最佳置换OPI和最近最久未使用LRU页面置换算法的工作过程。假设内存中分配给每个进程的最小物理块数为m,在进程运行过程中要访问的页面个数为n,页面访问序列为P1, … ,Pn,分别利用不同的页面置换算法调度进程的页面访问序列,给出页面访问序列的置换过程,计算每种算法缺页次数和缺页率。测试数据,包括正确的输入及其输出结果和含有错误的输入及其输出结果。 程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。 int PageOrder[MaxNumber];//页面序列 int PageCount[MaxNumber]={0};//计算内存内数据离下一次出现的距离 int PageNum,LackNum=0,BlockNum;//页面个数,缺页次数,最小物理块数 double LackPageRate=0; bool found=false;

实验五存储管理常用页面置换算法模拟实验

大理大学课程教案 (实验教学) 课程名称:操作系统 课程类型:( 1 )1、必修;2、选修;3、其它 授课对象:计算机科学与技术专业(本)2013级1、2班授课时间: 2015 至 2016 学年 2 学期 计划学时: 48 学时(其中:理论 32 ,实验: 16 ) 任课教师:曾新 所属学院:数学与计算机学院 课程管理部门(教研室):硬件教研室 大理大学教务处制

大理大学课程教案(教学要求) 课程名称:操作系统 教材:计算机操作系统教程(第3版)、清华大学出版社 授课人:曾新专业技术职务:助教 学历:研究生学位:硕士 实验题目:存储管理常用页面置换算法模拟实验计划学时:6 实验类型:(2)1、演示性2、验证性3、综合性4、设计性 每组实验的学生人数:2人 教学目的和要求: 1、通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟 存储技术的特点,掌握虚拟存储请求页式存储管理中几种基本页面置换算法的基本思想和实现过程。 2、做图分析并比较各种算法的效率 实验方法(包括实验中需要注意的问题等): 1、给出操作内容要求学生自己动手完成 2、注意程序的输入并分析运行结果 实验重点(主要解决的问题和达到的目的): 1、存储管理常用页面置换算法模拟实验的实现过程 2、各种算法的效率分析与比较 实验难点(预计实验过程中会遇到的问题和解决方案): 1、存储管理常用页面置换算法模拟实验的实现过程 2、实验结果的分析 教学方法(实验前的教学和实验过程中的指导方法): 以学生自己查阅资料为主,教师辅导为辅。 实验仪器和材料: 计算机并安装有Red Hat Linux9.0操作系统。 实验报告要求和思考题: 认真填写实验报告并根据讲义完成思考题 参考资料: 《计算机操作系统教程(第3版)习题解答与实验指导》、清华大学出版社

操作系统实验报告6-页面置换算法模拟

操作系统实验报告6-页面置换算法模拟

实验报告 ( 2013 / 2014学年第1学期) 课程名称操作系统原理 实验名称实验6:页面置换算法模拟 实验时间2013 年12 月 10 日 指导单位软件工程系 指导教师杨健 学生姓名班级学号 学院(系) 软件工程系专业计算机软件与服务外包

//本?程ì序ò中D全?局?变?量?名?均ù由?两?个?单蹋?词洙?组哩?成é,?且ò开a头?字?母?大洙?写′int BlockSize = 5;//物?理え?块é大洙?小? int PageCount = 200;//页?面?总哩?数簓 int PageSize = 1024;//页?面?大洙?小? int AddrRange = 8*1024;//访?问ê地?址·范?围§ int get_num(int down,int up)//得?到?一?个?down~up之?间?的?整?数簓 { int num; char str[111]; while(1){ fgets(str,111*sizeof(int),stdin); num=atoi(str);//把?字?符?串?中D的?数簓字?转羇换?为a整?数簓 if(num>=down&& num<=up) break; printf("输?入?范?围§有瓺误ó,请?重?新?输?入?:"); }//while return num; } void init_block()//构1造ì一?个?空?的?物?理え?块é队ó列 { Block.rear=Block.front=(BlockNode*)malloc(sizeof(BlockNode)); if(!Block.front){ printf("内ú存?分?配?失骸?败悒?\n"); exit(0); } Block.length=0; Block.miss_count=0;

常用页面置换算法模拟实验

存储管理 常用页面置换算法模拟实验 实验目的 通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的特点,掌握虚拟存储请求页式存储管理中几种基本页面置换算法的基本思想和实现过程,并比较它们的效率。 实验内容 设计一个虚拟存储区和内存工作区,并使用下述算法计算访问命中率。 1、最佳淘汰算法(OPT) 2、先进先出的算法(FIFO) 3、最近最久未使用算法(LRU) 4、最不经常使用算法(LFU) 5、最近未使用算法(NUR) 命中率=1-页面失效次数/页地址流长度 实验准备 本实验的程序设计基本上按照实验内容进行。即首先用srand( )和rand( )函数定义和产生指令序列,然后将指令序列变换成相应的页地址流,并针对不同的算法计算出相应的命中率。 (1)通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成: A:50%的指令是顺序执行的 B:25%的指令是均匀分布在前地址部分 C:25%的指令是均匀分布在后地址部分具体的实施方法是: A:在[0,319]的指令地址之间随机选取一起点m B:顺序执行一条指令,即执行地址为m+1的

指令 C:在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’ D:顺序执行一条指令,其地址为m’+1 E:在后地址[m’+2,319]中随机选取一条指令并执行 F:重复步骤A-E,直到320次指令 (2)将指令序列变换为页地址流 设:页面大小为1K; 用户内存容量4页到32页; 用户虚存容量为32K。 在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为:第 0 条-第 9 条指令为第0页(对应虚存地址为[0,9]) 第10条-第19条指令为第1页(对应虚存地址为[10,19]) ……………………………… 第310条-第319条指令为第31页(对应虚存地址为[310,319]) 按以上方式,用户指令可组成32页。 实验指导 一、虚拟存储系统 UNIX中,为了提高内存利用率,提供了内外存进程对换机制;内存空间的分配和回收均以页为单位进行;一个进程只需将其一部分(段或页)调入内存便可运行;还支持请求调页的存储管理方式。 当进程在运行中需要访问某部分程序和数据时,发现其所在页面不在内存,就立即提出请求(向CPU

相关主题
文本预览
相关文档 最新文档