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