虚拟存储中页面置换算法的模拟实现探究.docxVIP

  • 60
  • 0
  • 约6.51千字
  • 约 10页
  • 2017-10-05 发布于湖北
  • 举报

虚拟存储中页面置换算法的模拟实现探究.docx

实验报告课程名称操作系统原理 ?实验名称页面置换算法的模拟实现指导教师?师晓晔? ?学生姓名汤勇学号? 实验时间 2015.11.27指导单位?通达学院?一.实验目的存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的技术特点,掌握请求页式存储管理的页面置换算法。二.实验要求(1)设计实现下面算法,并输出下述各种算法的命中率。①先进先出的算法(FIFO);②最近最少使用算法(LRU);③最佳淘汰算法(OPT)先淘汰最不常用的页地址。(2)多次反复运行改进后的程序,观察并记录运行结果,并分析原因。。三.实验环境(实验设备)Windows 10 +vc6.0四.实验内容4.1程序:#include stdio.h#include stdlib.h/*#include unistd.h //在window操作系统下要屏蔽此条指令 */#include string.h#ifndef _UNISTD_H#define _UNISTD_H#include IO.H#include PROCESS.H#endif#define TRUE 1#define FALSE 0#define INVALID -1#define total_instruction 320 //指令流长#define total_vp 32 //虚页长#define clear_period 50 //清周期typedefstruct //页面结构{intpn,pfn,counter,time;}pl_type;pl_typepl[total_vp]; //页面结构数组structpfc_struct{ //页面控制结构intpn, pfn;structpfc_struct *next;};typedefstructpfc_structpfc_type; //主存区页面控制结构别名pfc_typepfc[total_vp], //主存区页面控制结构数组*freepf_head, //主存区页面控制结构的空闲页面头指针*busypf_head, //主存区页面控制结构的忙页面头指针*busypf_tail; //主存区页面控制结构的忙页面尾指针intdiseffect; //页错误计数器,初次把页面载入主存时也当做页错误int a[total_instruction]; //随即指令流数组int page[total_instruction]; //指令对应的页面号int offset[total_instruction]; //指令所在页面中的偏移量int initialize(int);//初始化页面结构数组和页面控制结构数组int FIFO(int);//先进先出算法int LRU(int);//最近最久未使用算法int OPT(int);//最佳置换算法int main( ){int s;//随机数inti;srand(10*getpid()); /*每次运行时进程号不同,用来作为初始化随机数队列的种子*/ s = (int)((float)(total_instruction-1)*(rand()/(RAND_MAX+1.0)));printf(\n随机产生指令流\n); for (i=0; itotal_instruction; i+=4) //产生指令队列 { a[i]=s; //任选一指令访问点m a[i+1]=a[i]+1; //顺序执行一条指令 a[i+2]=(int)((float)a[i]*(rand()/(RAND_MAX+1.0))); //执行前地址指令m a[i+3]=a[i+2]+1; //顺序执行一条指令printf(%6d%6d%6d%6d\n, a[i],a[i+1],a[i+2],a[i+3]);s = (int)((float)((total_instruction-2)-a[i+3])*(rand()/(RAND_MAX+1.0))) + a[i+3] + 1; }printf(\n);for (i=0;itotal_instruction;i++) //将指令序列变换成页地址流 {page[i]=a[i]/10;offset[i]=a[i]%10; }printf(\n--不同页面工作

文档评论(0)

1亿VIP精品文档

相关文档