页面置换算法学习之FIFO,Optimal,LRU 您所在的位置:网站首页 fifo页面置换算法缺页率 页面置换算法学习之FIFO,Optimal,LRU

页面置换算法学习之FIFO,Optimal,LRU

2024-07-14 19:54| 来源: 网络整理| 查看: 265

数据定义:

typedef struct item { int num; //页号 int time; //等待时间,LRU算法会用到这个属性 }Pro; int pageNum; //系统分配给作业的主存中的页面数 int memoryNum; //可用内存页面数 int curmemory; //调入内存中的页面个数 int missNum; //缺页次数 float missRate; //缺页率 char c; //得到用户的输入字符,来选择相应的置换算法 Pro *page; //作业页面集 Pro *memory; //内存页面集 page = (Pro*)malloc(sizeof(Pro)*pageNum); memory = (Pro*)malloc(sizeof(Pro)*memoryNum);

A.先进先出(FIFO)页面置换算法

这是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单,只需把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。但该算法与进程实际运行的规律不相适应,因为在进程中,有些页面经常被访问,比如,含有全局变量、常用函数、例程等的页面,FIFO 算法并不能保证这些页面不被淘汰。

这里,我们仍用上面的例子,但采用 FIFO 算法进行页面置换(图 4-27)。当进程第一次访问页面 2 时,将把第 7 页换出,因为它是最先被调入内存的;在第一次访问页面 3 时,又将把第 0 页换出, 因为它在现有的 2, 0, 1 三个页面中是最老的页。 由图 4-27 可以看出,利用 FIFO 算法时进行了 12 次页面置换,比最佳置换算法正好多一倍。 在这里插入图片描述

//FIFO页面置换 void fifoPage(Pro *page, Pro *memory) { missNum = 0; printf("FIFO页面置换情况: \n"); for (i = 0; i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

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