请求页式存储管理的页面置换算法实验报告

学生姓名: 学 号: 专业班级:
实验类型:□√ 验证 □ 综合 □ 设计 □ 创新 实验日期: 实验成绩:

一、 实验项目名称
请求页式存储管理的页面置换算法

二、 实验目的
存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。
本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。

三、 请求页式存储管理的实现原理
1.通过随机数产生一个指令序列,共 320 条指令,指令的地址按下述原则生产:
50%的指令是顺序执行的;
25%的指令是均匀分布在前地址部分;
25%的指令是均匀分布在后地址部分。
2.将指令序列变换成为页地址流
设页面大小为 1K;用户内存容量为 4 页到 32 页;用户虚存容量为 32K。
在用户虚存中,按每 K 存放 10 条指令排列虚存地址,即 320 条指令在虚存中的存放方式
为:第 0 条至第 9 条指令为第 0 页;第 10 条至 19 条指令为第 1 页;…第 310 条至 319 条指
令为第 31 页。
3.计算并输出下述各种算法在不同内存容量下的命中率。
(1) 先进先出算法(FIFO)
(2) 最近最少使用算法(LRU)
(3) 最佳使用算(OPT)
命中率=1-页面失效次数/页地址流长度
本实验中,页地址流长度为 320,页面失效次数为每次访问相应指令时,该指令所
对应的页不在内存的次数。

四、 主要程序代码

#include<conio.h>  
#include<stdio.h> 
#include<stdlib.h> 
#include<string.h> 
#include<time.h> 
#define Myprintf printf("|---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---|\n") /*表格控制*/  
#define bsize 4     //物理块大小 
#define psize 16     //进程大小 

typedef struct page  
{
     
       int num;  /*记录页面号*/  
       int time;  /*记录调入内存时间*/  
}Page;                   /* 页面逻辑结构,结构为方便算法实现设计*/  
Page b[bsize];            /*内存单元数*/  
int c[bsize][psize];   /*暂保存内存当前的状态:缓冲区*/  
int queue[100];      /*记录调入队列*/  
int K;             /*调入队列计数变量*/  
int phb[bsize]={
   0};   //物理块标号 
int pro[psize]={
   0};   //进程序列号 
int flag[bsize] = {
   0};  //进程等待次数(存放最久未被使用的进程标志) 
int i = 0, j = 0,k = 0;   //i 表示进程序列号,j 表示物理块号 
int m = -1, n = -1;       //物理块空闲和进程是否相同判断标志 
int max = -1,maxflag = 0; //标记替换物理块进程下标 
int count = 0;            //统计页面缺页次数 
 
//**************************************************************// 
//**************************************************************//随机产生序列号函数 
//************************************************************** 
int* build() 
{
    
 printf("随机产生一个进程序列号为:\n"); 
 int i = 0; 
    srand ( time(NULL) ); 
    for(i=0; i<psize; i++) 
    {
    
  pro[i] = 10*rand()/(RAND_MAX+1)+1; 
        printf("%d  ",pro[i]); 
     } 
     printf("\n"); 
  return(pro); 
} 
//**************************************************************//查找空闲物理块 
//************************************************************** 
int searchpb() 
{
    
 for(j=0; j<bsize; j++) 
    {
    
  if<
  • 7
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值