Monitoramento do fluxo de controle de processadores embarcados baseado em profiling de software - Rocha, Cláudia Antunes (2007)
Nos últimos anos, observa-se com grande euforia o crescimento do mercado de sistemas embarcados nas áreas econômico-sociais de grande importância, tais como a saúde, telecomunicações, automotiva e aeroespacial, entre outras. Como conseqüência, exige-se maior robustez tanto do hardware quanto do software integrante destes sistemas, além de componentes de baixo custo, principalmente memória. Dentre os tipos possíveis de falhas, as falhas que alteram o fluxo de controle de processadores que executam aplicações embarcadas, por implicarem em quase sempre em falhas catastróficas do sistema, são focadas nesta dissertação. Por falhas catastróficas, entende-se como sendo aquelas falhas que além de induzir o sistema a produzir um comportamento diferente daquele esperado para a sua função, implicam na maioria das vezes também na reinicialização do sistema como forma de recuperação da falha. Assim, a utilização de técnicas capazes de detectar estes tipos de falhas evita que as mesmas se propaguem pelo sistema e acabem gerando saídas incorretas, pois tais falhas podem ser catastróficas para a segurança dos usuários e para a imagem e reputação das empresas. Porém, a utilização de técnicas de detecção de falhas gera um aumento na taxa de ocupação de memória do sistema, bem como provoca aumento da degradação de desempenho, o que pode ser considerado um fator crítico tratando-se de aplicações embarcadas de tempo-real. Como alternativa para minimizar estes fatores, três hipóteses foram investigadas, sendo uma delas implementada. Assim, nesta dissertação propõe-se uma abordagem baseada em software profiling que analisa o grafo de fluxo de controle da aplicação, visando à otimização do número de assinaturas (checkpoints) a serem inseridas no código-fonte. Para validar a abordagem proposta, foi realizada por simulação a injeção de três tipos de falhas: jump, nop e bit-flip, sobre diferentes programas aplicativos. Este processo de injeção de falhas foi acelerado via prototipagem do sistema em hardware, através do uso de um FPGA (Field-Programmable Gate Array) em uma placa comercial da Xilinx. A análise dos resultados obtidos indica que a técnica proposta reduz o número de assinaturas inseridas no código da aplicação, e portanto, minimizando o overhead de memória e a degradação do desempenho do sistema, ao passo que mantém aproximadamente inalterado nível de cobertura de falhas quando comparada a outras técnicas atualmente existentes na literatura