Пример #1
0
 public void work()
 {
     if (rodando != null)
     {
         if (escalonador.randomizer.Next(1, 6) == 1)
         {
             if (rodando.blocos_de_memoria.Count > 0)
             {
                 rodando.blocos_de_memoria.ElementAt(escalonador.randomizer.Next(0, rodando.blocos_de_memoria.Count - 1)).paginaPai.acessos++;
             }
         }
         if (rodando.tempo_faltando-- <= 0)
         {
             ram.deAllocateMemory(rodando);
             rodando.status = 3;
             escalonador.abortProcess(rodando);
             rodando = null;
             return;
         }
         if (rodando.quantum_sobrando-- <= 0)
         {
             rodando.status           = 0;
             rodando.quantum_sobrando = rodando.quantum_total;
             escalonador.sendToQueue(rodando);
             rodando = null;
         }
     }
 }
Пример #2
0
 public void abortProcess(Processo a)
 {
     foreach (Processador c in processadores)
     {
         if (c.rodando == a)
         {
             c.rodando = null;
         }
     }
     if (filaEspera.Contains(a))
     {
         filaEspera.Remove(a);
     }
     ram.deAllocateMemory(a);
     filaAbortados.AddLast(a);
 }