2021-08-27 12:08:29 +10:00

88 lines
2.2 KiB
Java

import java.util.LinkedList;
public class FCFS {
private int timeStep = 0;
private int current = 0;
private int disp;
private int timeLastDisp = -1;
LinkedList<Process> processList = new LinkedList<>();
LinkedList<Process> waitingQueue = new LinkedList<>();
LinkedList<Process> newProcesses = new LinkedList<>();
//Constructors
public FCFS(int dispInput, LinkedList<Process> processListInput)
{
disp = dispInput;
processList = processListInput;
}
private void checkForArrivals()
{
for(int i = 0; i< processList.size(); i++)
{
if((processList.get(i).getArrive()<=timeStep) && (processList.get(i).getArrive() > timeLastDisp))
{
newProcesses.add(processList.get(i));
}
else
{
}
}
for(int i =0; i < newProcesses.size(); i++)
{
waitingQueue.add(newProcesses.get(i));
}
newProcesses.clear();
}
public void runDispatch()
{
System.out.println("FCFS:");
do
{
timeStep+=disp;
checkForArrivals();
timeLastDisp = timeStep;
runProcess(waitingQueue.removeFirst());
}while(waitingQueue.size()!=0);
//...
printResults();
}
private void runProcess(Process input)
{
int startTime = timeStep;
int endTime = -1;
System.out.println("T"+startTime+": "+input.getId());
for(int i = 0; i < input.getExecSize(); i++)
{
timeStep++;
}
endTime = timeStep;
input.saveTurnTime(endTime-input.getArrive());
input.saveWaitTime(startTime-input.getArrive());
}
public void printResults()
{
System.out.println("\nProcess \tTurnaround Time \tWaiting Time");
for (int i = 0; i < processList.size(); i++)
{
System.out.print(processList.get(i).getId()+"\t\t");
System.out.print(processList.get(i).getTurnTime()+"\t\t\t");
System.out.print(processList.get(i).getWaitTime()+"\n");
}
}
}