fifo算法代码java fifo算法实现

用java语言实现LRU算法和FIFO算法。急急急!!!!!!!

您好,百度贴吧专家团很高兴能够回答您的问题。您的采纳是我们前进的动力。

创新互联建站是一家专注于成都网站建设、网站制作与策划设计,大连网站建设哪家好?创新互联建站做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:大连等地区。大连做网站价格咨询:028-86922220

public class LRU {

private int theArray[];

private int back; //定义队尾

private int currentSize; //队列中存放元素个数

private int maxSize=5; //队列中能存放元素的个数

public LRU(){

theArray=new int[maxSize];

back=0;

currentSize=0;

}

public void queue(int a[]){

for(int i=0;ia.length;i++){

enQueue(a[i]);

}

}

public void enQueue(int x){ //入队

beUsed(x); //先判断是否已存在该页号,若存在,删除

if(currentSizemaxSize){

theArray[back]=x;

back++;

currentSize++;

}else if(currentSize==maxSize){ //满了

for(int i=0;imaxSize-1;i++){

theArray[i]=theArray[i+1];

}

theArray[maxSize-1]=x;

}

for(int i=0;icurrentSize;i++){

System.out.print(theArray[i]);

}

System.out.println();

}

public void beUsed(int x){ //判断是否已存在该页号,若存在,删除已有的

for(int i=0;icurrentSize;i++){

if(theArray[i]==x){

for(int j=i;jcurrentSize-1;j++){

theArray[j]=theArray[j+1];

}

currentSize--;

back--;

}

}

}

public static void main(String[] args) {

LRU lru=new LRU();

int a[]={4,7,0,7,1,0,1,2,1,2,6};

lru.queue(a);

}

}

java 用什么实现 FIFO队列?

java使用数据结构来实现FIFO先进先出的队列,实例如下:

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package linkedlisttest;

import java.util.ArrayList;

import java.util.Deque;

import java.util.LinkedList;

import java.util.List;

/**

*

* @author Vicky.H

* @email eclipser@163.com

*/

public class FIFOTest {

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

FIFOA fifo = new FIFOImplA(5);

for (int i = 0; i  20; i++) {

A a = new A("A:" + i);

A head = fifo.addLastSafe(a);

System.out.println(i + "\thead:" + head + "\tsize:" + fifo.size());

}

System.out.println("---------------");

System.out.println("弹出数据");

ListA polls = fifo.setMaxSize(3);

for (A a : polls) {

System.out.println("\thead:" + a);

}

System.out.println("剩余数据");

for (A a : fifo) {

System.out.println("\thead:" + a);

}

System.out.println(fifo.size());

}

}

interface FIFOT extends ListT, DequeT, Cloneable, java.io.Serializable {

/**

* 向最后添加一个新的,如果长度超过允许的最大值,则弹出一个 *

*/

T addLastSafe(T addLast);

/**

* 弹出head,如果Size = 0返回null。而不同于pop抛出异常

* @return 

*/

T pollSafe();

/**

* 获得最大保存

*

* @return

*/

int getMaxSize();

/**

* 设置最大存储范围

*

* @return 返回的是,因为改变了队列大小,导致弹出的head

*/

ListT setMaxSize(int maxSize);

}

class FIFOImplT extends LinkedListT implements FIFOT {

private int maxSize = Integer.MAX_VALUE;

private final Object synObj = new Object();

public FIFOImpl() {

super();

}

public FIFOImpl(int maxSize) {

super();

this.maxSize = maxSize;

}

@Override

public T addLastSafe(T addLast) {

synchronized (synObj) {

T head = null;

while (size() = maxSize) {

head = poll();

}

addLast(addLast);

return head;

}

}

@Override

public T pollSafe() {

synchronized (synObj) {

return poll();

}

}

@Override

public ListT setMaxSize(int maxSize) {

ListT list = null;

if (maxSize  this.maxSize) {

list = new ArrayListT();

synchronized (synObj) {

while (size()  maxSize) {

list.add(poll());

}

}

}

this.maxSize = maxSize;

return list;

}

@Override

public int getMaxSize() {

return this.maxSize;

}

}

class A {

private String name;

public A() {

}

public A(String name) {

this.name = name;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@Override

public String toString() {

return "A{" + "name=" + name + '}';

}

}

如何用java实现fifo页面置换算法

[fifo.rar] - 操作系统中内存页面的先进先出的替换算法fifo

[先进先出页面算法程序.rar] - 分别实现最佳置换算法(optimal)、先进先出(fifo)页面置换算法和最近最久未使用(LRU)置换算法,并给出各算法缺页次数和缺页率。

[0022.rar] - 模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺页中断

[Change.rar] - 用java实现操作系统的页面置换 其中包括 最佳置换算法(Optimal)、先进先出算法(First-in, First-out) 、最近最久不用的页面置换算法(LeastRecently Used Replacement)三种算法的实现

[M_Management.rar] - 操作系统中内存管理页面置换算法的模拟程序,采用的是LRU置换算法

[detail_of_44b0x_TCPIP.rar] - TCPIP 程序包加载到44b0x 的ADS1.2工程文件的说明书。说名了加载过程的细节和如何处理演示程序和代码。演示代码已经上传,大家可以搜索

[OperatingSystemPageReplacementAlgorithm.rar] - java操作系统页面置换算法: (1)进先出的算法(fifo) (2)最近最少使用的算法(LRU) (3)最佳淘汰算法(OPT) (4)最少访问页面算法(LFU) (注:由本人改成改进型Clock算法) (5)最近最不经常使用算法(NUR)

FIFO算法(假定开始时先把1,2,3,4号页面装入内存)

FIFO:

页 4 1 2 5 1 2 3 4 5

内存423 413 412 512 no no 532 534 no

LRU:

页 4 1 2 5 1 2 3 4 5

内存423 413 412 512 no no 312 342 345

楼主 看一下这个

(缺页发生 也就是 需要进行 交换 初始 装入内存的 三个页 是不发生缺页的 所以 从4开始)

上面是 装入的 页面 下面是 装入后 内存的状态 (no代表不缺页)

我 也是才看过 三级的教程 大概算了一下

FIFO 是 先进 先出 , 也就是的 每次 总是 不 最早进来的 换出去 和 页面值 无关(此算法是基于内存块的 顺序, 最长未更新的内存块 , 先更新, 明白这意思吧, 可以对照 前面的数据看下)

LRU 是 更新 最长为使用的 页面, 也就是 这个算法 是 根据页面值来 交换的

也就是 新装入的 页面值 如果 在内存快里面 有 就会更新这个 页面的 某个标记状态(标记 其多久未使用, 其实就是个 变量, 很容易实现)

显然 一直到5 都是和FIFO算法 是一样的 ,

为什么呢, 因为 前几页 都是 缺页的 并没有 改变 标记变量, 所以 就 按照 先装入,则 距今未使用时间最长,则 先交换的原则啦

开始需要 1(5后面那个) 那么 内存 目前状态时 512 , 1是在内存中的 不发生缺页,】

所以 更新 标记变量(标明 1刚被使用过)

然后 需要 2 内存中依然 存在 则 更新 2的 标记变量, 则 现在内存中 任然是 512 但是 标记变量已经变了 2最新, 1次之 , 5最久 (最久未使用) 所以下次 交换 就先 换 5

内存 变为 321 现在 3最新, 2次之, 1最久 下次缺页 就 换 1

思路 就是 这样。


当前文章:fifo算法代码java fifo算法实现
文章起源:http://scyanting.com/article/ddoipgd.html