【发布时间】:2015-07-02 10:25:10
【问题描述】:
我有一个包含 500 个作业的作业队列,其中包含 String jobName、intarrivalTime、int cpuTime 和 String pageFaults(对于 pageFaults,它在文件中看起来像这样......“”12、25、100、120 "" 并且它作为字符串被读入)。我必须计算以下...
1)吞吐量 = ?
2)平均等待时间=开始时间-到达时间
3) 平均周转时间 = cpuTime + waitingTime + finishTime - 到达时间
4) CPU 空闲时间 = ?
-startTime = ?
-finishTime = ?
吞吐量、CPU 空闲时间、startTime 和 finishTime 的计算方法是什么?
我的平均等待时间和平均周转时间计算是否正确?
另外,我该如何对这些计算进行编码?
这些都是使用先到先服务和最短剩余时间算法完成的。
这是我目前所拥有的,
头等舱:
我已经开始遍历 ArrayList 并对部分计算进行编码,但这是我能做到的。
import java.io.File;
import java.util.ArrayList;
import java.util.Scanner;
import java.io.IOException;
public class TextFile
{
public static void main(String[] args) throws IOException
{
double startTime = (0.0);
double finishTime = (0.0);
//double throughput = (0.0);
double waitingTime = (0.0);
double turnaroundTime = (0.0);
//double cpuIdleTime = (0.0);
String jobName = " ";
int arrivalTime = (0);
int cpuTime = (0);
String pageFault = " ";
//DataObject object = new DataObject(jobName, arrivalTime, cpuTime, pageFault);
Scanner input = new Scanner(new File("JobQueue.txt"));
ArrayList<DataObject> list = new ArrayList<DataObject>();
while(input.hasNext())
{
jobName = input.next();
arrivalTime = input.nextInt();
cpuTime = input.nextInt();
pageFault = input.next();
DataObject data = new DataObject(jobName, arrivalTime, cpuTime, pageFault);
list.add(data);
}
//Calculations for FCFS
for (DataObject data : list)
{
startTime =
finishTime =
waitingTime = startTime - arrivalTime;
turnaroundTime = cpuTime + waitingTime + finishTime - arrivalTime;
}// compute throughput, average waiting time, etc
System.out.print(list);//Test output to ensure array list is working
System.out.printf("%.2f\n", turnaroundTime);
// compute throughput, average waiting time, etc...
input.close();
}
}
二等:
public class DataObject
{
private String jobName;
private int arrivalTime;
private int cpuTime;
private String pageFault;
public DataObject(String job, int arrival, int cpu, String interrupt)
{
jobName = job;
arrivalTime = arrival;
cpuTime = cpu;
pageFault = interrupt;
}
public void setjobName(String job)
{
jobName = job;
}
public String getJobName()
{
return jobName;
}
public void setArrivalTime(int arrival)
{
arrivalTime = arrival;
}
public int getArrivalTime()
{
return arrivalTime;
}
public void setcpuTime(int cpu)
{
cpuTime = cpu;
}
public int getcpuTime()
{
return cpuTime;
}
public void setPageFault(String interrupt)
{
pageFault = interrupt;
}
public String getPageFault()
{
return pageFault;
}
public String toString()
{
return String.format("\n%s %d %d %s\n", getJobName(), getArrivalTime(), getcpuTime(), getPageFault());
}
}
【问题讨论】:
标签: java algorithm operating-system processor throughput