操作系统实验5虚拟存储器管理.doc

上传人:啊飒飒 文档编号:11067441 上传时间:2021-06-25 格式:DOC 页数:11 大小:99KB
返回 下载 相关 举报
操作系统实验5虚拟存储器管理.doc_第1页
第1页 / 共11页
操作系统实验5虚拟存储器管理.doc_第2页
第2页 / 共11页
操作系统实验5虚拟存储器管理.doc_第3页
第3页 / 共11页
操作系统实验5虚拟存储器管理.doc_第4页
第4页 / 共11页
操作系统实验5虚拟存储器管理.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《操作系统实验5虚拟存储器管理.doc》由会员分享,可在线阅读,更多相关《操作系统实验5虚拟存储器管理.doc(11页珍藏版)》请在三一文库上搜索。

1、实验报告班级: 系统本111 学号: 2011415108 姓名: 张国锋日期: 2013.6.27 实验题目模拟分页式虚拟存储管理实验。2实验要求编写一段程序来模拟页面置换算法。要求能分别显示最佳(Optimal)置换算法、先进先出(FIFO)页面置换算法和最近最久未使用(LRU)置换算法的置换过程。3. 实验目的通过本实验帮助学生理解虚拟存储器的工作方法。了解分页式存储管理里中各页面置换算法是怎样实现的,各算法有怎样的优缺点。 实验原理分析页面置换算法是在分页存储管理方式中为了合理的将进程运行所需的页面调入内存而产生的算法。一个好的页面转换算法,应具有较低的页面更换频率。最常见的页面置换算

2、法有最佳(Optimal)置换算法、先进先出(FIFO)页面置换算法和最近最久未使用(LRU)置换算法。算法的说明最佳置换算法:选择以后永不使用或是在最长时间内不再被访问的页面作为被淘汰的页面。这种算法通常可保证获得最低的缺页率,但因为内存中哪个页面是以后永不使用的是无法预知的,所以该算法是无法实现的。先进先出页面置换算法:选择内存中驻留时间最长的页面作为被淘汰的页面。该算法实现简单,只需将调入内存中的页面链成一个队列,并设置一个指针指向最老的页面即可。最近最久未使用置换算法:选择最近最久未使用的页面作为被淘汰的页面。该算法需要为每个页面设置一个访问字段用来记录页面上次被访问的时间,通过这个时

3、间来决定淘汰哪一个页面。主要变量及函数说明如表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 pageI

4、nfor * page页面号串5. 实验代码清单#include #include #include #define Bsize 3#define Psize 20struct pageInfor int content;/*页面号*/ int timer;/*被访问标记*/;void PRA();/*初始化*/int findSpace();/*查找是否有空闲内存*/int findExist(int curpage);/*查找内存中是否有该页面*/int findReplace();/*查找应予置换的页面*/void display();/*显示*/void FIFO();/*FIFO算法

5、*/void LRU();/*LRU算法*/void Optimal();/*OPTIMAL算法*/void BlockClear();/*BLOCK恢复*/struct pageInfor * block;/*物理块*/struct pageInfor * page;/*页面号串*/int QString20;void PRA() int i,n;printf(请输入页面号引用串:n);for(i=0;i20;i+)scanf(%d,&QStringi);printf(您输入页面号引用串为:n);printf(=n);for(i=0;i20;i+)printf(%dt,QStringi);p

6、rintf(=n);block=(struct pageInfor *)malloc(sizeof(struct pageInfor);for(i=0; iBsize; i+) blocki.content = -1;blocki.timer = 0;page = (struct pageInfor *)malloc(sizeof(struct pageInfor)*Psize);for(i=0; iPsize; i+) pagei.content = QStringi;pagei.timer = 0;int findSpace()int i=0;for(i=0; iBsize; i+)if(

7、blocki.content = -1)return i;/*找到空闲内存,返回BLOCK中位置*/return -1;int findExist(int curpage)int i=0;for(i=0; iBsize; i+)if(blocki.content = pagecurpage.content)return i;/*找到内存中有该页面,返回BLOCK中位置*/return -1;int findReplace()int pos = 0,i;for(i=0; i= blockpos.timer)pos = i;/*找到应予置换页面,返回BLOCK中位置*/return pos;voi

8、d display()int i=0;for(i=0; iBsize; i+)if(blocki.content != -1)printf(%dt,blocki.content);printf(n);void Optimal()int exist,space,position,i,k,j ;for(i=0; iPsize; i+) exist = findExist(i);if(exist != -1) printf(不缺页n);else space = findSpace();if(space != -1) blockspace = pagei;display();else for(k=0;

9、 kBsize; k+)for(j=i; jPsize; j+) if(blockk.content != pagej.content) blockk.timer = 1000;else blockk.timer = j;break;position = findReplace();blockposition = pagei;display();getch();system(cls);void LRU()int exist,space,position,i,k,j ;for(i=0; iPsize; i+) exist = findExist(i);if(exist != -1) printf

10、(不缺页n);blockexist.timer = -1; else space = findSpace();if(space != -1) blockspace = pagei;display();else position = findReplace();blockposition = pagei;display();for(j=0; jBsize; j+)blockj.timer+;getch();system(cls);void FIFO()int exist,space,position,i,k,j ;for(i=0; iPsize; i+) exist = findExist(i)

11、;if(exist != -1) printf(不缺页n);else space = findSpace();if(space != -1) blockspace = pagei;display();else position = findReplace();blockposition = pagei;display();for(j=0; jBsize; j+)blockj.timer+;/*BLOCK中所有页面TIMER+*/getch();system(cls);void BlockClear()/清空页面信息int i;for(i=0; iBsize; i+) blocki.conten

12、t = -1;blocki.timer = 0;void main() PRA();system(color 2); int select=1;while(select) printf(系统本111项静怡小组页面置换算法程序n);printf(请按以下菜单选择:n);printf(1tOptimalt算法n);printf(2tFIFOt算法n);printf(3tLRUt算法n);printf(0t退出n);scanf(%d,&select);switch(select) case 0:break;case 1:printf(Optimal算法结果如下:n);Optimal();break;

13、case 2:printf(FIFO算法结果如下:n);FIFO();break;case 3:printf(LRU算法结果如下:n);LRU();break;default:printf(菜选项输入错误,请输入(1,2,3,0)n);break;BlockClear();6. 实现输入课本中例题数据,创建3个物理模块,页面引用串为7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1运行界面如图1所示图1 输入用最佳置换算法,运行后如图2所示图2 Optinal算法用FIFO先进先出算法运行后如图3所示图3 FIFO算法用LRU最久未使用算法,运行后如图4所示图4 L

14、RU算法袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄

15、螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂

16、螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1