计算机系统结构实验报告-存储系统RAID 性能测试

时间:2024.4.20

计算机系统结构

实验报告

班级:xxxxxxxxxxxxxxxx 

姓名:xxxxxx           

学号:2xxxxxxxxxxxxxx  

报告完成时间:20xxxxxxxx


计算机系统结构实验报告


第二篇:计算机系统结构实验报告册2


计算机系统结构实验报告册

姓名:    李亚飞      

学号:   201017714     

专业:计算机科学与技术

班级:     177         

指导教师:    孙全红       

华北水利水电学院信息系系统结构教研室


实验二   存贮层次模拟器

完成日期: 20##1017

学时:2学时

【实验目的】

1、使学生清楚认识虚拟存贮层次结构,熟练掌握常用的几种存储地址映象与变换方法,以及FIFO、LRU等替换算法的工作全过程。

2、要求用程序实现任意地址流在存储层次上的命中情况,实验结束后提交源程序和实验说明书。

【实验内容】

在模拟器上实现在任意地址流下求出在主存—辅存两层存贮层次上的命中率。

【实验步骤】

1.主存—辅存:映像方式采用组相联,替换算法分别选择FIFO、LRU两种算法实现。

2.要求主存容量、页大小以及组数等可以输入修改。

3.求出命中率;显示替换的全过程;任选一种高级语言来做。

4.要有简洁、易于操作的界面。

【实验仪器设备】

   计算机(装有常用编程环境,如C、VC++等)

源程序、实验结果及分析、实验心得及体会  


#include <stdio.h>

#include <string.h>

typedef struct CMemory4

    {

       int gm;//组号

       int bm;

};

CMemory4 mem4[50];

typedef struct  CCach4

{

       int gc;

       int bc;

       int cc;

       int bs;

};

CCach4 cac4[50];

int a2[10][20],b2[10][20];

void inputmem2(int m_num,int group) //输入

{

int i,t=0,nn=0;

for(i=0;i<m_num;)

{  

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

       {

       if(i>=m_num)

       {

              break;

       }

    printf("第%d块",i);

    scanf("%d",&nn);

       mem4[i].bm=nn;   

    mem4[i].gm=nn%group;

       i++;

       }    

}

}

void initcac2(int ilen,int group) //

{

int i=0,j=0;

for(i;i<group;i++)

{

       for(j;j<ilen/group;j++)

       {

    //cac[j].gc=i;//

    cac4[j].bc=-1;//

    cac4[j].cc=0;

    cac4[j].bs=j;

       }

}

}

void change2(int x,int y,int cnum)

{

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

       {

              cac4[i].cc+=1;

       }

       a2[y][x]=cac4[y].bc;

       b2[y][x]=cac4[y].cc;

}

void fdl(int cnum)

{

       int tmp;

       tmp=cac4[0].bc;

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

       {

     cac4[i].bc=cac4[i+1].bc;

       }

       cac4[cnum-1].bc=tmp;

}

float steadcac2(int tt,int c_num,int j,float h,int i,int g,int group)

{

           float sc=h;

           int fi=1,fj;//判断是否装满的标记

              for (int jj=0;jj<c_num;jj++)//判断cache中是否装满

           {

           if(jj%group==g&&cac4[jj].bc==-1)

              {

           fi=0;//没有装满

           fj=jj;

           break;

              }  }

           if(fi==0)// 未装满

              {

         cac4[fj].bc=tt;//装入Cache中

         printf("块%d装入%d组%d块号\n",tt,g,cac4[fj].bs);

              }

              else //装满

              {

                int m=0;

          for(m;m<c_num;m++)

          {

          if(tt==cac4[m].bc)

          {

              printf("块%d命中%d组%d块号\n",tt,g,cac4[m].bs);

            sc=sc+1;//命中

             break;

          }  }

         if (m==c_num)

         {

            fdl(c_num);//FIFO替换,把进队较早的替换掉

         cac4[0].bc=tt;

         printf("块%d替换%d组%d块号\n",tt,g,cac4[m].bs);

         }  }

       return sc;

}

bool compare2(int m_num,int c_num,int group)

