文档详情

操作系统实验3虚拟存储器管理[1].doc

发布:2018-12-18约4.7千字共11页下载文档
文本预览下载声明
WORD 格式 整理 学习 参考 资料 分享 实验报告 班级: 系统本111 学号: 2011415108 姓名: 张国锋日期: 2013.6.27 = 1 \* GB1 ⒈ 实验题目 模拟分页式虚拟存储管理实验。 2.实验要求 编写一段程序来模拟页面置换算法。要求能分别显示最佳(Optimal)置换算法、先进先出(FIFO)页面置换算法和最近最久未使用(LRU)置换算法的置换过程。 3. 实验目的 通过本实验帮助学生理解虚拟存储器的工作方法。了解分页式存储管理里中各页面置换算法是怎样实现的,各算法有怎样的优缺点。 = 4 \* GB1 ⒋ 实验原理分析 = 1 \* GB2 ⑴页面置换算法是在分页存储管理方式中为了合理的将进程运行所需的页面调入内存而产生的算法。一个好的页面转换算法,应具有较低的页面更换频率。最常见的页面置换算法有最佳(Optimal)置换算法、先进先出(FIFO)页面置换算法和最近最久未使用(LRU)置换算法。 = 2 \* GB2 ⑵算法的说明 最佳置换算法:选择以后永不使用或是在最长时间内不再被访问的页面作为被淘汰的页面。这种算法通常可保证获得最低的缺页率,但因为内存中哪个页面是以后永不使用的是无法预知的,所以该算法是无法实现的。 先进先出页面置换算法:选择内存中驻留时间最长的页面作为被淘汰的页面。该算法实现简单,只需将调入内存中的页面链成一个队列,并设置一个指针指向最老的页面即可。 最近最久未使用置换算法:选择最近最久未使用的页面作为被淘汰的页面。该算法需要为每个页面设置一个访问字段用来记录页面上次被访问的时间,通过这个时间来决定淘汰哪一个页面。 = 3 \* GB2 ⑶主要变量及函数说明如表1所示 表1 主要变量及函数说明表 PRA(void) 初始化 int findSpace(void) 查找是否有空闲内存 int findExist(int curpage) 查找内存中是否有该页面 int findReplace(void) 查找应予置换的页面 void display(void) 显示 void FIFO(void) FIFO算法 void LRU(void) LRU算法 void Optimal(void) OPTIMAL算法 void BlockClear(void) BLOCK恢复 struct pageInfor * block 物理块 struct pageInfor * page 页面号串 实验代码清单 #include stdio.h #include stdlib.h #include conio.h #define Bsize 3 #define Psize 20 struct pageInfor { int content; /*页面号*/ int timer; /*被访问标记*/ }; void PRA(); /*初始化*/ int findSpace(); /*查找是否有空闲内存*/ int findExist(int curpage);/*查找内存中是否有该页面*/ int findReplace(); /*查找应予置换的页面*/ void display(); /*显示*/ void FIFO(); /*FIFO算法*/ void LRU(); /*LRU算法*/ void Optimal(); /*OPTIMAL算法*/ void BlockClear(); /*BLOCK恢复*/ struct pageInfor * block; /*物理块*/ struct pageInfor * page; /*页面号串*/ int QString[20]; void PRA() { int i,n; printf(请输入页面号引用串:\n); for(i=0;i20;i++) { scanf(%d,QString[i]); } printf(您输入页面号引用串为:\n); printf(==================\n); for(i=0;i20;i++) { printf(%d\t,QString[i]); } printf(==================\n); block=(struct pageInfor *)malloc(sizeof(struct pageInfor)); for(i=0; iBsize; i++) { block[i].content = -1; block[i].timer = 0; } page = (struct pageInfor *)malloc(sizeof(struct pageInfor)*Psize);
显示全部
相似文档