public void IOFInishedEventHandler(Process p) { if (Program.waitingQueue.getQueue().Contains(p)) { Program.waitingQueue.removeProcess(p); if (p.getIsDuplicateForIO()) { } else { if (Program.readyQueue.getRemainingSize() > p.getSize()) { Program.readyQueue.addQueue(p); } else { Program.suspendedReadyQueue.addQueue(p); } } } else { Program.suspendedWaitingQueue.getQueue().Remove(p); if (p.getIsDuplicateForIO()) { } else { Program.suspendedReadyQueue.addQueue(p); } } }
public void runningToBlockedHandler(Process p) { Console.WriteLine("running to Blocked"); Console.WriteLine(p.getProcessedTime()); if (p.getSize() < Program.waitingQueue.getRemainingSize()) { Program.waitingQueue.addQueue(p); } else { bool temp = false; for (int i = 0; i < Program.waitingQueue.getQueue().Count(); i++) { if (Program.waitingQueue.getQueue().ElementAt(i).getMeasuredPriority() < p.getMeasuredPriority()) { if (Program.waitingQueue.getQueue().ElementAt(i).getSize() <= p.getSize()) { Process tempProcess = Program.waitingQueue.getQueue().ElementAt(i); blockedToSuspendedBlockedHandler(tempProcess); Program.waitingQueue.addQueue(p); temp = true; break; } } } if (!temp) { Program.suspendedWaitingQueue.addQueue(p); } } if (!p.getIsDuplicateForIO()) { Program.cpu.setIdle(); } }