{

       float sc=0;

       int sm=0,max,j=0,gm,gc,gt=0,tt,bm;

for(int i=0;i<m_num;i++)//内存单元

{

       for(j=0;j<c_num; j++)

       {

              gm=mem4[i].gm;

              gc=j%group;

              bm=mem4[i].bm;

              if(gm==gc)//检查组号相等

              {

                     if(cac4[gt].bc==bm)

                     {sc=sc+1;//命中

                            printf("块%d命中%d组%d块号!\n",bm,gc,cac4[gt].bs);

                     }

                     else

                     {

                     if(j==0)

                     {

                            gt=0;

                     }

                     else

                     {

                     gt++;

                     }

                     sc=steadcac2(bm,c_num,gt,sc,i,gc,group);

       }

          sm++;

          if(gt>=c_num/group)

           {

            gt=0; }

                break;

          }

       }

}

printf("命中率:H=%.2f\n",sc/sm);

return 1;

}

void Flink()//

{

       int m_num,c_num,group;

    printf("请输入内存大小:");

    scanf("%d",&m_num);

    printf("请输入Cache大小:");

    scanf("%d",&c_num);

    printf("请输入组数:");

    scanf("%d",&group);

       inputmem2(m_num,group);

       initcac2(c_num,group); //

    compare2(m_num,c_num,group); 

}

void main()

{

   Flink();

}


实验心得:这个实验和上个实验原理差不多,参考了上个实验,现在也能做出来,就是不是很熟练,很多原理很是深奥,需要慢慢琢磨。

更多相关推荐:
系统测试报告模板(绝对实用)

XXX项目软件测试报告编制审核批准目录12概述4测试概要421进度回顾422测试环境5221软硬件环境5222网络拓扑5测试结论631测试记录632缺陷修改记录633功能性634易用性635可靠性636兼容性7...

系统测试报告范例

系统测试报告编写规范摘要测试报告是把测试的过程和结果写成文档,并对发现的问题和缺陷进行分析,为纠正软件的存在的质量问题提供依据,同时为软件验收和交付打下基础。本文提供测试报告模板以及如何编写的实例指南。关键字测…

系统测试报告

亚信经分系统测试报告文档修订摘要CopyrightAsiaInfoTechnologiesChinaInc1亚信经分系统测试报告目录第1章概述311测试目的312测试范围313名词解释3131系统测试3132功...

系统测试报告实例

XX系统测试总结报告1引言11编写目的编写该测试总结报告主要有以下几个目的1通过对测试结果的分析得到对软件质量的评价2分析测试的过程产品资源信息为以后制定测试计划提供参考3评估测试测试执行和测试计划是否符合4分...

系统测试报告(模板)

xxxxxxxxxxxxxxx系统测试报告xxxxxxxxxxx公司20xx年xx月版本修订记录目录1引言1111213142编写目的1项目背景1术语解释1参考资料1测试概要2321系统简介222测试计划描述2...

软件系统测试报告(二)

软件系统测试报告网上招聘系统学院计算机科学学院背景如今网上招聘越来越普遍但有些招聘系统的综合性能不是很好比如系统的冗余系统的性能安全性完整性等等都有待提高本次测试的目的就是针对本系统的性能进行测试一实验目的1通...

系统测试报告

实践教务门户及后台管理系统测试报告1概述11背景测试的系统是实践教务门户及后台管理系统实践教务系统包含多个子系统该系统的是实践教务系统的门户主要的功能是发布一些学校公告和一些新闻并且连接着其他子系统同时该测试系...

运维管理系统软件测试报告

运维管理系统测试计划20xx1212目录1引言311121314编写目的3项目背景4定义4参考资料42软件概述4212223231232233目标错误未定义书签功能错误未定义书签性能错误未定义书签数据精确度错误...

学生管理系统测试报告

软件测试报告学生管理系统测试winrunner班级姓名学号20xx66软件测试报告一测试目的随着学校规模的不断扩大学生数量的不断增多原来人工记录的方式甚至是一般数据存储管理软件已经不能满足学生管理的需求因为这些...

酒店管理系统测试报告(1)

酒店管理系统测试报告一引言1编写目的软件测试是为了发现程序中的问题本系统技术不很成熟存在不少问题测试变得非常重要软件测试的过程也是程序运行的过程程序运行需要数据为测试设计的数据称测试用例设计测试用例的原则自然是...

库存管理系统测试报告

库存管理系统测试报告一测试范围1测试目的软件的错误是不可避免的所以必须经过严格的测试通过对本软件的测试尽可能的发现软件中的错误借以减少系统内部各模块的逻辑功能上的缺陷和错误保证每个单元能正确地实现其预期的功能检...

系统测试报告

UML大作业餐馆订餐系统系统测试报告项目组成员贾伟昊方晓彬刘春宇王燕茹张梦巧柯蓬目录1软件测试概念32软件测试目的33软件测试原则44软件测试方法541黑盒测试542白盒测试543单元测试644集成测试75测试...

系统测试报告(40篇)