2024年4月16日发(作者:95年考研数学试卷v答案)

南京邮电大学实验报告模版

南京邮电大学实验报告模版

实验报告课程名称实验名称计算机操作系统虚拟存储中页面置换

算法的模拟实现2014 实验时间指导单位指导教师年12 月19 日南京

邮电大学崔衍学生姓名学院(系) 物联网院班级学号专业网络工程实验

报告实验名称虚拟存储中页面置换算法的模拟实现实验类型上机实验

实验学时一、实验目的和要求目的:通过请求页式存储管理中页面置

换算法模拟设计,了解虚拟存储技术的技术特点,掌握请求页式存储

管理的页面置换算法要求:(1)设计实现下面算法,并输出下述各种算

法的命中率。

①先进先出的算法;②最近最少使用算法先淘汰最不常用的页地

址。(2)多次反复运行改进后的程序,观察并记

录运行结果,并分析原因。指导教师崔衍 4 实验时间二、实验环

境(实验设备) Vc++ - 2 - 二、实验原理及内容实验三#include

#include #include #include #define Bsize 4 typedef struct

BLOCK//声明一种新类型——物理块类型{ int pagenum;//页号int

accessed;//访问字段,其值表示多久未被访问}BLOCK; int pc;//程序

计数器,用来记录指令的序号int n;//缺页计数器,用来记录缺页的次

数static int temp[320];//用来存储320条随机数BLOCK block[Bsize];

//定义一大小为4的物理块数组//*********************************

**************************** void init( );//程序初始化函数int

findExist(int curpage);//查找物理块中是否有该页面int

findSpace( );//查找是否有空闲物理块int findReplace( );//查找应予

置换的页面void display ( );//显示void suijishu( );//产生320条随机

数,显示

并存储到temp[320] void pagestring( );//显示调用的页面队列

void OPT( );//OPT 算法void LRU( );// LRU算法void FIFO( );//FIFO

算法//*********************************

void init( ) { for(int i=0;i ****************************

block[i].pagenum=-1;

block[i].accessed=0; - 3 - pc=n=0;} } //------------------------

------------------------------------- int findExist(int curpage)

{ for(int i=0; i if(block[i].pagenum == curpage ) return i;//检测到

内存中有该页面,返回block中的位置} return -1; } //---------------

---------------------------------------------- int findSpace( ) {for(int

i=0; i if(block[i].pagenum == -1) return i;//找到空闲的block,返

回block中的位置}return -1; }

//------------------------------------------------------------- int

findReplace( ) { int pos = 0; for(int i=0; i

if(block[i].accessed >block[pos].accessed) pos = i;//找到应予置换

页面,返回BLOCK中位置} return pos; } //--------------------------

----------------------------------- void display( ) - 4 - { for(int i=0;

i if(block[i].pagenum != -1) { printf( } cout //----------------------

--------------------------------------- void suijishu( ) { int flag=0;

cin>>pc; cout if(flag%2==0) pc=++pc20;if(flag==1) pc=rand( )%

(pc-1); if(flag==3) pc=pc+1+(rand( )%(320-(pc+1)));

flag=++flag%4; printf( if((i+1) ==0) cout //----------------------

--------------------------------------- void pagestring( ) {for(int

i=0;i printf(

if((i+1) ==0) cout //--------------------------------------------

----------------- void OPT( ) { int exist,space,position ; - 5 -

int curpage; for(int i=0;i

exist

if(i

=

0==0) getch( );

pc=temp[i];curpage=pc/10; findExist(curpage);

if(exist==-1) { space = findSpace ( );if(space != -1)

{ block[space].pagenum = curpage; display( );n=n+1;} else

{ for(int k=0;k for(int j=i;j if(block[k].pagenum!= temp[j]/10)

{ block[k].accessed = 1000;}//将来不会用,设置为一个很大数

else{ block[k].accessed = j; break; }}} position = findReplace( );

block[position].pagenum = curpage; display( );n++; - 6


更多推荐

实验,页面,算法,置换,模拟,指导