操作系统FIFO算法(先进先出算法)
简介:本文章是作者学习操作系统期间所创作的FIFO算法。
import java.util.*;
/*
* 这是一个分页算法FIFO
* */
public class Main
{
static void Travse(Queue<Integer> queue)
{
for (Integer i : queue)
{
System.out.print(i + " ");
}
System.out.println();
}
public static void main(String[] args) {
Scanner in = new Scanner (System.in);
// 内存访问顺序
System.out.println("内存的访问顺序:");
int numPage = in.nextInt();
// System.out.println(numPage);
// 页面中断的次数
int cnt = 0;
// 内存块的数量
System.out.println("内存的数量:");
int numMemory = in.nextInt();
// 这个队列就用来存放当前处于内存条中的序号
Queue<Integer> queue = new LinkedList<>();
System.out.println("输入内存:");
for (int i = 0; i < numPage; ++ i)
{
// 输入页面号
int num = in.nextInt();
// 队列不为空 然后可以放进去 这个时候 会缺页中断
if (queue.size() < numMemory)
{
if (queue.contains(num) == false)
{
queue.add(num);
cnt ++;
}
}
else
{
// 如果这个数字在队列里面
if (queue.contains(num) == false)
{
// 队首元素丢掉
queue.poll();
queue.add(num);
cnt ++;
}
else
{
}
}
Travse(queue);
}
// System.out.println(cnt);
System.out.printf("%.1f%%", (double)cnt / (double)numPage * 100);
}
}