一、 需求分析
设计程序模拟先进先出(FIFO)置换算法,最佳(OPT)置换算法和最近最少用(LRU)置换算法的工作过程。假设内存中分配给每个进程的最小物理块数为m,在进程运行过程中要访问的页面个数为n,页面访问序列为P1, … ,Pn,分别利用不同的页面置换算法调度进程的页面访问序列,给出页面访问序列的置换过程,计算每种算法缺页次数和缺页率。
程序的设计主要是测试先进先出FIFO,最佳置换OPT和最近最少用LRU页面置换算法的效率以及过程,对于程序员设计有很多帮助,不同的场合用不同的算法可以提高程序的效率。
二、详细设计
1、数据结构
int a[320];//存放320条指令
int p;//存放页大小
int page[320];//存放合并后要使用的页号
int PageNumber;//存放页号数量
int piece;//存放块数
2、算法流程图
a.先进先出(FIFO)置换算法:
b.最近最少用(LRU)置换算法:
c.最佳(OPT)置换算法:
三、 软件测试
1、如图一所示,通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成:
A:50%的指令是顺序执行的
B:25%的指令是均匀分布在前地址部分
C:25%的指令是均匀分布在后地址部分
具体的实施方法是:
A:在[0,319]的指令地址之间随机选取一起点m
B:顺序执行一条指令,即执行地址为m+1 的指令
C:在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m'
D:顺序执行一条指令,其地址为m'+1
E:在后地址[m'+2,319]中随机选取一条指令并执行 F:重复步骤A-E,直到320 次指令
图1.指令地址
2、如图2所示,页面大小的取值范围为1K,2K,4K,8K,16K。按照页面大小将指令地址转化化为页号。对于相邻相同的页号,合并为一个。
图2.合并后的页地址流
3.选择不同的块数和不同的页面置换算法会得出不同的缺页率,为了方便观察比较,下面选取相同的块数(4块)和不同的页面置换算法,求出缺页率。如图3-a,3-b,3-c所示:
</