Aula 9 -
Compositional C++, Linguagens de Configuração
& Interoperabilidade
- Compositional C++ - Uma linguagem paralela baseada em C++ com
as propriedades de classes, heranças, etc.
- Propriedades
- Disponível em domínio público ( Caltech )
- Instâncias de classes globais criam espaços de endereçamento
independentes, dentro dos quais vários threads podem ser criados
- Comunicação ocorre basicamente através de chamadas
a métodos remotos
- threads internos a um objeto podem se comunicar através de variáveis
do objeto
- Concorrência -Threads podem ser criados implicitamente por PAR
ou PARFOR, ou explicitamente, com a primitiva SPAWN ( disparo assíncrono
)
- Objetos Processadores
- Objetos processadores definem um espaço de endereçamento
- Para manipular objetos desse tipo, é necessário usar
ponteiros globais
- A chamada a um método de um objeto processador resulta em uma
RPC
- Modificador pode ser aplicado para criar objeto em processador físico
específico
- Sincronização
- Operações declaradas como atômicas têm
garantia de exclusão mútua
- · variáveis sync podem ser usadas para
sincronização mais fina
- Transferência de Dados
- Tipos básicos e ponteiros globais podem ser transferidos como
parâmetro de chamadas remotas sem interferência do programador
- Outros tipos precisam ter funções de transferência
( operadores <<e>> ) definidas pelo programador
- Linguagens de Configuração
- Duas linguagens de programação são utilizadas:
uma para descrever cada componente de um programa distribuído e
outra para descrever as interações entre componentes
- Regis
- Propriedades
- Cada componente é visto pela linguagem de configuração
em termos de objetos de comunicação oferecidos e requisitados
- Um objeto de comunicação oferecido por um componente
é uma "porta de entrada" através da qual outros
componentes podem se comunicar com ele
- Um objeto de comunicação requisitado é uma "porta
de saída" para comunicação com outro componente
- Visualização gráfica das composições
- Software em domínio público
- Distribuição
- A cláusula de instanciação de componentes pode
opcionalmente especificar um processador físico
- O sistema mantém um controle da carga em cada processador e
procura alocar novos processadores nas máquinas carregadas
- Darwin - linguagem para configuração
- C++ - linguagem para componentes
- Interoperabilidade
- Uma tendência atual é dar suporte ao desenvolvimento de
componentes independentes que possam ser acoplados para criação
de novos programas. Para isso, o conceito de interfaces bem definidas é
fundamental. Isso tenta trazer uma independência da linguagem que
se quer escrever o programa ou o compilador a ser usado.
- CORBA
- Propriedades
- O CORBA ( Common Object Request Broker Architecture ) é um padrão
para interoperabilidade que vem sendo definido por um conjunto muito grande
de empresas
- Em princípio, se um produto seguir esse padrão, ele pode
interoperar com qualquer outro produto que também siga
- Ênfase no modelo cliente-servidor
- Componentes podem ser escritas em diferentes linguagens de programação
- Definição de Interface
- A arquitetura é baseada em um "contrato entre as partes",
definido por especificações das interfaces dos servidores
- A especificação é feita usando-se uma IDL ( Interface
Definition Language ) orientada a objetos
- O objetivo do projeto CORBA é que sejam criados mapeamentos
entre a IDL e diferentes linguagens de programação. Até
hoje as mais comuns são : C++ e C
- Como no RPCGEN, uma ferramenta lê a IDL e produz arquivos cabeçalhos
e esqueletos de programas
Referências: