实验3请求调页存储管理方式的模拟
1实验目的
通过对页面、页表、地址转换和页面置换过程的模拟,加深对请求调页系统的原理和实现过程的理解。
2实验内容
(1)假设每个页面中可存放10条指令,分配给一作业的内存块数为4。
(2)模拟一作业的执行过程。该作业共有320条指令,即它的地址空间为32页,目前它的所有页都还未调入内存。在模拟过程中,如果所访问的指令已经在内存中,则显示其物理地址,并转下一条指令。如果所访问的指令还未装入内存,则发生缺页,此时需记录缺页的次数,并将相应页调入内存。如果4个内存块中均已装入该作业,则需进行页面置换。最后显示其物理地址,并转下一条指令。在所有320条指令执行完毕后,请计算并显示作业运行过程中发生的缺页率。
(3)置换算法:请分别考虑OPT、FIFO和LRU算法。
(4)作业中指令的访问次序按下述原则生成:
?50%的指令是顺序执行的。
?25%的指令是均匀分布在前地址部分。
?25%的指令时均匀分布在后地址部分。
代码:
package mainDart;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class FIFO {
private static int times=0; //记录置换内存页面的次数
/**
* 随机产生0~319之间的数
* 产生320条指令
*
* @return 包含320条指令的数组
*/
public static int[] productNumber()
{
int order[] = new int[320]; //数组存储的数字表示指令
Random rand = new Random();
for(int i=0;i<320;i++)
{
if(i%4==0)
{