• Nenhum resultado encontrado

5 SIMULADOR AMNESIA

6.3 Implementações de funcionalidades

arquivo de rastro inválido, o simulador Amnesia deveria apresentar uma mensagem de erro, que fosse explicativa para o usuário. Foi definido um conjunto de entradas inválidas, para observar quais as mensagens de erro que o Amnesia apresentava.

As mensagens de erro foram reformuladas, pois não se mostravam representativas. Além disso, foi adicionada na mensagem de erro uma possível solução, que guiaria o usuário para verificar os equívocos nos arquivos de arquitetura ou rastro. Um exemplo das mensagem de erro mais representativa é apresentado na Figura22.

Figura 22 – Exemplo de mensagem de erro informando uma possível solução

6.3 Implementações de funcionalidades

Em muitas classes foram realizadas modificações de métodos, na tentativa de melhorar a legibilidade do código, principalmente na classe virtualMemory. Um exemplo de melhora de legibilidade pode ser visto no apêndiceB, onde são apresentados o antes (código5) e o depois (código6) das modificações realizadas no método translation, da classe virtualMemory.

Foi realizado um planejamento de readequação do módulo Page Table, pois o mesmo envolvia muitas classes a serem modificadas. Isso refletia tanto na interface quanto nas classes que controlavam esse módulo. O módulo Page Table estava sendo criado em uma porção da memória principal e possuía um componente próprio na interface. O módulo Page Table precisava ser removido do componente memória principal e ser apresentado somente em seu próprio componente.

Com essa alteração pode-se simular as duas formas de alocação da tabela de paginas, simulando as alocações em um conjunto de registradores ou na área de SO da memória principal. SegundoTanenbaum e Bos(2014) a forma mais simples (pelo menos conceitualmente) é ter uma tabela de página única que consiste em um conjunto de registradores, com entradas para cada página virtual, indexada pelo número da página virtual. A outra abordagem de alocação da tabela de página, considera alocar inteiramente a mesma na memória principal, onde todo o hardware necessário é um registrador único que aponta para início da tabela. Após as alterações,

para diferenciar as duas abordagens, esta mudança consistiu apenas na mudança dos parâmetros sobre o tempo de acesso.

Foram realizadas melhorias na interface do simulador Amnesia, deixando uma interface mais intuitiva e de fácil compreensão, para apresentação do conteúdo de memória virtual. Além disso, foram realizadas melhorias na apresentação dos componentes, adicionando informações que podem ajudar a entender como funcionam os acessos de leitura e de escrita. A comparação das interfaces Antiga e Nova é realizada destacando alguns pontos nas Figuras23e24.

Figura 23 – Interface do simulador Amnesia antes das modificações

Os pontos sinalizados nas Figuras23e24destacam as alterações realizadas na interface. Em 1A são apresentados todos os componentes que podem ser simulados no Amnesia, em 1B foram removidos os componentes que não são necessários nas simulações de memória virtual. Em 2A podemos ver o conteúdo do componente Page Table, que concatenava as informações dos bits R (Referência), M (Modificado) e V (Validade) com o Frame Page do endereço real. Isso dificultava a ligação de qual Frame Page continha o conteúdo da página virtual; em 2B as informações foram separadas colocando cada uma em uma coluna, além de adicionar os campos Virtual Page(índice da página virtual) e REP (campo utilizado pelos algoritmos de substituição). Outros pontos destacados nas Figuras23e24, são referentes à inclusão de informações de índices. Em 3B e 4B são apresentadas as informações de índice referente à divisão em páginas da memória principal e disco, respectivamente (essa informação não era apresentada em 3A). Em 4A é apresentada uma informação de acesso à TLB no terminal de saída. Em 5B essa informação

6.3. Implementações de funcionalidades 89

Figura 24 – Interface do simulador Amnesia após as modificações

foi reformulada apresentado a dispersão de bits, onde o endereço virtual de 32 bits é dividido nos campos TAG, SET, Word Offset, Page Offset e Byte Offset, permitindo assim a explicação do que cada campo significa para os alunos.

Algumas alterações foram herdadas do trabalho de mestrado de (TIOSSO,2015). Essas alterações estão sinalizadas pela letra C na Figura 24. Em 1C pode-se ver o nome do arquivo de arquitetura, apresentado no topo da janela do simulador. Em 2C destacam-se os passos já executados no arquivo de rastro (com a palavra Step). Em 3C o botão SAVE é ativado no final da simulação e quando acionado salva um log com todas as informações do arquivo de arquitetura, do rastro, acessos às memórias, entre outras informações daquela simulação. No ApêndiceAé apresentado um exemplo de log (Código4) da execução.

Em 6B e 7B são apresentados os acessos às memórias destacadas por cores inclusas no componente, referentes ao último passo executado. Essa modificação foi sugerida por um aluno participante do primeiro experimento. As cores destacam em cada componente de memória os locais em que os acessos de escrita e/ou leitura ocorrerão naquele passo de execução. A cor amarela indica um acesso de leitura, a cor azul indica um acesso de escrita, a cor verde indica um acesso de leitura e um de escrita na mesma memória naquele passo de instrução.

Após carregar um arquivo de arquitetura os componentes descritos no arquivo são automaticamente abertos e pré-dispostos na área de visualização (Figura20na área C) como mostra a Figura24. Essa pré-disposição e o redimensionamento dos componentes possibilita que

o Amnesia seja executado em computadores com resolução de tela de no mínimo 1024 x 768 pixels. A pré-disposição, o auto carregamento e o redimensionamento dos componentes foram implementados neste trabalho de mestrado.

As correções dos defeitos do simulador Amnesia foram realizadas antes da incorporação dos conceitos de REA. Na próxima Seção serão apresentados os conceitos de REA incorporados no simulador Amnesia.