java - 调度算法存储

标签 java priority-queue

我需要一些帮助来找到一种有效的数据存储方法。我正在编写一个使用优先级队列的调度算法,其中包括尚未提交、就绪、运行、阻塞和完成。所有进程都以尚未提交状态开始。我的信息来自标准输入。

下面每一行(分别)解释:

第一行 = 系统中的 CPU(1 到 4)、进程数量(1 到 25)以及量子大小(1 或更大)。 第二/第三 = 进程 ID(1 到 999)、进程优先级(1 到 10)、 提交时间(非负),所需的总CPU时间(1到1000), 需要输入/输出之前的计算时间(1 到 100), 以及每个计算 I/O 周期的输入/输出时间(1 到 1000)。

Sample Input
1 2 10
1 1 0 10 5 10
2 2 3 10 5 10

第二行和第三行是独立的进程,最多可以有 25 个进程。最初我想将每个进程存储到自己的数组中,这样我就可以轻松地将数组从一个队列移动到另一个队列,但创建 25 个不同的数组,然后可能不使用它们,效率非常低。有没有一种更简单的方法来存储我的“进程”,以便我可以在状态之间移动它们(由队列表示)?

最佳答案

我将创建一个 Process 类,其中包含上面第二/第三行表示的状态。像这样的东西:

class Process {
    private int pid;
    private int priority;
    private int submissionTime;
    private int totalCpuTime;
}

并将该类的实例存储在队列中。没有理由不为等待进程建立队列。然后根据需要将实例移动到其他队列。

关于java - 调度算法存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9668740/

相关文章:

java - 我正在尝试运行 BFS Algo,但它让我失望了

c++ - 在优先级队列中配对

java - 使用优先级堆/比较器时输出不规则

c++ - 将比较器传递给声明为类成员的 priority_queue

java - 线程 "main"java.lang.NoSuchFieldError : INSTANCE 中的异常

java - Android 通知打开最后一个 Activity 而不是正确的 Activity

Docker 容器中的 Java RMI 服务器

c++ - 如果容器不分配,STL 的 priority_queue 会重新分配吗?

java - Android webview +javascript 未在 android 4.0.x,3.x 中显示输出

java - 无法使用 JBoss Marshalling API 序列化 org.dom4j.Document