实验三:存储器分配算法

实验三:存储器分配算法

一、实验目的

1、使学生实验存储器管理系统的设计方法;
2、加深对所学各种存储器管理方案的了解;
3、要求采用一些常用的存储器分配算法,设计一个存储器管理模拟系统并调试运行。

二、实验要求及内容

  1. 要求采用一种常用的存储器分配算法,设计一个存储器管理模拟系统。
  2. 允许进行多次的分配和释放,并可向用户反馈分配和释放情况及当前内存的情况;
  3. 采用“命令菜单"选择和键盘命令输入的会话方式,根据输入请求调用分配模块,或回收模块,或内存查询模块,或最终退出系统。

三、实验代码

#include <stdio.h>
//初始化队列
void initializeList(int list[],int number){
   
    for (int i = 0; i < number; i ++) {
   
        list[i] = -1;
    }
}
//展示队列状态
void showList(int list[], int number){
   
    for (int i = 0; i < number; i ++) {
   
        printf("%2d",list[i]);
    }
    printf("\n");
}

//展示当前内存状态
void showMemoryList(int list[],int phyBlockNum){
   
    for (int i = 0; i < phyBlockNum; i ++) {
   
        if (list[i] == -1) {
   
            break;
        }
        printf(" |%d|",list[i]);
    }
    printf("\n");
}

void informationCount(int missingCount,int replaceCount,int pageNum){
   
    printf("缺页次数:%d   缺页率:%d/%d\n",missingCount,missingCount,pageNum);
    double result = (double)(pageNum - missingCount)/(double)pageNum;
    printf("置换次数:%d  命中率:%.2f\n",replaceCount,result);
}

//找到该页面下次要访问的位置
int getNextPosition(int currentPage,int currentPosition,int strList[],int pageNum){
   
    
    for (int i = currentPosition+1; i < pageNum; i ++) {
   
        if (strList[i] == currentPage) {
   
            return i;
        }
    } 
    return 100;
}
//最佳置换算法
void replacePageByOPT(int memoryList[],int phyNum,int strList[],int pageNum){
   
    //置换次数
    int replaceCount = 0;
    //缺页次数
    int missingCount = 0
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值