在计算机中,页式虚拟存储器实现的一个难点是设计页面调度(置换)算法。其中一种实现方式是FIFO算法。
FIFO算法根据页面进入内存的时间先后选择淘汰页面,先进入内存的页面先淘汰,后进入内存的后淘汰。
假设Cache的大小为2,有5个页面请求,分别为 2 1 2 3 1,则Cache的状态转换为:(2)->(2,1)->(2,1)->(1,3)->(1,3),其中第1,2,4次缺页,总缺页次数为3。
现在给出Cache的大小n和m个页面请求,请算出缺页数。
代码如下:
1 import java.util.LinkedList; 2 import java.util.Queue; 3 import java.util.Scanner; 4 5 6 public class Main { 7 8 public static void main(String[] args) { 9 // TODO Auto-generated method stub 10 Scanner scanner=new Scanner(System.in); 11 Queue<Integer> queue=new LinkedList<>(); 12 while(scanner.hasNext()) 13 { 14 int n=scanner.nextInt();//Catche大小 15 int m=scanner.nextInt();//页面总数 16 int sum=0; 17 int copy=m; 18 19 while(copy>0) 20 { 21 int a=scanner.nextInt(); 22 23 if(!queue.contains(a)) 24 { 25 sum++; 26 if(queue.size()<n) 27 queue.add(a); 28 else{ 29 queue.poll(); 30 queue.add(a); 31 } 32 } 33 copy--; 34 35 } 36 37 System.out.println(sum); 38 sum=0; 39 queue.clear(); 40 } 41 } 42 43 }
浙公网安备 33010602011771号