示例#1
0
        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);
        }
示例#2
0
        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);
        }
        private void ExibirProcessosMemoriaPrincipal()
        {
            var processoMemoriaPrincipal = _ramService.RetornarTodosProcessos();

            _simuladorView.ExibirProcessosMemoriaPrincipal(processoMemoriaPrincipal.ConverterParaProcessoDto());
        }