页面置换算法

来源:互联网 发布:xls软件官方下载 编辑:程序博客网 时间:2024/06/14 21:28
1. FIFO,Optimal,LRU这三种置换算法的优劣?
  • 优点:

    ①     FIFO页面置换算法实现简单,要求的硬件支持较少。

    ②     Optimal页面置换算法可保证获得最低的缺页率,并且可以用来评价其他算法。

    ③     LRU页面置换算法利用“最近的过去”代替“最近的将来”,以此模拟Optimal算法,是实际应用中缺页率最低的算法。

  • 缺点:

    ①     FIFO算法所依据的条件是各个页面调入内存的时间,而页面调入内存的先后并不能反映页面的使用情况。

    ②     Optimal算法是理论上的算法,目前该算法是无法实现的。

    ③     LRU算法是根据各页以前的使用情况,来代替各页面将来的使用情况,进而判断要替换出去的页面,而页面过去和将来的走向之间并无必然的联系;其实际应用时要求较多的硬件支持,因而多采用近似算法。

2. 在什么情况下采用哪种置换算法更有利?

  • FIFO算法在按线性顺序访问地址空间时使用;当硬件水平不足时,FIFO算法也可作为首选。
  • OPT算法可以进行模拟实验分析或理论分析。
  • 当系统有寄存器或栈的硬件支持时,利用LRU算法可以获得最低缺页率。

3. 三种算法的C语言实现及运行截屏。

#include "stdio.h"#include "stdlib.h"typedef struct item{int num;//页号int time;//等待时间,LRU算法会用到这个属性}Pro;int pageNum;//系统分配给作业的主存中的页面数int memoryNum;//可用内存页面数void print(Pro *page1);//打印当前主存中的页面int  Search(int num1, Pro *memory1);//在页面集memory1中查找num1,如果找到,返回其在memory1中的下标,否则返回-1int main(void){int i;int curmemory;//调入内存中的页面个数int missNum;//缺页次数float missRate;//缺页率char c;//得到用户的输入字符,来选择相应的置换算法Pro *page;//作业页面集Pro *memory;//内存页面集printf("输入系统分配给作业的主存中的页面数:");scanf("%d", &pageNum);printf("输入内存页面数:");scanf("%d", &memoryNum);page = (Pro*)malloc(sizeof(Pro)*pageNum);memory = (Pro*)malloc(sizeof(Pro)*memoryNum);for (i = 0; i opt){opt = tem;curmemory = k;}break;}else tem++;}if (j == pageNum){opt = tem;curmemory = k;}}missNum++;memory[curmemory].num = page[i].num;print(memory);}}//end formissRate = (float)missNum / pageNum;printf("缺页次数:%d   缺页率:  %f\n", missNum, missRate);}//end ifif (c == 'l')//LRU页面置换算法{missNum = 0;curmemory = 0;printf("LRU页面置换情况:   \n");for (i = 0; i memory[curmemory].time)curmemory = j;memory[curmemory].num = page[i].num;memory[curmemory].time = 0;print(memory);}else memory[rec].time = 0;for (int j = 0; j






原创粉丝点击