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

时间:2024.3.31

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

实 验 报 告

(2014 / 2015 学年 第 一 学期)

课程名称 实验名称

计算机操作系统

虚拟存储中页面置换算法的模拟实现 2014

实验时间 指导单位 指导教师

年 12 月 19 日

南京邮电大学

崔衍

学生姓名 学院(系)

物联网院

班级学号 专 业

网络工程

实 验 报 告

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

- 2 -

二、 实验原理及内容

实验三

#include <iostream.h>

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#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<Bsize;i++)

{

block[i].pagenum=-1;

block[i].accessed=0;

- 3 -

pc=n=0;

}

}

//-------------------------------------------------------------

int findExist(int curpage)

{

for(int i=0; i<Bsize; i++)

{

if(block[i].pagenum == curpage )

return i;//检测到内存中有该页面,返回block中的位置 }

return -1;

}

//-------------------------------------------------------------

int findSpace( )

{

for(int i=0; i<Bsize; i++)

{

if(block[i].pagenum == -1)

return i;//找到空闲的block,返回block中的位置 }

return -1;

}

//-------------------------------------------------------------

int findReplace( )

{

int pos = 0;

for(int i=0; i<Bsize; i++)

{

if(block[i].accessed >block[pos].accessed)

pos = i;//找到应予置换页面,返回BLOCK中位置 }

return pos;

}

//-------------------------------------------------------------

void display( )

- 4 -

{

for(int i=0; i<Bsize; i++)

{

if(block[i].pagenum != -1)

{ printf(" %02d",block[i].pagenum);}

}

cout<<endl;

}

//-------------------------------------------------------------

void suijishu( )

{ int flag=0;

cin>>pc;

cout<<"******按照要求产生的320个随机数:*******"<<endl; for(int i=0;i<320;i++)

{

temp[i]=pc;

if(flag%2==0) pc=++pc%320;

if(flag==1) pc=rand( )% (pc-1);

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

flag=++flag%4;

printf(" %03d",temp[i]);

if((i+1)%10==0) cout<<endl;

}

}

//-------------------------------------------------------------

void pagestring( )

{

for(int i=0;i<320;i++)

{

printf(" %02d",temp[i]/10);

if((i+1)%10==0) cout<<endl;

}

}

//-------------------------------------------------------------

void OPT( )

{

int exist,space,position ;

- 5 -

int curpage;

for(int i=0;i<320;i++)

{

if(i%100==0) getch( );

pc=temp[i];

curpage=pc/10;

exist = findExist(curpage);

if(exist==-1)

{

space = findSpace ( );

if(space != -1)

{

block[space].pagenum = curpage;

display( );

n=n+1;

}

else

{

for(int k=0;k<Bsize;k++)

{

for(int j=i;j<320;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 -

}

}

}

cout<<"缺页次数:"<<n<<endl;

cout<<"缺页率:"<<(n/320.0)*100<<"%"<<endl;

}

//-------------------------------------------------------------

void LRU( )

{

int exist,space,position ;

int curpage;

for(int i=0;i<320;i++)

{

if(i%100==0) getch( );

pc=temp[i];

curpage=pc/10;

exist = findExist(curpage);

if(exist==-1)

{

space = findSpace( );

if(space != -1)

{

block[space].pagenum = curpage;

display( );

n=n+1;

}

else

{

position = findReplace( );

block[position].pagenum = curpage;

display( );

n++;

}

}

else block[exist].accessed = -1;//恢复存在的并刚访问过的BLOCK中页面accessed为-1 for(int j=0; j<4; j++)

- 7 -

{block[j].accessed++;}

}

cout<<"缺页次数:"<<n<<endl;

cout<<"缺页率:"<<(n/320.0)*100<<"%"<<endl; }

//------------------------------------------------------------- void FIFO( )

{

int exist,space,position ;

int curpage;

for(int i=0;i<320;i++)

{

if(i%100==0) getch( );

pc=temp[i];

curpage=pc/10;

exist = findExist(curpage);

if(exist==-1)

{

space = findSpace( );

if(space != -1)

{

block[space].pagenum = curpage;

display( );

n=n+1;

}

else

{

position = findReplace( );

block[position].pagenum = curpage; display( );

n++;

block[position].accessed--;

}

}

for(int j=0; j<Bsize; j++)

- 8 -

block[j].accessed++;

}

cout<<"缺页次数:"<<n<<endl;

cout<<"缺页率:"<<(n/320.0)*100<<"%"<<endl;

}

//************************************************************* void main( )

{

int select;

cout<<"请输入第一条指令号(0~320):";

suijishu( );

cout<<"*****对应的调用页面队列*******"<<endl;

pagestring( );

do

{

cout<<"****************************************"<<endl; cout<<"------1:OPT 2:LRU 3:FIFO 4:退出-----"<<endl; cout<<"****************************************"<<endl; cout<<" 请选择一种页面置换算法:";

cin>>select;

cout<<"****************************************"<<endl; init( );

switch(select)

{

case 1:cout<<"最佳置换算法OPT:"<<endl;

cout<<"*****************"<<endl;

OPT( );

break;

case 2:cout<<"最近最久未使用置换算法LRU:"<<endl;

cout<<"**************************"<<endl;

LRU( );

break;

case 3:cout<<"先进先出置换算法FIFO:"<<endl;

cout<<"*********************"<<endl;

FIFO( );

break;

- 9 -

- 10 -

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

- 11 -

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

- 12 -

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

- 13 -

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

- 14 -

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

- 15 -

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

- 16 -

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

- 17 -

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

- 18 -

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

- 19 -

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


第二篇:南京邮电大学系统工程实验报告


南京邮电大学

课内实验报告

课 程 名        系统工程       

任课教师                 

专    业             

学    号             

姓    名            

二○ 一二 至二○ 一三 年度 第 1 学期

              南京邮电大学  经济与管理学院

更多相关推荐:
中南大学电工电子实验报告模板

中南大学实验报告电工电子教学实验中心院系专业班组姓名学号指导老师实验日期年月日

中南大学电工电子课程设计实验报告

中南大学电工电子技术课程设计报告题学院指导老师陈明义专业班级姓名1学号前言随着科学技术发展的日新日异电工电子技术在现代社会生产中占据着非常重要的地位因此作为二十一世纪的自动化专业的学生而言掌握电力电子应用技术十...

中南大学电工电子收音机实训报告

一实训的目的本次电气技能训练的内容是焊接一个DS057B七管收音机通过焊接的过程达到以下几个目的1通过具体的电路图初步掌握简单电路元件装配初步的焊接技术及对故障的的诊断和排除2掌握电子线路的基本原理基本方法3掌...

中南大学电工电子实习报告

中南大学电工电子实习报告中南大学电工电子gt实习报告一一实习内容1学习识别简单的电子元件与电子线路2学习并掌握收音机的工作原理3按照图纸焊接元件组装一台收音机并掌握其调试方法二实习器材介绍1电烙铁由于焊接的元件...

中南大学电工实验电子收音机

中南大学实习鉴定表实习日记实习报告实习日记实习报告

中南大学彩灯控制器实验报告

电工电子课程设计实验报告题目名称:彩灯控制器指导教师:姓名:学号:专业班级:日期:前言电子技术课程设计是配合电子技术基础课程与实验教学的一个非常重要的教学环节。它是电气信息类专业学生的重要基础实践课,也是工科专…

电子电工实验课程设计报告

课程设计报告课程名称电工电子实验设计题目简易光控灯电路光电计数器专业班级学号姓名指导教师设计时间年月日1234567

中南大学功率电子技术实验报告

功率电子学实验报告班级电信1105班姓名学号功率电子学实验实验一两相步进电机驱动电路及其单片机控制实验二晶闸管交流调压电路实验三LM2577升压式DCDC变换电路5V实验四集成功率放大器TDA20xx制作的立体...

电工电子课程设计成绩评定办法-中南大学

电子技术课程设计成绩评定办法课程设计结束时要求学生写出课程设计报告设计出电路电路按设计要求调试通过成绩根据电子电路的理论设计电子电路的安装调试课程设计报告创新能力和态度及纪律综合评定1按优良中及格不及格五级分制...

中南大学电子电工课设占空比步进的脉冲信号源的设计

实验报告链接view7570d1766bd97f19xx79e9e2html8附图仿真图

中南大学机电传动控制实验报告1

机电传动控制实验报告姓名学院班级学号日期一实验台结构与工作原理本实验台的机械系统结构如图本实验台的安装平台保证了各机械装置的安装精度各装置采用弹性联轴器连接便于直交流电机的互换和传动装置装卸链传动单元链条松紧可...

中南大学机电传动控制实验报告2

机电传动控制实验报告姓名学院班级学号日期实验一交流电机的点动与自动控制一实验要求1了解常用低压控制电器工作原理与应用2掌握电气控制电路的控制方法3能够利用所学电工技术知识进行复杂电路的故障排除和典型电路的设计装...

中南大学电工电子实验报告(13篇)