C语言模拟LRU页面置换算法

 时间:2024-10-20 15:43:13

1、首先打开VC++6.0

C语言模拟LRU页面置换算法

2、选择文件,新建

C语言模拟LRU页面置换算法

3、选择C++ source file 新建一个空白文档

C语言模拟LRU页面置换算法

4、首先声明头文件和常量#include<stdio.h>#include<stdlib.h>#define PAGENUM 6 /*主存中允许的最大的页数*/#define MAXPAGENUM 15 /* 一个程序包含的最大页数*/

C语言模拟LRU页面置换算法

5、定义栈的结构 即置换器typedef struct stack{int page[PAGENUM];int head;}PAGER;

C语言模拟LRU页面置换算法

6、定义一个置换器PAGER pager;其实就是声明一个pager对象

C语言模拟LRU页面置换算法

7、栈的初始化void InitPager(){int top = 0;int i,j巳呀屋饔,tmp;int r;randomize();r = random(MAXPAGENUM);pager.page[top++] = r;while(top < PAGENUM ){ randomize();r = random(MAXPAGENUM);for(j =0;j<top;j++){if(r == pager.page[j]){break;}if(j == top-1)pager.page[top++] = r;}}pager.head = PAGENUM - 1;}

C语言模拟LRU页面置换算法

8、栈中成员的移动,即移动页面的操作void MovingPage(int Begin ){int i;for(i = Begin; i < PAGENUM-1; i++){pager.page[i] = pager.page[i+1] ;}}

C语言模拟LRU页面置换算法

9、出栈操作,即 交换出页面的操作 void PopPage(int p){MovingPage(p);pager.head = PAGENUM - 2;}

C语言模拟LRU页面置换算法

10、入栈操作 ,即换进新页面的操作void PushPage(int page){pager.head = PAGENUM-1;pager.page[pager.head] = page;}

C语言模拟LRU页面置换算法

11、/*打印主存中的页面*/void printPager(){ int i;printf("The pages in the pager is:");for(i = 0; i< PAGENUM;i++){printf(" %d ",pager.page[i]);}printf("\n");}

C语言模拟LRU页面置换算法

12、处理页面的换进和换出void PagingProcess(){int rdm;int i;randomize();rdm = random(MAXPAGENUM);for(i = 0; i< PAGENUM; i++){if(rdm == pager.page[i]){printPager();printf("The page [%d] will be accessed\n",rdm);PopPage(i);PushPage(rdm);printPager();break;}if(i == PAGENUM-1){printPager();printf("The page [0] will be paged out\n");PopPage(0);printf("The page [%d] will be paged in\n",rdm);PushPage(rdm);printPager();}}}

C语言模拟LRU页面置换算法

13、主函数int main(){int i; for(i = 0; i<3; i++){InitPager();printf("ROUND %d:\n\n",i+1);PagingProcess();}getch();return 0;}

C语言模拟LRU页面置换算法
  • 地铁检修工作如何?比如工资待遇,工作条件,晋升的希望方法大不大?求帮助详细点。
  • 垂直帘是由哪些部分组成的?
  • word怎么转pdf
  • 切菜总粘刀怎么办
  • wps如何制作证件照
  • 热门搜索
    山药粉的功效与作用 牛顿运动定律 校运动会加油稿50字 海螵蛸的功效与作用 知识分子论 看病人送什么水果 衣柜门用什么材料好 三七粉的功效和作用 石竹茶的功效与作用 高三物理知识点总结