上传者: xiamenjingxian
|
上传时间: 2022-12-17 14:59:14
|
文件大小: 9KB
|
文件类型: CPP
2.设计一个虚拟存储区和内存工作区,并使用下述算法计算访问命中率。
1) 最佳置换算法(Optimal)
2) 先进先出法(Fisrt In First Out)
3) 最近最久未使用(Least Recently Used)
4) 最不经常使用法(Least Frequently Used)
5) 最近未使用法(No Used Recently)
其中,命中率=1-页面失效次数/页地址流长度。
试对上述算法的性能加以较各:页面个数和命中率间的关系;同样情况下的命中率比较。
实验准备
本实验中主要的流程:首先用srand( )和rand( )函数定义和产生指令序列,然后将指令序列变换成相应的页地址流,并针对不同的算法计算出相应的命中率。
实验可先从一个具体的例子出发。
(1)通过随机数产生一个指令序列,共2048条指令。指令的地址按下述原则生成:
A:50%的指令是顺序执行的
B:25%的指令是均匀分布在前地址部分
C:25%的指令是均匀分布在后地址部分
具体的实施方法是:
A:在[0,1023]的指令地址之间随机选取一起点m
B:顺序执行一条指令,即执行地址为m+1的指令
C:在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’
D:顺序执行一条指令,其地址为m’+1
E:在后地址[m’+2,2047]中随机选取一条指令并执行
F:重复步骤A-E,直到2048次指令
(2)将指令序列变换为页地址流
设:页面大小为4K;
用户内存容量4页到32页;
用户虚存容量为32K。
在用户虚存中,按每K存放64条指令排列虚存地址,即2048条指令在虚存中的存放方式为:
第 0 条-第 63 条指令为第0页(对应虚存地址为[0,63])
第64条-第127条指令为第1页(对应虚存地址为[64,127])
………………………………
第1984条-第2047条指令为第31页(对应虚存地址为[1984,2047])
按以上方式,用户指令可组成32页。