【操作系统】模拟页面置换算法、缺页率计算(C++源码) 您所在的位置:网站首页 LRU缺页次数和缺页率怎么计算 【操作系统】模拟页面置换算法、缺页率计算(C++源码)

【操作系统】模拟页面置换算法、缺页率计算(C++源码)

2024-07-06 13:38| 来源: 网络整理| 查看: 265

模拟页面置换算法、缺页率计算 一、设计目的二、问题描述三、问题要求四、算法流程图五、数据初始化六、主要实现七、进入模拟FIFO运算过程八、显示所有结果,程序结束九、源代码(C++)

一、设计目的

理解页面置换算法。

二、问题描述

先进先出(FIFO)页面置换算法程序设计,通过对FIFO算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程、调度算法的理解。

三、问题要求

用C++语言编程实现对FIFO算法的模拟。

四、算法流程图

在这里插入图片描述

图3-1 算法流程图

五、数据初始化

数据初始化,主要包含,访问序列以及内存块大小的读取;

六、主要实现

通过C语言的标准流式输入。

七、进入模拟FIFO运算过程 循环初始化访问内存表(BS)为-100,主要目的是为了表示内存页的一个空闲状态。循环遍历我们的访问序列,从第一个开始一次判断,如果当前这个访问数在内存页列表内已近存在表示改值已经命中,进行下一次判断,如果当前的下标小于内存块数目则直接存入记为缺页标记值(bno)加一,否则记为命中未缺页,标记值(bno)加一。如果,当前的访问值不在内存块序列中flag记为0,则记为缺页将当前的值存入内存块,并且标记值加一(bno)根据上一步中我们流下的标记值统计缺页的操作次数,循环显示每个序列号的缺页情况,并且计算缺页率。 八、显示所有结果,程序结束 九、源代码(C++) #include using namespace std; #define Max1 25 //访问序列数组大小 #define Max2 15 //内存块表数组大小 int saveCount[Max1][Max1]; int x_save, y_save; int now_couont = 0; struct pt { int pno; //页号 int bno; //块号 int flag; //状态位,为0时在不内存,为1时在内存 int order; //优先序列 }; // 输入 void input(int *a, int n) { for (int i = 0; i for (int i = 0; i pt ptlist[Max1];//定义结构数组 int k = 0, flag, cn = 0, i, j;//cn——统计缺页数 for (j = 0; j flag = 0; // 判断当前的值是否已经在 内存块中 ,如果在 flag 直接 = 1 for (j = 0; j if (i >= m) { ptlist[i].bno = j + 1; ptlist[i].flag = 1; //命中,已存入,未缺页 ptlist[i].pno = List_pages[i];//ye } else { // 前 m 页直接载入就好了 ptlist[i].flag = 0;//缺页,还未存入 ptlist[i].pno = List_pages[i]; bs[k] = List_pages[i];//将当前页存入内存块 ptlist[i].bno = k + 1; k = (k + 1) % m;//循环队列 cn++; } } else { // 因为 目标值不在块中 ptlist[i].flag = 0;//缺页,还未存入 ptlist[i].pno = List_pages[i]; bs[k] = List_pages[i];//将当前页存入内存块 ptlist[i].bno = k + 1; k = (k + 1) % m;//循环队列 cn++; } cout cout if (ptlist[i].flag == 0) cout x_save = x; y_save = y; for (int i = 0; i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有