Sistemas Operacionais 2   ::   página principal


Grupo: Guilherme A F Martins
Paulo Arion Flores

Página para acompanhamento da disciplina de Sistemas Operacionais 2. CCO, UFSC, 2004/1

Página atualizada em 08/06/04.

Time Management Module

1. Introdução
Em sistemas embutidos muitas aplicações precisam de um componente que trate da sincronização de seus evento, esse componente é o timer. O timer pode funcionar como um relógio mantendo data e horário atualizado, pode funcionar como um alarme que pode criar eventos programados e também para trabalhar com threads, pode o timer também funcionar como um cronômetro.

Sistemas em que a precisão ou o determinísmo de um evento são mais críticos precisam basear sua sincronização no timer do hardware diretamente, assim o sistema físico do timer faz interrupções nos eventos. Em outros sistemas, onde há maior tolerância, pode-se fazer uso de software para obter a sincronização. Eventos programados requerem diferentes tempos de duração, assim para cada evento um timer de software é associado. Usar software para trabalhar com timer é eficiente, tanto na instalação de um novo timer(timer de um evento), como no cancelamento e na manutenção. Os software timers também reduzem o overhead que muitas interrupções podem gerar, como acontece no caso quando o sistema possui inúmeros hard timers.

2. Análise
Da análise do domínio chegamos ao seguinte diagrama:

Fig. 1: Diagrama de análise de domínio


Dois componentes distintos são o real time clocks(RTC) e o system clocks. O RTC é um componente alimentado por bateria que mantém data e horário. Os system clocks, aqui moldado como o membro Clock, funciona da mesma forma mas deve ser atualizado em cada iniciação do sistema (através do RTC ou pelo programador em sistemas que não possuam esse hardware) e fica sendo alimentado durante todo o tempo pelo PIT(programmable interval timers).

O PIT permite que o sistema incorpore funções para eventos como a de contador(funções do membro Chronometer) e alarme(funções do membro Alarm). Permite também que a taxa, medida em interrupções por segundo, em que as interrupções são geradas seja alterada.

As interrupções quando ocorrem são tratados pelo ISR(interrupt service routines). Quando uma interrupção ocorre pode ocorrer uma atualização no clock, ou pode ocorrer uma chamada de uma função do sistema, para que processos interessados, sejam informando que algum período programado passou.

Os softwares para timer são divididos em duas partes com contextos diferentes, uma delas no nível do ISR que gera as interrupções. O ISR garante que o tempo do system clock esteja de acordo com o tempo dos softwares em execução. A outra parte, sendo acordada pela primeira parte, depois que uma passagem de tempo programada tenha decorrido, executa a sua função.

Para garantir que o computador sempre esteja rodando pode existir um serviço que sinaliza, em intervalos de tempo baseado em um hardware especial, que o sistema ainda está funcionando. Caso não gere sinalização nesse intervalo de tempo o sistema é resetado. Esse hardware que exerce essa função chama-se Watchdog. No caso do processador encontrar-se fora das rotinas que deveria estar processando ou até mesmo num estado indefinido, suspenso por uma condição de hardware anormal criada por algum distúrbio, sem que o watchdog timer receba a sinalização do sistema operacional de que tudo está bem, ele emite um sinal elétrico via sua saída física. Este sinal de saída está conectado a entrada RESET do processador, reinicializando assim todo o sistema e consequentemente, levando a CPU para estados válidos. A CPU recoloca desta forma a camada de sistema operacional em funcionamento, o qual finalmente lança novamente todas as tarefas da aplicação alvo.

Assim, baseados nessas descricões de comportamento, chegamos ao seguinte conjunto de funções necessárias para o Time Management Module, resultando no sequinte diagrama UML:
Fig. 1: Diagrama de classes


3. Implementação
Será implementado do que foi projetado o Alarm. Surgiram as seguintes dúvidas/dificuldade durante o processo de implementação até o momento: Na tentativa de trazer a tona dúvidas produzimos a seguinte implementação em pseudo-código.

3. Referências
[1] LI, Qing; YAO, Caroline. Real-Time Concepts for Embedded Systems. CMPBooks: San Franciso, 1999.
[2] Documentation. Epos Project. Disponível em: <http://epos.lisha.ufsc.br>.
[3] Embedded System Programming. Watchdog Timers.Disponível em: <http://www.embedded.com/2000/0011/0011feat4.htm>.