[英]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.