Exemple #1
0
 /**
  * Remove um processo da fila atual e adiciona em uma fila anterior
  *
  * @param Processo $processo
  * @param String $fila_novo
  */
 public function troca_fila(Processo $processo, $fila_novo)
 {
     $fila_ant = $processo->get_fila();
     //Remove da lista de fila
     unset($this->status[$fila_ant][$processo->get_id()]);
     //Verifica se a fila anterior é de maior ou menor prioridade
     if (constant($fila_ant . '_P') < constant($fila_novo . '_P')) {
         $tipo = 'down';
     } elseif (constant($fila_ant . '_P') > constant($fila_novo . '_P')) {
         $tipo = 'up';
     } else {
         $tipo = 'new';
     }
     //Reseta os contadores do processo e seta o quantum da nova fila
     $processo->set_quantum(constant($fila_novo));
     $this->processos[$processo->get_id()]['cpu_burst_ant'] = 0;
     $this->processos[$processo->get_id()]['tempo_espera'] = 0;
     //Adiciona na lista de fila
     $processo->set_fila($fila_novo);
     $this->set_fila($processo, $tipo);
 }