页面置换算法
来源:互联网 发布: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; iopt){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
阅读全文
0 0
- 页面置换算法
- 页面置换算法
- 页面置换算法
- 页面置换算法
- 页面置换算法
- 操作系统页面置换算法
- 页面置换算法解析
- 操作系统页面置换算法
- 页面置换算法初步
- 页面置换算法
- 页面置换算法
- 页面置换算法
- 页面置换算法
- 页面置换算法
- 页面置换算法LRU
- 【操作系统】页面置换算法
- 页面置换算法
- 页面置换算法
- 定时任务高效触发
- Combine Two Tables题解
- jsp中<select>标签
- 关于 ACM-ICPC 自动评测系统 8种结果的解释
- Django14-部署
- 页面置换算法
- Linux信号列表
- GO语言的reflection
- HTML+CSS知识点(一)
- 指针笔记简要
- centos7.2下安装mysql5.7.16使用rpm包安装
- 【Python】多维narray数组的子数组仍然是narray格式,赋值也无法改变这一点
- 57- 打印钻石图形
- web.xml配置文件元素解释