Espaços de Tuplas
Um blackboard pode ser visto como uma área de memória compartilhada que pode ser acessada por diferentes agentes. Os agentes são capazes de escrever, ler e apagar dados desta área, que pode então ser utilizada como uma interface de comunicação entre pos agentes. Além da comunicação explícita entre os agentes um blackboard pode ser utilizado para armazenar informações relativas ao ambiente onde o agente executa. O blackboard pode ser utilizado ainda como área de armazenamento de código e estado de agentes persistentes.
Existem implementações específicas de blackboards denominadas espaços de tuplas à la Linda, também denominados blackboards associativos ou simplesmente espaços de tuplas. Existem dois elementos básicos em um espaço de tuplas: as Tuplas e o próprio Espaço. Ao contrário de mensagens tradicionais, uma tupla é um objeto propriamente dito, composta de uma série de outros objetos. O espaço funciona como um repositório de tuplas e nele podem ser executadas diferentes operações como, por exemplo, leitura e escrita de tuplas.
Tuplas são lidas de um espaço através da utilização de buscas associativas onde coringas2 podem ser utilizados. Por exemplo, a tupla (“mensagem” , “agente1” , “Olá!”) pode ser lida através de uma busca utilizando padrão (“mensagem” , “agente1”, String), onde o String representa um coringa para qualquer conjunto de caracteres.
Espaços de tuplas devem no mínimo implementar as operações básicas de leitura, escrita e retirada de tuplas, mas dependendo da implementação outras operações derivadas destas podem existir, como por exemplo, leitura de um conjunto de tuplas ou o bloqueio do agente que deseja ler uma tupla que ainda não se encontra espaço.
Ao contrário da troca de mensagens tradicional entre agentes, a utilização de espaços de tuplas oferece um estilo de programação desacoplado. Isto pode ser dito porque uma vez que um agente cria e escreve uma tupla em um espaço ele não precisa saber especificamente qual outro agente a lerá nem em que momento isto irá acontecer [9]. Na verdade a existência de uma tupla em um espaço é independente do agente que a criou e dos agentes que possam vir a realizar alguma operação sobre ela.
Existem diversas implementações comerciais de espaços de tuplas. Dentre estas as duas mais conhecidas são IBM TSpaces [35] e Java Spaces [14]. Estas implementações oferecem suporte para as operações básicas de espaços de tuplas (leitura, escrita e retirada de tuplas), além de outras derivadas destas. Também é disponibilizado o controle de transações no acesso aos espaços, e a opção de manter espaços persistentes. Os espaços utilizados nestas implementações também podem ser acessados a partir de clientes remotos.
www2.dbd.puc-rio.br/pergamum/tesesabertas/0115636_02_cap_02.pdf
Um blackboard pode ser visto como uma área de memória compartilhada que pode ser acessada por diferentes agentes. Os agentes são capazes de escrever, ler e apagar dados desta área, que pode então ser utilizada como uma interface de comunicação entre pos agentes. Além da comunicação explícita entre os agentes um blackboard pode ser utilizado para armazenar informações relativas ao ambiente onde o agente executa. O blackboard pode ser utilizado ainda como área de armazenamento de código e estado de agentes persistentes.
Existem implementações específicas de blackboards denominadas espaços de tuplas à la Linda, também denominados blackboards associativos ou simplesmente espaços de tuplas. Existem dois elementos básicos em um espaço de tuplas: as Tuplas e o próprio Espaço. Ao contrário de mensagens tradicionais, uma tupla é um objeto propriamente dito, composta de uma série de outros objetos. O espaço funciona como um repositório de tuplas e nele podem ser executadas diferentes operações como, por exemplo, leitura e escrita de tuplas.
Tuplas são lidas de um espaço através da utilização de buscas associativas onde coringas2 podem ser utilizados. Por exemplo, a tupla (“mensagem” , “agente1” , “Olá!”) pode ser lida através de uma busca utilizando padrão (“mensagem” , “agente1”, String), onde o String representa um coringa para qualquer conjunto de caracteres.
Espaços de tuplas devem no mínimo implementar as operações básicas de leitura, escrita e retirada de tuplas, mas dependendo da implementação outras operações derivadas destas podem existir, como por exemplo, leitura de um conjunto de tuplas ou o bloqueio do agente que deseja ler uma tupla que ainda não se encontra espaço.
Ao contrário da troca de mensagens tradicional entre agentes, a utilização de espaços de tuplas oferece um estilo de programação desacoplado. Isto pode ser dito porque uma vez que um agente cria e escreve uma tupla em um espaço ele não precisa saber especificamente qual outro agente a lerá nem em que momento isto irá acontecer [9]. Na verdade a existência de uma tupla em um espaço é independente do agente que a criou e dos agentes que possam vir a realizar alguma operação sobre ela.
Existem diversas implementações comerciais de espaços de tuplas. Dentre estas as duas mais conhecidas são IBM TSpaces [35] e Java Spaces [14]. Estas implementações oferecem suporte para as operações básicas de espaços de tuplas (leitura, escrita e retirada de tuplas), além de outras derivadas destas. Também é disponibilizado o controle de transações no acesso aos espaços, e a opção de manter espaços persistentes. Os espaços utilizados nestas implementações também podem ser acessados a partir de clientes remotos.
www2.dbd.puc-rio.br/pergamum/tesesabertas/0115636_02_cap_02.pdf
Nenhum comentário:
Postar um comentário