⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nur.java

📁 页面置换算法 包括fifo 先进现出
💻 JAVA
字号:
package 操作系统;

import javax.swing.JOptionPane;

public class Nur {
	public static void main(String[] args) {
		final int PROGRAM_LEN = 12;
		final int PROGRAM_NUM = 8;
		final int PAGE_LEN = 3;

		// 最近未使用置换算法(NUR)
		int[] program = new int[PROGRAM_LEN]; // program为要装入的程序
		for (int i = 0; i < PROGRAM_LEN; i++) {
			program[i] = (int) (Math.random() * PROGRAM_NUM);
		}

		// int[] program = { 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 };//用做测试
		int[] page = new int[PAGE_LEN]; // page为内存空间
		for (int j = 0; j < PAGE_LEN; j++) {
			page[j] = -1;
		}

		int[] index = new int[PAGE_LEN]; // index知道对应的内存page各个程序下次执行的先后
		for (int i = 0; i < PAGE_LEN; i++) {
			index[i] = -1;
		}

		int lostPage = 0; // 统计缺页次数

		for (int i = 0; i < PROGRAM_LEN; i++) {
			int j;
			for (j = 0; j < PAGE_LEN; j++) { // 内存page中已经存在,不缺页,继续
				if (program[i] == page[j])
					break;
			}
			if (j < PAGE_LEN)
				continue;

			lostPage++; // 不存在,则计数器加 1
			for (j = 0; j < PAGE_LEN; j++)
				// 有空闲空间的时候
				if (page[j] == -1) {
					page[j] = program[i];
					break;
				}
			if (j < PAGE_LEN) {
				continue;
			}

			int i_index = -1;// 仅用作index下标
			for (j = 0; j < PAGE_LEN; j++)
				// 需要置换出的页
				for (int k = i + 1; k < PROGRAM_LEN; k++) {
					if (page[j] == program[k]) {
						index[++i_index] = k;
						break;
					}
				}

			int suffixOfMax = 1;// 用于求最久未用的页,存储时间最长的数(index)的下标
			for (int k = 1; k < PAGE_LEN; k++) {
				if (index[k] > index[suffixOfMax])
					suffixOfMax = k;
			}
			page[suffixOfMax] = program[i];
		}

		JOptionPane
				.showMessageDialog(null, "最近未使用置换算法(NUR) " + lostPage + " 次");
	}

}
/*
 * class GetPageLongestNotUse { public GetPageLongestNotUse(int[] aProgram,int[]
 * aPage) { Program=aProgram; Page=aPage; }
 * 
 * for(int i=0;i<aProgram.length;i++){ if(Program[0]==Page[i]){
 * 
 * } } private int[] Program; private int[] Page; }
 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -