Exemple #1
0
 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);
         }
     }
 }
Exemple #2
0
 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();
     }
 }