Desenvolvimento de sistemas em camadas
Desenvolvimento em camadas
Rodrigo Otávio Passos Ferreira
Departamento de Ciência da Computação – Universidade Federal de Minas Gerais (UFMG) rodrixl@gmail.com Introdução
O trabalho prático 3 requisita a implementação de um sistema de entradas e saídas simples que atua sobre um hardware simulado em software. O projeto foi desenvolvido segundo a abstração de camadas. A camada do usuário e a do dispositivo foram fornecidos pelo professor, sendo a primeira um programa que testa o sistema de E/S e o segundo uma aplicação que simula um hardware e disponibiliza acesso para leitura e escrita no mesmo. As camadas intermediárias foram implementadas durante o trabalho, sendo duas. A primeira é a implementação de um driver que faz o acionamento do dispositivo e as chamadas do sistema operacional. A segunda é um serviço de registro de logs que utiliza as camadas inferiores.
Implementação
ACIONADOR
A implementação do acionador consistiu em coordenar as funções diponibilizadas pelo dispositivo para que o mesmo funcionasse corretamente executando tarefas como inicializar o dispositivo, salvar e ler dados no dispositivo e finalmente encerrar seu funcionamento. Para cada operação foi implementada uma função dentro da interface driver que disponibiliza as mesmas para a camada superior de serviço de registro de logs. Todas as funções tem um primeiro passo comum que é atribuir ao registrador hw_command_reg do dispositivo um valor inteiro, que representa a operação que desejamos que o mesmo realize. Os dois últimos passos também são comuns que são as chamadas trigger e wait que dizem ao dispositivo para executar a instrução e para esperar o seu término antes de atender nova requisição. As funções de leitura e escrita tem alguns itens a mais que são a identificação do bloco do dispositivo que desejamos acessar e o endereço do buffer que deve ser utilizado para receber os dados lidos no dispositivos, ou que possui os dados a serem escritos no