mirror of
https://github.com/zach-sb/COMP2240-Assignment1.git
synced 2024-07-02 12:04:00 +10:00
88 lines
2.2 KiB
Java
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");
|
|
}
|
|
}
|
|
} |