Linux页面置换算法的C语言实现
编写算法,实现页面置换算法FIFO、LRU、OPT;针对内存地址引用串,进行页面置换算法进行页面置换。
其中,算法所需的各种参数由输入产生(手工输入或者随机数产生);输出内存驻留的页面集合,缺页次数以及缺页率。
#include//#include #include #include //随机数 #define Myprintf printf("|---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---|\n") //*表格控制*/ int M; int N; typedef struct page { int num; /*记录页面号*/ int time; /*记录调入内存时间*/ //(lru那用到) int index; //记录调入内存的先后次序 //从1开始(FIFO那用到) }Page; /* 页面逻辑结构,结构为方便算法实现设计*/ Page b[10]; /*内存单元数*/ //从0开始 int c[10][150]; /*暂保存内存当前的状态:缓冲区*/ int queue[100]; /*记录调入队列*/ int K; /*调入队列计数变量*/ /*初始化内存单元、缓冲区*/ void Init(Page *b,int c[10][150]) { int i,j; for(i=0;i max) { max=b[i].time; tag=i; } } return tag; } /**int GetMinTime(Page *b) { int i; int min=1000; int tag=0; for(i=0;i =0) //在内存中 { b[val].time=0; //存在就把那个东西的时间变成0 for(i=0;i