private void RealizarSwapIn(float tamanhoNecessarioMB) { var processos = AplicarAlgoritmoLru(_ramService.RetornarTodosProcessos()); var enderecosLogicosProcessos = new Queue <string>(processos.Select(p => p.EnderecoLogico)); do { var enderecoLogico = enderecosLogicosProcessos.Dequeue(); var enderecoFisico = RetornarEnderecoFisicoMemoriaPrincipal(enderecoLogico); var processo = _ramService.Desalocar(enderecoFisico); _ssdService.Alocar(processo); } while (_ramService.RetornarEspacoDisponivelMB() < tamanhoNecessarioMB); }
public Processo RetornarProcesso() { var processos = _ramService.RetornarTodosProcessos(); var processoExecucao = processos.OrderBy(p => p.DuracaoSurto).FirstOrDefault(); if (processoExecucao == null) { return(null); } var enderecoFisico = _mmuService.RetornarEnderecoFisicoMemoriaPrincipal(processoExecucao.EnderecoLogico); var processo = _ramService.Desalocar(enderecoFisico); _mmuService.RealizarSwapOut(); return(processo); }