• Nenhum resultado encontrado

Com esta dissertac¸˜ao, conclu´ı-se que a utilizac¸˜ao de um co-processador implementado num sistema reconfigur´avel, ´e uma mais valia para a execuc¸˜ao do sistema de tempo-real. Ficou provado que a utilizac¸˜ao do co-processador, n˜ao s ´o elimina fontes de indeterminismo como tamb´em estabelece um tempo de execuc¸˜ao fixo para as pr ´oprias primitivas e operac¸ ˜oes internas do executivo.

O co-processador permitiu que a maior parte das funcionalidades internas do executivo OReK, passem agora a ser executadas em hardware, reduzindo a carga do executivo sobre o processador. As interrupc¸ ˜oes peri ´odicas geradas pelo temporizador interno do processador, para se proceder `a gest˜ao das activac¸ ˜oes de tarefas, ´e implementado pelo co-processador, sendo apenas feita a interrupc¸˜ao do processador, quando o escalonador em conjunto com o dispatcher determina que ´e necess´ario uma troca de contexto de tarefas. A gest˜ao dos pedidos de interrupc¸˜ao por parte de perif´ericos externos, fica tamb´em a cargo do co-processador, evitando-se assim, a interrupc¸˜ao do processador para proceder `a an´alise do pedido.

A implementac¸˜ao em hardware das operac¸ ˜oes internas do executivo, permite libertar tempo de processamento que poder´a ser entregue `as tarefas, sendo reduzido o overhead causado pela execuc¸˜ao das mesmas em software, a possibilidade de perdas de deadline por parte das tarefas e ter a possibilidade do processador operar a frequˆencias inferiores.

Ainda, visto que o co-processador foi constru´ıdo a pensar na sua utilizac¸˜ao com um processador gen´erico, permite que a sua utilizac¸˜ao seja alargada para suportar outros pro- cessadores. Estamos na presenc¸a de um co-processador escal´avel a outros sistemas.

No anexo seguinte, est´a apresentado de forma detalhada, a constituic¸˜ao do executivo OReK.

Apˆendice A

O Executivo de Tempo-real OReK

Sum´ario

Este anexo apresenta o executivo OReK (Object-oriented Real-time Kernel). Comec¸a por uma breve introduc¸˜ao, seguida da exposic¸˜ao das suas funcionalidades, arquitectura interna e implementac¸˜ao. Por fim, ´e descrita a sua utilizac¸˜ao em aplicac¸ ˜oes, sendo exibido um exem- plo concreto.

A informac¸˜ao apresentada neste anexo foi baseada em [ASRdO07] e em [dS08]. Com o consentimento e a pedido de ambos os autores, a informac¸˜ao a´ı contida foi estendida de forma a construir um documento coerente que inclua a descric¸˜ao das novas funcionalidades e plataformas suportadas pelo executivo OReK.

A.1

Introduc¸˜ao

O OReK ´e um executivo de tempo-real orientado por objectos completamente preemptivo e implementado maioritariamente em C++.

Tal como j´a foi mencionado no cap´ıtulo 2.5 - secc¸˜ao 2.1, um executivo ´e uma entidade ou um m ´odulo de software respons´avel pela execuc¸˜ao concorrente de tarefas ou processos. As func¸ ˜oes normalmente realizadas por um executivo s˜ao o escalonamento, o lanc¸amento em execuc¸˜ao, a comutac¸˜ao, a terminac¸˜ao, a comunicac¸˜ao e a sincronizac¸˜ao de tarefas. Para as duas ´ultimas func¸ ˜oes e para controlar o acesso a recursos partilhados, os executivos disponibilizam tipicamente primitivas do tipo sem´aforos, eventos, mensagens, ou outros com funcionalidades an´alogas.

Em sistemas simples ´e comum integrar num ´unico m ´odulo execut´avel, isto ´e, de forma monol´ıtica, o executivo e as tarefas que constituem o sistema. Em sistemas mais complexos que necessitem, por exemplo, de carregamento dinˆamico de tarefas ou processos, de gest˜ao hier´arquica de mem ´oria, de servic¸os de rede ou de dispositivos de entrada/sa´ıda sofisticados ´e usual utilizar-se um sistema operativo, do qual o executivo ´e uma das pec¸as fundamentais. Um sistema de tempo-real ´e normalmente um sistema de controlo reactivo que responde continuamente a eventos produzidos pelo ambiente em que est´a inserido. A resposta ´e feita de acordo com uma estrat´egia predefinida e cumprindo as restric¸˜oes temporais definidas. A execuc¸˜ao do sistema ´e despoletada por eventos que podem ser s´ıncronos (peri ´odicos) ou ass´ıncronos (aperi ´odicos) e provenientes de v´arias fontes, tais como um temporizador ou

um sensor. Em qualquer dos casos, a resposta ao evento ´e feita atrav´es da execuc¸˜ao de uma tarefa ou processo, onde o evento ´e processado e desencadeada a respectiva reacc¸˜ao.

Um executivo de tempo-real ´e um executivo capaz de gerir tarefas de tempo-real, isto ´e, com restric¸ ˜oes temporais precisas, destinando-se portanto a sistemas de tempo-real. Um exe- cutivo de tempo-real tem a responsabilidade de executar as tarefas cumprindo as restric¸˜oes temporais do sistema. A utilizac¸˜ao de executivos em sistemas de tempo-real para fazer a gest˜ao de tarefas tem a vantagem de simplificar o desenvolvimento, de os tornar mais robustos e de proporcionar uma abstracc¸˜ao do hardware, tornando-os independentes da pla- taforma, promovendo assim a portabilidade.

O executivo OReK descrito neste cap´ıtulo teve a sua origem no executivo ReTMiK [AGP03]. Relativamente ao ReTMiK, foram v´arias as alterac¸ ˜oes e melhoramentos intro- duzidos, nomeadamente:

• A convers ˜ao do c ´odigo fonte escrito em linguagem C para C++ e adopc¸˜ao do paradigma de orientac¸˜ao por objectos.

• A gest ˜ao de tarefas com base em listas bi-ligadas de forma a optimizar a sua manipulac¸˜ao. • O suporte para conjuntos heterog´eneos de tarefas incluindo as de tempo-real cr´ıticas e

n˜ao cr´ıticas, quer peri ´odicas quer aperi ´odicas e tarefas ordin´arias de baixa prioridade. • A capacidade de gest˜ao de tarefas em grupos definidos pela aplicac¸˜ao.

• A adic¸ ˜ao de primitivas de controlo da preempc¸˜ao das tarefas e de sincronizac¸˜ao baseada em sem´aforos com limitac¸˜ao do tempo de bloqueio em que ocorrem fen´omenos de invers˜ao de prioridade nas tarefas em execuc¸˜ao.

• A inclus ˜ao dos mecanismos que permitam tirar partido das capacidades de multi-tarefa simultˆanea do processador ARPA-MT [ASRdO07].

• O suporte de utilizac¸˜ao do co-processador gen´erico OReK-CP, para acelerac¸˜ao e me- lhoramento do determinismo do executivo OReK.

Documentos relacionados