2.3 Finalement : n´ecessit´e des ´etudes physiques
3.1.2 Ecrantage des r´eactions ´
Esta seção discute a questão da chegada da tarefa móvel nos nodos e sua escalonabilidade. As propostas apresentadas descrevem modelos de escalonamento baseados em cota fixa, onde as tarefas móveis e os nodos podem especificar restrições de como o processador deve ser alocado.
O principal objetivo de um esquema de escalonamento é construir uma escala que satisfaça um conjunto de restrições de uso de recursos. Essas restrições irão especificar como os recursos devem ser alocados (LAL, 1999).
A fim de atender os requisitos temporais impostos por tarefas de tempo real que executam juntamente com tarefas sem requisitos temporais, diferentes políticas de controle de recursos de processador vêm sendo estudadas e apresentadas.
4.3.1. Controle de Recurso do Processador para Tarefas Móveis
Para atender aos requisitos necessários para ambientes compostos por tarefas com ou sem requisitos temporais, algumas políticas híbridas têm sido propostas (LAL, 1999). Usualmente, tarefas de tempo real são separadas das tarefas não tempo real e, a cada um desses grupos, uma política diferente é aplicada.
Em (LAL, 1999), os autores focaram o problema da realocação de recursos para tarefas móveis utilizando a política de liberação de recursos baseada em cota. Um esquema de escalonamento que controla a alocação de recursos do processador para tarefas móveis é descrito. Dentro desta estrutura, as tarefas móveis e os nodos podem especificar restrições de como o processador deve ser alocado. Baseado nessas restrições, é construído um grafo de escalonamento no qual aplica-se algoritmos de escalonamento. No caso de conflitos entre restrições de tarefas móveis e dos nodos, o esquema implementa uma política que resolve os conflitos a favor do nodo, ou seja, priorizando as restrições/limitações do nodo.
As duas principais preocupações com relação às restrições específicas do nodo quanto ao uso de recursos são: segurança, por exemplo impedindo o acesso de programas externos não autorizados; e qualidade de serviço, provendo diferentes níveis de serviço para diferentes categorias de tarefas móveis. Por exemplo, um nodo pode querer alocar mais recursos para tarefas originárias de seus nós sócios.
O esquema inclui:
• Especificação das restrições de uso de recursos: como compartilhamento, prioridade, limite superior (quantidade máxima da capacidade do processador que a tarefa pode utilizar em cada unidade escalonável) e deadline;
• Agrupamento hierárquico: tarefas móveis são organizadas em grupos tendo por base domínio de rede ou recursos;
• Algoritmos de escalonamento: o esquema consiste de três algoritmos para impor restrições às tarefas móveis: um algoritmo para impor restrições de prioridade em tarefas não tempo real, um algoritmo para impor restrições de deadline em tarefas tempo real e um algoritmo para impor restrições de segurança;
• Política de composição do algoritmo: utilizada para resolver conflitos entre restrições de uso de recursos.
Quanto à alocação de recursos, existem duas visões: a visão das tarefas móveis (como pretendem consumir os recursos) e a visão do nodo hospedeiro (como pretende distribuir seus recursos). Na primeira, as tarefas móveis querem utilizar os recursos do processador o quanto for possível para que executem rapidamente. São especificados alguns requisitos: limite mínimo (quantidade mínima da capacidade do processador que a tarefa utiliza em cada unidade escalonável); peso (percentual da capacidade do processador que a tarefa pode alocar a cada unidade escalonável), parte (relacionado ao peso da tarefa, em quantidades relativas) e deadline. Na perspectiva do nodo existem duas preocupações, atender as necessidades do cliente e controlar a alocação de recursos do servidor. Um nodo pode especificar as seguintes restrições: prioridade , limite superior (quantidade máxima da capacidade do processador que a tarefa pode utilizar em cada unidade escalonável), restrição de tempo de vida (limite de unidades tempo do processador para uso da tarefa sobre todas suas execuções).
O esquema particiona uma linha de tempo contínua em pequenos espaços de tempo QTC (quantum time chunks), dentro de cada QTC são escalonadas tarefas móveis do grupo de tarefas tempo real de acordo com suas reservas. O tempo restante fica disponível para tarefas não tempo real (Figura 4.5).
Figura 4.5: Lista de QTC com reservas para Programas Tempo Real (LAL, 1999).
O escalonamento de tarefas móveis é baseado em uma modificação do algoritmo de escalonamento Rialto (JONES, 1997). O Rialto originalmente utiliza um grafo de escalonamento pré-calculado continuamente, garantindo as reservas do processador com tarefas de períodos definidos. Os nodos no grafo de escalonamento do Rialto indicam o período de tempo reservado para a tarefa ou o tempo livre que não foi reservado para nenhuma tarefa. As tarefas fazem reservas no processador da seguinte forma: “reserve x
unidades de tempo a cada y unidades”. Tarefas de tempo real solicitam recursos do processador especificando o tempo na forma <S, E, T>, onde é feita uma reserva dentro do intervalo de tempo entre S e E do tempo de computação T.
O esquema de escalonamento (LAL, 1999) é mais simples se comparado ao Rialto, pois no esquema não são consideradas reservas contínuas do processador na forma “reserve x unidades de tempo a cada y unidades” mas as reservas do processador são definidas sobre QTC. Com essa simplificação não é necessário calcular o grafo de escalonamento do Rialto. Dentro de cada QTC, as tarefas de tempo real são escalonadas de acordo com suas reservas. As reservas fixam os tempos no qual o processador é alocado para tarefas de tempo real. Quando uma nova tarefa chega, o algoritmo verifica se o pedido pode ser atendido dentro do deadline.
4.3.2. Qualidade de Serviço para Programas Móveis de Tempo Real
O trabalho desenvolvido por (MONTEIRO, 2002) apresenta uma proposta de qualidade de serviço para código móvel considerando a precedência e as restrições de execução de cada tarefa, levando em conta a característica dinâmica dos ambientes de código móvel. Esta política permite diferenciar o nível de serviço a ser oferecido conforme a classe da tarefa móvel. Para isso foi considerada uma estrutura que apresenta dois níveis: uma política que gerencia os requisitos de qualidade de serviço no nível do cliente e um esquema de escalonamento de tarefas para ambientes compostos por tarefas com ou sem requisitos temporais.
O algoritmo de escalonamento se aplica a um ambiente multitarefas, uniprocessado e preemptivo. Seu objetivo é manter a taxa de execução das tarefas de tempo real, do tipo soft, e também atender as tarefas não tempo real (MONTEIRO, 2002).
O esquema particiona uma linha de tempo contínua em pequenos espaços de tempo QTC (quantum time chunks), dentro de cada QTC são escalonadas tarefas móveis do grupo de tarefas tempo real de acordo com suas reservas. O tempo restante fica disponível para tarefas não tempo real O tempo virtual de referência (TVR) é a soma dos tempos TVC e TVP.
O valor do TVC só é incrementado quando a tarefa é selecionada para execução, assim seu valor permanece constante enquanto a tarefa estiver aguardando ser chamada
pelo escalonador. Quanto ao TVP, seu valor deve ser decrementado de uma unidade a cada novo quantum.
Um quantum é uma quantidade fixa de tempo dedicada a execução de uma tarefa sem que ocorra interrupção. O valor do quantum, definido pelo esquema de escalonamento, deve ser suficientemente pequeno a fim de garantir a granularidade desejável ao atendimento das tarefas de tempo real, porém não tão pequeno que resulte num chaveamento de contexto excessivo. Se uma tarefa terminar sua execução antes do término de seu quantum apenas será adiantado o início do processamento da próxima tarefa.
Nesse esquema de escalonamento, as tarefas são dispostas em duas filas: uma fila principal e uma fila secundária. Na fila principal são colocadas as tarefas de tempo real ativas, além de uma tarefa ociosa, chamada de REST, relacionada ao controle do tempo restante que deve apontar para a fila secundária. A fila secundária é destinada às tarefas não tempo real.
Ambas as filas são ordenadas pelo TVR. A tarefa ativa que possui o menor TVR ocupa a cabeça da fila e, portanto, será a próxima tarefa a ser selecionada para execução. O algoritmo opera primeiramente sobre a fila principal (composto por tarefas de tempo real). Quando a cabeça da fila é ocupada pela tarefa ociosa REST, o próximo quantum é destinado a tarefa que ocupa a cabeça de fila secundária, ou seja, destinado a uma tarefa não tempo real.