当前位置:首页 > 闽南师范大学操作系统课程设计内存LRU页面置换算法的设计
三、详细设计
3.1 数据结构
typedef struct pages //定义一个结构体其成员有页面号
//content和被访问标记timer;
void Init(int QString[20]) //初始化内存块 int findSpace(void) //查找是否有空闲内存 int findExist(int curpage) //查找内存中是否有该页面 int findReplace(void) //查找应予置换的页面 void display(void) //显示
void LRU(void) //LRU页面置换算法 void BlockClear(void) //清空
3.2 程序流程图
开始页面走向存入数组QString[]中,内存块用page[]表示,初始化为0i++Y当前QString[]中i个元素是否已在内存NQString[]是否有空Y把page[]中最近最久未使用的页面置换出去,i++N把QString[]的内容直接装入最上面一个空内存块,i++输出当前内存块状态结束
3.3 代码及注释 #include
typedef struct pages //定义一个结构体 {
int content;//页面号 int timer;//被访问标记
}page;
page block[8];//物理块 page pages[20];//页面号串
void Init(int QString[20]) {//初始化 int i;
for(i=0; i block[i].content = -1; block[i].timer = 0; } } for(i=0; i pages[i].content = QString[i]; pages[i].timer = 0; int findSpace(void) {//查找是否有空闲内存 } int findExist(int curpage) {//查找内存中是否有该页面 int i; for(i=0; i if(block[i].content == pages[curpage].content) int i; for(i=0; i if(block[i].content == -1) return i;//找到空闲内存,返回BLOCK中位置 return -1; } return i;//找到内存中有该页面,返回BLOCK中位置 return -1; int findReplace(void) {//查找应予置换的页面,被置换的页面的Timer值最大 } void display(void) {//显示 } int i; for(i=0; i if(block[i].content != -1) cout< if(block[i].timer >= block[pos].timer) pos = i;//找到应予置换页面,返回BLOCK中位置 return pos; cout<
共分享92篇相关文档