Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.30 KB | None | 0 0
  1. package defaultz;
  2. import java.util.List;
  3. import java.util.ArrayList;
  4. import java.util.Collections;
  5.  
  6. public class Main {
  7. static int currentBurst = 45;
  8. static int currentTime = 0;
  9. static int finishExec = 0;
  10.  
  11. static ProcessInfo p1 = new ProcessInfo();
  12. static ProcessInfo p2 = new ProcessInfo();
  13. static ProcessInfo p3 = new ProcessInfo();
  14. static ProcessInfo p4 = new ProcessInfo();
  15. static ProcessInfo p5 = new ProcessInfo();
  16. static ProcessInfo p6 = new ProcessInfo();
  17. static ProcessInfo p7 = new ProcessInfo();
  18. static ProcessInfo p8 = new ProcessInfo();
  19. static ProcessInfo p9 = new ProcessInfo();
  20.  
  21.  
  22. static List<ProcessInfo> queue = new ArrayList<ProcessInfo>();
  23. static ProcessInfo active = new ProcessInfo();
  24. static List<String> completedList = new ArrayList<String>();
  25. static List<ProcessInfo> io = new ArrayList<ProcessInfo>();
  26.  
  27. public static void main(String[] args) {
  28.  
  29. int p1CPU[] = { 4, 3, 2, 4, 4, 4, 3, 4 };
  30. int p1IO[] = { 27, 31, 43, 18, 22, 26, 24 };
  31. int p2CPU[] = { 16, 17, 5, 16, 7, 13, 11, 6, 3, 4 };
  32. int p2IO[] = { 24, 21, 36, 26, 31, 28, 21, 13, 11 };
  33. int p3CPU[] = { 8, 12, 18, 14, 4, 15, 14, 5, 6 };
  34. int p3IO[] = { 33, 41, 65, 21, 61, 18, 26, 31 };
  35. int p4CPU[] = { 3, 4, 4, 3, 4, 3, 6, 5, 3 };
  36. int p4IO[] = { 35, 41, 45, 51, 61, 54, 82, 77 };
  37. int p5CPU[] = { 4, 5, 7, 12, 9, 4, 9, 7, 8 };
  38. int p5IO[] = { 48, 44, 42, 37, 46, 41, 31, 43 };
  39. int p6CPU[] = { 11, 4, 5, 6, 7, 9, 12, 15, 8 };
  40. int p6IO[] = { 22, 8, 10, 12, 14, 18, 24, 30 };
  41. int p7CPU[] = { 14, 17, 11, 15, 4, 7, 16, 10 };
  42. int p7IO[] = { 46, 41, 42, 21, 32, 19, 33 };
  43. int p8CPU[] = { 4, 5, 6, 14, 16, 6, 7 };
  44. int p8IO[] = { 14, 33, 51, 63, 87, 74 };
  45. int p9CPU[] = { 3, 9, 8, 4, 7, 5, 4, 5, 16 };
  46. int p9IO[] = { 37, 41, 30, 29, 33, 22, 24, 29 };
  47.  
  48. p1.setPCPU(p1CPU);
  49. p2.setPCPU(p2CPU);
  50. p3.setPCPU(p3CPU);
  51. p4.setPCPU(p4CPU);
  52. p5.setPCPU(p5CPU);
  53. p6.setPCPU(p6CPU);
  54. p7.setPCPU(p7CPU);
  55. p8.setPCPU(p8CPU);
  56. p9.setPCPU(p9CPU);
  57.  
  58. p1.setPIO(p1IO);
  59. p2.setPIO(p2IO);
  60. p3.setPIO(p3IO);
  61. p4.setPIO(p4IO);
  62. p5.setPIO(p5IO);
  63. p6.setPIO(p6IO);
  64. p7.setPIO(p7IO);
  65. p8.setPIO(p8IO);
  66. p9.setPIO(p9IO);
  67.  
  68. p1.setProcessNum("P1");
  69. p2.setProcessNum("P2");
  70. p3.setProcessNum("P3");
  71. p4.setProcessNum("P4");
  72. p5.setProcessNum("P5");
  73. p6.setProcessNum("P6");
  74. p7.setProcessNum("P7");
  75. p8.setProcessNum("P8");
  76. p9.setProcessNum("P9");
  77.  
  78. p1.setPCPUBurstAndPIONum();
  79. p2.setPCPUBurstAndPIONum();
  80. p3.setPCPUBurstAndPIONum();
  81. p4.setPCPUBurstAndPIONum();
  82. p5.setPCPUBurstAndPIONum();
  83. p6.setPCPUBurstAndPIONum();
  84. p7.setPCPUBurstAndPIONum();
  85. p8.setPCPUBurstAndPIONum();
  86. p9.setPCPUBurstAndPIONum();
  87.  
  88. queue.add(p1);
  89. queue.add(p2);
  90. queue.add(p3);
  91. queue.add(p4);
  92. queue.add(p5);
  93. queue.add(p6);
  94. queue.add(p7);
  95. queue.add(p8);
  96. queue.add(p9);
  97.  
  98. while (currentTime < 690) {
  99. SetCPUIO();
  100. setCPUburst();
  101. ProcessInfo Temp = whichProcessNext();
  102. Display(Temp);
  103. updateInfo(Temp);
  104.  
  105. }
  106. }
  107.  
  108. public static void Display(ProcessInfo Temp2) {
  109. System.out.println("\n\nCurrent Time: " + currentTime + "\n");
  110. System.out.print("Next Process on the CPU:: " + Temp2.processNum);
  111. System.out.println("\n..................................\n");
  112. System.out.println("List of processes in the ready queue:\n");
  113. System.out.println("\tProcess Burst\n");
  114. for(int i = 1; i < queue.size();i++) {
  115. if(queue.get(i).arrivalTime <= currentTime) {
  116. System.out.println("\t" + queue.get(i).processNum + "\t " + queue.get(i).PCPUBurst);
  117. }
  118. }
  119. System.out.println("\n");
  120. System.out.println("\n..................................\n");
  121. System.out.println("List of processes in I/O:\n");
  122. System.out.println("\tProcess Remaining I/O time\n");
  123.  
  124. for(int i =0; i < io.size();i++) {
  125. if(io.get(i).arrivalTime > currentTime){
  126. System.out.println(io.get(i).processNum + "\t" + io.get(i).IORemainingTime);
  127. }
  128. }
  129. System.out.println("\n..................................\n");
  130. System.out.print("Completed: ");
  131. for(int i = 0; i < completedList.size(); i++) {
  132. System.out.print(completedList.get(i) + ", ");
  133. }
  134. System.out.println("\n..................................");
  135. System.out.println("..................................\n");
  136.  
  137. }
  138.  
  139. public static void setCPUburst() {
  140. p1.PCPUBurst = p1.PCPU[p1.PCPULoc];
  141. p2.PCPUBurst = p2.PCPU[p2.PCPULoc];
  142. p3.PCPUBurst = p3.PCPU[p3.PCPULoc];
  143. p4.PCPUBurst = p4.PCPU[p4.PCPULoc];
  144. p5.PCPUBurst = p5.PCPU[p5.PCPULoc];
  145. p6.PCPUBurst = p6.PCPU[p6.PCPULoc];
  146. p7.PCPUBurst = p7.PCPU[p7.PCPULoc];
  147. p8.PCPUBurst = p8.PCPU[p8.PCPULoc];
  148. p9.PCPUBurst = p9.PCPU[p9.PCPULoc];
  149. }
  150.  
  151. public static void SetCPUIO() {
  152. p1.PIONum = p1.PIO[p1.PIOLoc];
  153. p2.PIONum = p2.PIO[p2.PIOLoc];
  154. p3.PIONum = p3.PIO[p3.PIOLoc];
  155. p4.PIONum = p4.PIO[p4.PIOLoc];
  156. p5.PIONum = p5.PIO[p5.PIOLoc];
  157. p6.PIONum = p6.PIO[p6.PIOLoc];
  158. p7.PIONum = p7.PIO[p7.PIOLoc];
  159. p8.PIONum = p8.PIO[p8.PIOLoc];
  160. p9.PIONum = p9.PIO[p9.PIOLoc];
  161.  
  162. }
  163.  
  164. public static ProcessInfo whichProcessNext() {
  165.  
  166. int x = 1000;
  167. ProcessInfo k = new ProcessInfo();
  168.  
  169. for (int i = 0; i < queue.size(); i++) {
  170. if(queue.get(i).PCPUBurst == 0) {
  171.  
  172. }
  173. else if (queue.get(i).arrivalTime < x) {
  174. x = queue.get(i).arrivalTime;
  175. k = queue.get(i);
  176. //System.out.println(x);
  177. //System.out.println(k);
  178. }
  179. }
  180. return k;
  181. }
  182.  
  183. public static void updateInfo(ProcessInfo x) {
  184.  
  185. currentTime += x.PCPUBurst;
  186. x.arrivalTime = currentTime + x.PIONum;
  187. x.PCPULoc++;
  188. x.PIOLoc++;
  189.  
  190. // turn around time
  191. // = waiting_time + burst_time for all processes
  192. //Average waiting time =
  193. // total_waiting_time / no_of_processes
  194. //Average turn around time =
  195. // total_turn_around_time / no_of_processes
  196.  
  197. if(io.add(x)) {
  198. x.IORemainingTime = x.PIONum;
  199. }
  200.  
  201. for (int i =0; i < io.size() - 1; i++){
  202. io.get(i).IORemainingTime -= x.PCPUBurst;
  203. }
  204.  
  205. x.setPCPUBurstAndPIONum();
  206. Collections.sort(queue,(a,b) -> a.arrivalTime - b.arrivalTime);
  207.  
  208. for(int i = 0; i < io.size(); i++) {
  209. if(io.get(i).IORemainingTime <= 0) {
  210. io.remove(i);
  211. }
  212. }
  213.  
  214. for(int i = 0; i < queue.size();i++) {
  215. if(queue.get(i).PCPUBurst == 0) {
  216. completedList.add(queue.get(i).processNum);
  217. queue.remove(queue.get(i));
  218. }
  219. }
  220. }
  221. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement