Advertisement
Guest User

Untitled

a guest
Mar 25th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.11 KB | None | 0 0
  1. package SO1;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Collections;
  5. import java.util.LinkedList;
  6. import java.util.List;
  7.  
  8. public class Processor
  9. {
  10. private static List<Process> queue = new LinkedList<>();
  11. private static List<Process> waitingTime = new ArrayList<>();
  12. public static Procedure procedure;
  13. private static int generalTime =0;
  14. public static boolean canContinue = true;
  15. private static Process current;
  16. private static int timeQuantum=0;
  17.  
  18.  
  19. public static void setTimeQuantum(int q)
  20. {
  21. timeQuantum=q;
  22. }
  23.  
  24. public static void addProcessToQueue(Process p)
  25. {
  26. p.set_addTime(generalTime);
  27.  
  28. if(procedure==Procedure.SJFW && current!=null)
  29. {
  30. if(p.getTime() < current.getTime())
  31. {
  32. canContinue = false;
  33. queue.add(0,p);
  34. }
  35. }
  36.  
  37. if(procedure==Procedure.SJF || ( procedure==Procedure.SJFW && canContinue))
  38. {
  39. int i =0;
  40. while (i<queue.size() && p.getTime()>=queue.get(i).getTime())
  41. i++;
  42. queue.add(i,p);
  43. }
  44. else if(procedure==Procedure.FCFS || procedure==Procedure.ROT)
  45. {
  46. queue.add(p);
  47. }
  48.  
  49. }
  50.  
  51. private static void executeProcess() //wykonywanie wszystkich procesow oprocz ROT
  52. {
  53. if(!canContinue)
  54. canContinue=true;
  55.  
  56. while (current.getTime()>0)
  57. {
  58. if(!canContinue)
  59. return;
  60.  
  61. generalTime++;
  62. current.executePart();
  63. ProcessorManager.checkIfIsSomeNewProcess();
  64. }
  65. }
  66.  
  67. private static void executeProcessROT()
  68. {
  69. if(!canContinue)
  70. canContinue=true;
  71.  
  72. for(int i=0; i<=timeQuantum;i++)
  73. {
  74. generalTime++;
  75. current.executePart();
  76. ProcessorManager.checkIfIsSomeNewProcess();
  77.  
  78. if (current.getTime() <= 0)
  79. return;
  80. }
  81.  
  82. canContinue=false;
  83. queue.remove(current);
  84. queue.add(current);
  85.  
  86.  
  87.  
  88. }
  89.  
  90. public static void runProcessor()
  91. {
  92.  
  93. while (!queue.isEmpty())
  94. {
  95. current = queue.get(0);
  96. if(procedure==Procedure.ROT)
  97. executeProcessROT();
  98. else
  99. executeProcess();
  100.  
  101. if(canContinue)
  102. {
  103. current.set_endTime(generalTime);
  104. queue.remove(current);
  105. waitingTime.add(current);
  106. }
  107.  
  108. }
  109.  
  110. print();
  111. }
  112.  
  113. public static void countAverage()
  114. {
  115. double total =0;
  116. for(Process p: waitingTime)
  117. {
  118. total+= p.getWaitingTime();
  119. }
  120.  
  121. double average= total/ waitingTime.size();
  122.  
  123. System.out.println("ŚREDNI CZAS (" +procedure + ") :" + average + " ");
  124.  
  125. waitingTime.removeAll(waitingTime);
  126. }
  127.  
  128. public static void print()
  129. {
  130. for(Process w: waitingTime)
  131. {
  132. System.out.println(w);
  133. }
  134. }
  135.  
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement