欢迎来到天天文库
浏览记录
ID:56525146
大小:40.50 KB
页数:11页
时间:2020-06-27
《实验四 页面置换算法代码(一).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验四页面置换算法模拟(2)一.题目要求:设计一个虚拟存储区和存工作区,编程序演示下述算法的具体实现过程,并计算访问命中率:要求设计主界面以灵活选择某算法,且以下算法都要实现1)最佳置换算法(OPT):将以后永不使用的或许是在最长(未来)时间不再被访问的页面换出。2)先进先出算法(FIFO):淘汰最先进入存的页面,即选择在存中驻留时间最久的页面予以淘汰。3)最近最久未使用算法(LRU):淘汰最近最久未被使用的页面。4)最不经常使用算法(LFU)二.实验目的:1、用C语言编写OPT、FIFO、LRU,LFU四种置换算法。2、熟悉存分页管理策略。3、了解页
2、面置换的算法。4、掌握一般常用的调度算法。5、根据方案使算法得以模拟实现。6、锻炼知识的运用能力和实践能力。三.相关知识:1.虚拟存储器的引入:局部性原理:程序在执行时在一较短时间仅限于某个部分;相应的,它所访问的存储空间也局限于某个区域,它主要表现在以下两个方面:时间局限性和空间局限性。2.虚拟存储器的定义:虚拟存储器是只具有请求调入功能和置换功能,能从逻辑上对存容量进行扩充的一种存储器系统。3.虚拟存储器的实现方式:分页请求系统,它是在分页系统的基础上,增加了请求调页功能、页面置换功能所形成的页面形式虚拟存储系统。请求分段系统,它是在分段系统的基础
3、上,增加了请求调段及分段置换功能后,所形成的段式虚拟存储系统。4.页面分配:平均分配算法,是将系统中所有可供分配的物理块,平均分配给各个进程。按比例分配算法,根据进程的大小按比例分配物理块。考虑优先的分配算法,把存中可供分配的所有物理块分成两部分:一部分按比例地分配给各进程;另一部分则根据个进程的优先权,适当的增加其相应份额后,分配给各进程。5.页面置换算法:常用的页面置换算法有OPT、FIFO、LRU、Clock、LFU、PBA等。四.设计思想:选择置换算法,先输入所有页面号,为系统分配物理块,依次进行置换:OPT基本思想:是用一维数组page[pS
4、IZE]存储页面号序列,memery[mSIZE]是存储装入物理块中的页面。数组next[mSIZE]记录物理块中对应页面的最后访问时间。每当发生缺页时,就从物理块中找出最后访问时间最大的页面,调出该页,换入所缺的页面。【特别声明】若物理块中的页面都不再使用,则每次都置换物理块中第一个位置的页面。FIFO基本思想:是用队列存储存中的页面,队列的特点是先进先出,与该算法是一致的,所以每当发生缺页时,就从队头删除一页,而从队尾加入缺页。或者借助辅助数组time[mSIZE]记录物理块中对应页面的进入时间,每次需要置换时换出进入时间最小的页面。LRU基本思想
5、:是用一维数组page[pSIZE]存储页面号序列,memery[mSIZE]是存储装入物理块中的页面。数组flag[10]标记页面的访问时间。每当使用页面时,刷新访问时间。发生缺页时,就从物理块中页面标记最小的一页,调出该页,换入所缺的页面。五.流程图:如下页所示将页号放入物理块中,编号加1引用串编号大于物理块数?载入页号序列,从第0个得到页号开始页号在物理块中?根据选择的置换算法完成置换页号序列载完?结束是否是是是是六.源代码:如下页所示【使用C语言】#include#include#include6、.h>/*全局变量*/intmSIZE;/*物理块数*/intpSIZE;/*页面号引用串个数*/staticintmemery[10]={0};/*物理块中的页号*/staticintpage[100]={0};/*页面号引用串*/staticinttemp[100][10]={0};/*辅助数组*//*置换算法函数*/voidFIFO();voidLRU();voidOPT();/*辅助函数*/voidprint(unsignedintt);voiddesignBy();voiddownload();voidmDelay(unsignedintDe7、lay);/*主函数*/voidmain(){inti,k,code;system("color0A");designBy();printf("┃请按任意键进行初始化操作...┃");printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━┛");printf(">>>");getch();system("cls");system("color0B");printf("请输入物理块的个数(M<=10):");scanf("%d",&mSIZE);printf("请输入页面号引用串的个数(P<=100):");scanf("%d",&8、pSIZE);puts("请依次输入页面号引用串(连续输入,无需隔开):");for(i=0;
6、.h>/*全局变量*/intmSIZE;/*物理块数*/intpSIZE;/*页面号引用串个数*/staticintmemery[10]={0};/*物理块中的页号*/staticintpage[100]={0};/*页面号引用串*/staticinttemp[100][10]={0};/*辅助数组*//*置换算法函数*/voidFIFO();voidLRU();voidOPT();/*辅助函数*/voidprint(unsignedintt);voiddesignBy();voiddownload();voidmDelay(unsignedintDe
7、lay);/*主函数*/voidmain(){inti,k,code;system("color0A");designBy();printf("┃请按任意键进行初始化操作...┃");printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━┛");printf(">>>");getch();system("cls");system("color0B");printf("请输入物理块的个数(M<=10):");scanf("%d",&mSIZE);printf("请输入页面号引用串的个数(P<=100):");scanf("%d",&
8、pSIZE);puts("请依次输入页面号引用串(连续输入,无需隔开):");for(i=0;
此文档下载收益归作者所有