CPU调度模拟器FIFO实现

时间:2018-02-20 03:06:56

标签: java scheduling simulator fifo

我很好奇如何在Java中实现FIFO(先进先出)算法。我已经创建了3个类,但必须实现FIFO和SJF(最短作业优先)的调度算法。

对于模拟器类,我们有以下变量:

private CPU cpu1;
private ArrayList<Process> ready;
private ArrayList<Process> finished;
private int time;

然后方法是:

public Process select(ArrayList<Process> ready){
    if(SCHEDULING_ALGORITHM.equals("FIFO"))
    {
        //add code here
    }
    else if(SCHEDULING_ALGORITHM.equals("SJF"))
        //add code here
    }

其他方法是:

public void addProcess(String name, int start, int length)
{
    Process temp = new Process(name, start, length);
    ready.add(temp);
}

还有另外两个类Process和CPU。流程保存有关应存储在那里的单个流程的任何信息。

1 个答案:

答案 0 :(得分:0)

FIFO是队列的确切结构。您可以使用Java的ArrayDeque实现为FIFO实现创建队列。使用ArrayDeque上的poll()方法从队列中获取下一个对象。

ArrayDeque<Object-Type-Here> queue = new ArrayDeque<>();
//add your objects to the queue here in a first-in-first-out manner
------------------------------
//Here's how to get the first thing out of the queue
queue.poll();

对于SJF,您可以使用最小堆。为此,请使用Java的PriorityQueue实现。您可能需要实现Comparable或创建compareTo函数,具体取决于您希望如何实现解决方案。 compareTo函数将允许priorityQueue像min-heap一样自动排序。也可以使用poll()方法。

PriorityQueue<Object-Type-Here> pq = new PriorityQueue<>();
//add your objects to the min-heap here for a shortest-job-first implementation