/** * 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); }