• Nenhum resultado encontrado

Um dos mecanismos fundamentais dos sistemas operacionais de tempo real (sotr) ´e o escalonador, respons´avel por alocar recursos `as tarefas do sistema de modo a completar a execu¸c˜ao destas dentro das restri¸c˜oes impostas. Em sistemas operacionais conven- cionais, os algoritmos de escalonamento s˜ao desenvolvidos a partir do pressuposto de que as tarefas s˜ao atividades desconhecidas e ativadas de forma randˆomica. Exceto pela prioridade das tarefas, nenhum outro parˆametro ´e fornecido ao sistema, de modo que tempos de computa¸c˜ao, restri¸c˜oes temporais, rela¸c˜oes de precedˆencia e comparti- lhamento de recursos n˜ao s˜ao levados em conta pelo escalonador. Desta forma, n˜ao h´a como garantir que as restri¸c˜oes temporais presentes em um sistema tempo-real sejam cumpridas.

Em um sistema de controle de tempo-real, o c´odigo de cada tarefa ´e conhecido e, portanto, pode ser analisado e testado, a fim de determinar suas caracter´ısticas como tempo de computa¸c˜ao, recursos utilizados, rela¸c˜oes de precedˆencia, entre outras. As- sim, n˜ao h´a necessidade de se considerar tarefas como processos desconhecidos. Pelo contr´ario, os parˆametros conhecidos podem ser usados para definir as caracter´ısticas mais apropriadas para mecanismos do sotr, bem como o escalonador deste pode utili- zar os parˆametros para verificar a factibilidade do escalonamento do conjunto de tarefas dentro das restri¸c˜oes temporais especificadas.

O grande n´umero de algoritmos propostos para escalonar tarefas de tempo-real

• Preemptivo: em algoritmos preemptivos, a tarefa em execu¸c˜ao pode ser interrom- pida a cada instante para atribuir o processador a outra tarefa ativa, de acordo com as regras de escalonamento.

• N˜ao-preemptivo: em algoritmos n˜ao preemptivos, uma tarefa, uma vez iniciada, ´e executada pelo processador at´e o seu t´ermino. Neste caso, todas as decis˜oes de escalonamento s˜ao tomadas ao t´ermino da execu¸c˜ao das tarefas.

• Est´atico: algoritmos est´aticos tomam as decis˜oes de escalonamento com base em parˆametros fixos que s˜ao atribu´ıdos antes da ativa¸c˜ao das tarefas.

• Dinˆamico: algoritmos dinˆamicos tomam as decis˜oes de escalonamento com base em parˆametros que podem mudar ao longo da opera¸c˜ao.

• Off-line: em um algoritmo off-line, as decis˜oes de escalonamento de um conjunto de tarefas s˜ao tomadas antes de qualquer ativa¸c˜ao. O modelo de escalonamento gerado ´e armazenado em uma tabela para ser posteriormente executado por um dispatcher.

• On-line: um algoritmo on-line toma as decis˜oes de escalonamento em tempo de execu¸c˜ao a cada chegada de uma nova tarefa ou sempre que uma tarefa termina a sua execu¸c˜ao.

• ´Otimo: um escalonamento ´e dito ´otimo quando toma suas decis˜oes de modo a

minimizar uma fun¸c˜ao custo definida para um conjunto de tarefas.

• Heur´ıstico: um algoritmo ´e dito heur´ıstico quando tende a garantir o escalona- mento ´otimo, embora garantias temporais n˜ao possam ser asseguradas.

Em aplica¸c˜oes de tempo-real com caracter´ısticas dinˆamicas, a garantia da execu¸c˜ao das tarefas deve ser feita em tempo de execu¸c˜ao, a cada chegada ou conclus˜ao de uma tarefa. A cada chegada de uma tarefa, a decis˜ao de aceit´a-la ou rejeit´a-la deve ser to- mada considerando-se o cen´ario de pior caso. Por exemplo, uma tarefa rec´em chegada s´o pode ter sua execu¸c˜ao iniciada em um per´ıodo de amostragem, se mesmo nas piores condi¸c˜oes haver´a a garantia de finaliza¸c˜ao das demais tarefas at´e os seus respectivos deadlines. Algoritmos que tomam decis˜oes com base no pior caso s˜ao chamados de

algoritmos baseados em garantia ou guarantee-based algorithms. Embora este meca- nismo de garantia certifique que, uma vez aceita, a tarefa ser´a conclu´ıda dentro do seu deadline e n˜ao impedir´a a conclus˜ao das demais, ´e importante observar que, como as decis˜oes s˜ao tomadas com base no cen´ario de pior caso, tarefas podem ser rejeitadas desnecessariamente.

Outra abordagem para o tratamento das tarefas em aplica¸c˜oes de tempo real s˜ao os algoritmos de computa¸c˜ao imprecisa. A computa¸c˜ao imprecisa procura tratar situa¸c˜oes dinˆamicas em que n˜ao haja tempo suficiente para finalizar a execu¸c˜ao de todas as tarefas dentro dos seus respectivos deadlines. Nestes casos se procura utilizar os recursos dispon´ıveis para produzir um resultado aproximado que possa ser utilizado de modo a evitar situa¸c˜oes de risco. Em sistemas de tr que suportam computa¸c˜ao imprecisa,

toda a tarefa Ji´e decomposta em uma subtarefa mandat´oria Mi e uma tarefa opcional

Oi. A subtarefa mandat´oria consiste na por¸c˜ao de Ji que deve ser computada de modo

a produzir um resultado de qualidade aceit´avel, enquanto que a subtarefa opcional

refina o resultado. Tanto Mi quanto Oi tem o mesmo tempo de chegada ai e o mesmo

deadline di da tarefa original Ji, mas Oi se torna apta `a execu¸c˜ao apenas ao final da

execu¸c˜ao de Mi. Se Ci ´e o tempo de execu¸c˜ao de Ji, Mi e Oi tem respectivamente

tempos de execu¸c˜ao mi e oi, de modo que Ci = mi+ oi. Assim, de modo a garantir

um n´ıvel m´ınimo de performance, Mi deve ser conclu´ıda at´e o seu deadline enquanto

que Oi pode ficar incompleta se necess´ario, ao custo de uma perda de qualidade do

resultado final. ´

E importante observar que o modelo de tarefas utilizado em sistemas tradicionais de tempo-real pode ser considerado um caso particular do modelo adotado em computa¸c˜ao imprecisa. De fato, tarefas do tipo hard s˜ao aquelas que n˜ao apresentam parte opcional

Oi e tarefas do tipo soft n˜ao apresentam parte mandat´oria Mi.

A pr´oxima se¸c˜ao apresenta o Perfil para uml Tempo-Real e como ele permite ex- pressar, em diagramas uml, as restri¸c˜oes de tempo-real apresentadas nesta se¸c˜ao.