Desenvolvimento de sistemas em camadas

Disponível somente no TrabalhosFeitos
  • Páginas : 5 (1056 palavras )
  • Download(s) : 0
  • Publicado : 7 de dezembro de 2011
Ler documento completo
Amostra do texto
Trabalho prático 3:
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 aschamadas 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 chamadastrigger 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 nodispositivo. Ainda é importante falar de mais duas funções que fornecem após a inicialização do dispositivo, o número de blocos que o dispositivo possui e número de bytes de cada bloco.

SERVIÇO DE LOG
como os logs são identificados, como cada mensagem é representada, como são controlados os blocos. Os logs são representados por uma estrutura que armazena o nome do log, o estado ou modo em que ele seencontra que pode ser fechado, aberto para leitura ou aberto para escrita, armazena também o número do primeiro e do último bloco que utiliza. Conforme a requisição o serviço de logs está limitado ao número de 16 logs. Sendo assim um vetor de logs de 16 posições é utilizado para gerenciar os logs que estejam sendo trabalhados. O bloco 0 do dispositivo é utilizado para armazenar a relação dos logs,cada log é representado por um par de números separados pelo caractere “#”. Estes pares de números indicam o primeiro e último bloco de cada log. Quando o serviço de log é inicializado ele requisita os dados do bloco 0 e a string retornada é tratada de forma a separar os grupos de numeros(caracteres) em blocos de strings separados pelo “#”, estes blocos são percorridos e para cada par de dado oprimeiro número é utilizado para requisitar o primeiro bloco que pertence a um log e ali temos o nome deste log, juntamente com os pares de números o nome lido é utilizado para inicializar uma posição do vetor de logs. Todos os logs inicializados no vetor tem o campo modo ajustado a fechado. Caso não haja nenhum dado no bloco 0, o dispositivo está vazio. A função logserv_openlog recebe um nome de loge percorre o vetor de logs procurando localizá-lo pelo nome. Caso não seja localizado então uma posição é inicializada para o nome dado. Sendo localizado ou não ao campo modo é atribuído o modo solicitado. Os logs tem no início de cada bloco um valor inteiro que determina o encadeamento de blocos. Se o valor for -1 este é o último bloco, qualquer valor positivo maior que zero aponta o próximo...
tracking img