Next: Exemplo
Up: TAO - Implementação e
Previous: Implementação
O modelo de progração, tanto para escalonamento estático quanto dinâmico, requer
que todos os objetos participantes de uma aplicação registrem-se com a mesma
instância do scheduler. Este registro global é necessário para que as
dependências entre servidores e clientes possam ser rastreadas e a coerência
entre as prioridades designadas seja mantida nas trocas de mensagens de uma
ponta a outra. Em se tratando de escalonamento estático:
- No lado do cliente, se o período das execuções é especificado, este é o principal
parâmetro utilizado no escalonamento. No entanto, o TAO não provê nenhum mecanismo
embutido que imponha a execução períodica de um certo método somente porque
ele foi declarado como tal, apenas garante, após a análise de escalonabilidade
que, se o método for invocado regularmente com o período especificado, o recurso
necessário para a sua execução estará disponível. Consequentemente, a execução
periódica tem estar imposta explicitamente no código da aplicação, e.g., através
de um laço de chamada de uma RT_Operation no qual esteja incluído um atraso
(através de uma chamada a sleep(), por exemplo) igual ao período especificado
no descritor de QoS. A threads onde ocorrem estas chamadas de métodos
são identificadas antes do runtime e criadas com a devida prioridade,
de forma transparente ao programador.
- No lado do servidor, os períodos de execução das requisições são normalmente
identificados através das dependências, i.e., o programador tem que explicitar
qual (ou quais) RT_Operation do cliente requisita a RT_Operation no servidor.
Uma pool de threads é pré-alocada no ORB, uma para cada
período (prioridade) identificado através das dependências. Não há a necessidade
de nehuma outra mediad por parte do programador, uma vez que as requisições
serão disparadas pela chegada de mensagens. Fica garantido que, se as mensagens
chegarem periodicamente com a frequência da RT_Operation do cliente que foi
especificada como dependência da RT_Operation do servidor, o recurso escalonado
estará disponível.
interface Schedule:
handle_t create(string entry_point)
void set(handle, time, typical_time, cached_time, period, importance, quantum,
threads)
void add_dependency(handle,dependency)
void compute_schedule(min_p,max_p,info)
ACE_Schedule_Factory::dump_schedule()
Subsections
Next: Exemplo
Up: TAO - Implementação e
Previous: Implementação
Carlos Mitidieri
2000-07-10