第7次常用面置换算法模拟试验
操作系统操作系统课程实验报告课程实验报告 姓名 任课教师 实验地点 贺辉 学号 指导教师贺辉 系 评阅教师 计算机科学与技 术 贺辉 实验时间 实验编号与实验名称:实验编号与实验名称: 第 7 次常用页面置换算法模拟实验 实验目的:实验目的: 通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的特点, 掌握虚拟存储请求页式存储管理中几种基本页面置换算法的基本思想和实现过程,并比较它 们的效率。 实验内容及要求(详见实验讲义): 实验要求实验要求: 1)要求用你熟悉的程序设计语言要求用你熟悉的程序设计语言编写和调试一个页面置换模拟程序;要求在主函数中测 试。 2)实验报告中必须包括:实验报告中必须包括:设计思想、数据定义(包括详细说明)、处理流程(详细算法 描述和算法流程图)、源代码、运行结果、体会等部分。 3)必须必须模拟本实验内容中提到的算法本实验内容中提到的算法中的至少 2 种页面置换算法种页面置换算法。 4) 比较不同页面置换算法的效率 实验内容实验内容 编写一个程序,使用以下页面置换算法中的某 2 种分别模拟一个分页系统,并统计同一 个页面访问序列情况下不同页面置换算法引发的缺页中断次数。 1、第二次机会算法(Second Chance) 2、最近最少使用算法(Least Recently Used,LRU ) 3、最不常用算法(Not Frequently Used,NFU) 4、最近未使用算法(NotRecently Used ,NRU) 5、时钟页面置换算法 6、老化算法(aging) 页框的数量固定为页框的数量固定为 4 4,虚拟页面数为,虚拟页面数为8 8。实验输入为访问页面序列,比如0,1 ,3 , 2,7,1 实验用到的软件(:) Vs,word,processon 实验内容、关键步骤(流程图、代码等)及结果分析关键步骤(流程图、代码等)及结果分析(70 分) 一、先进先出页面置换算法 1、基本思想:地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中 断。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的 页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。最简单的页面置换算法是 先入先出(FIFO)法。 2、算法流程图 3、步骤说明 (1)初始化 void init(){//初始化 } (2)选择算法,输入插入页面号。进入判断函数 int judge(){//判断页框是否满,或者页框里面是否已存在页面 int i; int i; for (i = 0; i 0) return 1; return -1; else } int cmp1(const void *p, const void *q){//按照最后访问时间从小到大排序 } int cmp2(const void *p, const void *q){//按照最后访问时间从小到大排序,,并且不要排序没页面 的部分 } int cmp3(const void *p, const void *q){//按照装入时间从小到大排序,,并且不要排序没页面的部 分 } void init(){//初始化 } void print(int x){//打印信息 int i, j; switch (x){ int i; for (i = 0; i 0) return 1; return -1; else if ((*(struct Page_table*)p).page_id != -1 return -1; else int c = (*(struct Page_table*)p).last_visit_time - (*(struct if (c 0) return 1; return -1; else Page_table*)q).last_visit_time; Page_table*)q).last_visit_time; } case 0:for (i = 0; i page_id; if (page_id == -1) int i; for (i = 0; i page_id; if (page_id == -1) break; j = judge(); if (j == -2){//当没有空页框,并且页面本身也没有存在,则执行一下代码 } else{ } counter++; qsort(page_table, page_frame_number, sizeof(struct Page_table), cmp2);//按照最后 print(2); for (int i = 0; i algorithm; if (strcmp(algorithm, “F“) == 0 || strcmp(algorithm, “L“) == 0) break; printf(“输入出错,请重新输入\n“); else 实验过程中遇到的问题解决办法与实验体会实验过程中遇到的问题解决办法与实验体会(10 分)【请注意:请注意:此处必须如实填写,为空或 不适均扣 10 分】