繁体   English   中英

调度算法存储

[英]Scheduling algorithm storage

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

下面的每一行分别说明:

第一行=系统中的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个过程。 最初,我只是想将每个进程存储到自己的数组中,这样我就可以轻松地将该数组从Queue移到Queue,但是创建25个不同的数组,然后可能不使用它们效率很低。 有没有更简单的方法来存储我的“进程”,这样我就可以在状态之间移动它们(由队列表示)?

最简单的方法是重复创建4个任务(每个CPU一个)。

  • 确定下一步要执行的任务。
  • 执行那个任务
  • 重复。

您可以使用固定大小的ExecutorService执行此操作。

如果您有IO绑定的进程,而不是CPU绑定的进程,则可以尝试先确定要使用的最佳线程数,然后再保留该数量。

我将使一个Process类包含上面第二/第三行中表示的状态。 就像是:

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

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

如果这是家庭作业,并且您属于OO类,则建议您将建模过程视为您定义的类型的实例。

对于问题的另一个方面,您正在谈论预分配大小为25的数组,因为您不知道自己有多少个进程。

查看Java的集合类型。 它具有ArrayLists之类的结构,可提供对对象查找的快速索引,并且不会强迫您预先分配空间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM