J'ai une file d'attente de travaux avec 500 travaux qui a un jobName String, int arrivalTime, int cpuTime, et String pageFaults (qui pour les pageFaults il ressemble à ceci dans le fichier ... "" 12 , 25, 100, 120 "" et il est lu comme une chaîne). Et je dois calculer ce qui suit ...Calculs d'algorithmes de processeur FCFS et SRT
1) Débit =?
2) Moyenne = Temps d'attente startTime - arrivalTime
3) Moyenne = Délai d'exécution CPUTIME + waitingTime + FinishTime - arrivalTime
4) CPU Temps d'inactivité =?
-startTime =?
-finishTime =?
Quel est le calcul pour le débit, le temps d'inactivité du processeur, startTime et finishTime?
Est-ce que mon temps d'attente moyen et mes calculs de temps d'exécution moyens sont corrects?
En outre, comment puis-je coder ces calculs?
Et ceci est fait en utilisant les algorithmes du premier arrivé premier servi et du temps restant le plus court.
Voici ce que j'ai jusqu'à présent,
Première classe:
J'ai commencé à itérer le ArrayList et le codage d'une partie des calculs, mais qui est aussi loin que je peux obtenir.
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();
}
}
Deuxième classe:
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());
}
}