1、2structPAGE_LIST34int id;/ 块号5int flag;/ 自适应标志6 page_listMAX;7int N = 0;/ 页面表大小8int orderMAX;/ 调用串9/ 调用长度10int M = 0;/ 定义输出容11int GMAXMAX;/ 输出置换图12int I, J;/ 置换图扫描指针13int LLMAX;/ 缺页序列14int LI;/ 缺页序列扫描指针15int RLMAX;/ 置换序列16/ 置换序列扫描指针17int RI;函数说明:void init();/ 初始化函数void print();/ 输出函数void Optimal();/
2、 最正确置换算法void FIFO()/ 先进先出算法void LRU();/ 最近最久未使用算法流程图先进先出置换算法:代码:*include*defineMAX 100structPAGE_LISTint id;int flag; page_listMAX;int N = 0;int orderMAX;/ 调用长度int M = 0;int GMAXMAX;int I, J;int LLMAX;int LI;int RLMAX;/ 置换序列扫描指针int RI;void init()int i; I = 0; J = 0; LI = 0; RI = 0;for (i = 0; i100;
3、i+) page_listi.id = -1; page_listi.flag = 999; printf(请输入页表的大小:); scanf(%d, &N);请输入调用长度:M);请输入调用串:nM; scanf(orderi);void display()int i, j;float x;置换图为:N; printf(for (j = 0; jJ; j+) printf(= %3d , Gij);n缺页序列为:LI;, LLi);n置换序列为:RI;, RLi); x = (float)J / (float)M; x *= 100;n缺页率为:n%3.2f%n, x);/ 判断页是否在页表
4、int IsExist(intx)if (page_listi.id = x) return 1; return 0;/ 此算法中自适应标志代表后面序列中是否访问到了此位置void Optimal()int i, j, k;int cou; init(); page_listi.id = orderi; GIJ = page_listj.id; I+; I = 0; J+; LLLI = orderi; LI+;for (;if (!IsExist(orderi) cou = 0;for (j = i + 1; if (cou = N - 1)break;for (k = 0; k= N) R
5、LRI = orderi; RI+;/ 此算法中自适应标志为起未被使用的次数void LRU()int pos, max; pos = 0; max = 0;if (page_listj.flag max) pos = j; max = page_listj.flag; page_listpos.flag = 0;elseif (page_listj.id = orderi) page_listj.flag = 0;continue;page_listj.flag+;int main()int select;doprintf( 页面置换算法n 1.最正确置换算法Optimaln 2.先进先出算
6、法FIFO n 3.最近最久未使用算法LRUn 4.退出程序 n请输入您想要执行的操作:select);switch (select)case 1: Optimal(); display();case 2: FIFO();case 3: LRU();case 4:default:输入有误,请重新输入! while (1);结果截图最正确置换算法先进先出算法:最近最久未使用算法:【小结或讨论】三种算法的主要区别是确定替换物理块的式不同:1、对于先进先出置换算法,设置一个指针,循环从block的首元素指到block的尾元素,就是物理块置换顺序2、对于LRU置换算法,遍历页表中的页号,根据这些页号最近被引用的顺序,找到最久未被引用的页号,即在输入序列中向前查找离当前页最远的页号,将其所在的物理块置换掉。3、对于LRU置换算法,遍历输入序列中的页号,根据这些页号将来被引用的顺序,找到将来最长时间未被引用的页号,即在输入序列中向后查找离当前页最远的页号,将其所在的物理块置换掉。4、通过本次实验,我对于虚拟存储中的分页管理有了更加深入的了解。理解了最正确页面置换算法、先入先出页面置换算法以及最近最久未被使用页面置换算法的中心思想。同时发现,最正确页面置换算法得到的缺页率最低,但其要求也更加格,必须要求知道未来调用的所有序列。先进先出算法最为简单,但是缺页率最高。最近最久未被访问算法居中。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1