页面置换算法学习之FIFO,Optimal,LRU | 您所在的位置:网站首页 › fifo页面置换算法缺页率 › 页面置换算法学习之FIFO,Optimal,LRU |
数据定义: 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 次页面置换,比最佳置换算法正好多一倍。 |
CopyRight 2018-2019 实验室设备网 版权所有 |