diff --git a/memoryManagement.java b/memoryManagement.java index 27ccfc7..e6ed249 100644 --- a/memoryManagement.java +++ b/memoryManagement.java @@ -3,6 +3,7 @@ */ import java.io.File; +import java.io.PrintWriter; import java.util.Random; import java.util.Scanner; import java.util.StringTokenizer; @@ -15,6 +16,7 @@ public class memoryManagement{ public static void main(String args[])throws Exception{ File file = new File("null"); + PrintWriter out = new PrintWriter(new File("log.txt")); Scanner keyboard = new Scanner(System.in); Scanner fileScan; StringTokenizer token; @@ -22,7 +24,7 @@ public class memoryManagement{ String read = null; int jobLength = 0; - long timeStart, timeEnd; + long[] timeStart = new long[5], timeEnd = new long[5]; //*Job Info* int[] id = new int[JOBAMOUNT]; @@ -30,12 +32,11 @@ public class memoryManagement{ int[] time = new int[JOBAMOUNT]; //******Add your algorithm class here******// - //baseAlgorithm alg = new dummyAlgorithm(MEMORYSIZE); - threadedAllocation Bradlee_Speice = new threadedAllocation(MEMORYSIZE); - //FirstFit David01 = new FirstFit(); - //NextFit David02 = new NextFit(); - BestFitAlgorithm David_Weber_BestFit = new BestFitAlgorithm(MEMORYSIZE); - WorstFitAlgorithm David_Weber_WorstFit = new WorstFitAlgorithm(MEMORYSIZE); + threadedAllocation threadedFit = new threadedAllocation(MEMORYSIZE); + FirstFit firstFit = new FirstFit(); + NextFit nextFit = new NextFit(); + BestFitAlgorithm bestFit = new BestFitAlgorithm(MEMORYSIZE); + WorstFitAlgorithm worstFit = new WorstFitAlgorithm(MEMORYSIZE); //Gets a file name, else creates five random jobs do{ @@ -52,8 +53,8 @@ public class memoryManagement{ jobLength = JOBAMOUNT; for(int i = 0; i < jobLength; i++){ id[i] = i+1; - size[i] = rand.nextInt(5)+1; - time[i] = rand.nextInt(1000)+2001; + size[i] = rand.nextInt(MEMORYSIZE / 10)+1; + time[i] = rand.nextInt(5000)+ 101; } System.out.println("complete"); } @@ -70,44 +71,69 @@ public class memoryManagement{ System.out.println("complete"); System.out.println(jobLength+" jobs found on file"); } - - - //Send jobs to algorithm, time is calculated and printed out after completion - System.out.print("Sending jobs to threaded allocation algorithm..."); - timeStart = System.currentTimeMillis(); //Note that we use `jobLength - 1` to compensate for the id above - for(int i = 0; i < jobLength - 1; i++){ - Bradlee_Speice.allocate(id[i], size[i], time[i]); - //David01.allocate(id[i], size[i], time[i]); - //David02.allocate(id[i], size[i], time[i]); - } - timeEnd = System.currentTimeMillis() - timeStart; + //Threaded Fit + System.out.print("Sending jobs to threaded allocation algorithm..."); + timeStart[0] = System.currentTimeMillis(); + for(int i = 0; i < jobLength - 1; i++) + threadedFit.allocate(id[i], size[i], time[i]); + timeEnd[0] = System.currentTimeMillis() - timeStart[0]; System.out.println("complete"); - System.out.println("Elapsed time for threaded allocation algorithm to complete " + jobLength + - " jobs is " + timeEnd + " milliseconds"); - - //***Best Fit (David Weber)*** - timeStart = System.currentTimeMillis(); - for(int i = 0; i < jobLength - 1; i++){ - David_Weber_BestFit.allocate(id[i], size[i], time[i]); - } - - timeEnd = System.currentTimeMillis() - timeStart; - System.out.println("Elapsed time for best fit allocation algorithm to complete " + jobLength + " jobs is " + timeEnd + " milliseconds"); - - //***Worst Fit (David Weber)*** - timeStart = System.currentTimeMillis(); - for(int i = 0; i < jobLength - 1; i++){ - David_Weber_WorstFit.allocate(id[i], size[i], time[i]); - } - - timeEnd = System.currentTimeMillis() - timeStart; - System.out.println("Elapsed time for worst fit allocation algorithm to complete " + jobLength + " jobs is " + timeEnd + " milliseconds"); - - //Put other algorithms here. - + System.out.println("Elapsed time for threaded allocation algorithm to complete " + jobLength + " jobs is " + timeEnd[0] + " milliseconds"); + + //Best Fit + System.out.print("Sending jobs to best fit allocation algorithm..."); + timeStart[1] = System.currentTimeMillis(); + for(int i = 0; i < jobLength - 1; i++) + bestFit.allocate(id[i], size[i], time[i]); + timeEnd[1] = System.currentTimeMillis() - timeStart[1]; + System.out.println("complete"); + System.out.println("Elapsed time for best fit allocation algorithm to complete " + jobLength + " jobs is " + timeEnd[1] + " milliseconds"); + + //Worst Fit + System.out.print("Sending jobs to worst fit allocation algorithm..."); + timeStart[2] = System.currentTimeMillis(); + for(int i = 0; i < jobLength - 1; i++) + worstFit.allocate(id[i], size[i], time[i]); + timeEnd[2] = System.currentTimeMillis() - timeStart[2]; + System.out.println("complete"); + System.out.println("Elapsed time for worst fit allocation algorithm to complete " + jobLength + " jobs is " + timeEnd[2] + " milliseconds"); + + //First Fit + System.out.print("Sending jobs to first fit allocation algorithm..."); + timeStart[3] = System.currentTimeMillis(); + for(int i = 0; i < jobLength - 1; i++) + firstFit.allocate(id[i], size[i], time[i]); + timeEnd[3] = System.currentTimeMillis() - timeStart[3]; + System.out.println("complete"); + System.out.println("Elapsed time for first fit allocation algorithm to complete " + jobLength + " jobs is " + timeEnd[3] + " milliseconds"); + + //Next Fit + System.out.print("Sending jobs to next fit allocation algorithm..."); + timeStart[4] = System.currentTimeMillis(); + for(int i = 0; i < jobLength - 1; i++) + nextFit.allocate(id[i], size[i], time[i]); + timeEnd[4] = System.currentTimeMillis() - timeStart[4]; + System.out.println("complete"); + System.out.println("Elapsed time for next fit allocation algorithm to complete " + jobLength + " jobs is " + timeEnd[4] + " milliseconds"); + + System.out.println("Printing to log..."); + out.println("Memory Management Log"); + out.println("---------------------------"); + out.println("Job Amount: " + jobLength); + out.println("Memory Size: " + MEMORYSIZE); + out.println("---------------------------"); + out.println("Final Times (All times in milliseconds)"); + out.println("Threaded time: " + timeEnd[0]); + out.println("Best fit time: " + timeEnd[0]); + out.println("Worst fit time: " + timeEnd[0]); + out.println("First fit time: " + timeEnd[0]); + out.println("Next fit time: " + timeEnd[0]); + out.close(); + System.out.println("complete"); + System.out.println("Completed Successfully"); //Forcibly close down all threads System.exit(0);