DEL 3 • ARBEID, VELFERD OG MILJØ
8.3 Offentlig sektors inntektsgrunnlag
O conceito de espaço de tuplos teve a sua origem no modelo de coordenação para processamento paralelo "Linda", proposto por David Gelernter e Nicholas Carriero, na Universidade de Yale [CG89,CG01]. Este modelo define uma abstracção de um espaço de memória partilhada para ambientes distribuídos, sem necessidade de existência de uma infraestrutura de partilha de memória física ao nível do hardware.
O modelo introduziu pela primeira vez num sistema a ideia de separação entre os conceitos de coordenação de sistemas concorrentes e a computação. A criação desta separação permite que diferentes processos de computação (em diferentes linguagens) cooperem entre si, utilizando as mesmas primitivas de acesso ao espaço partilhado.
O modelo Linda, mais do que uma linguagem, é um sistema abstracto de coorde- nação que oferece uma interface simples para a comunicação entre processos [CG01]. Este tipo de abordagem permite efectuar a comunicação e a coordenação entre entidades, sem necessidade destas se "conhecerem", dado que a interacção entre elas é efectuada através do espaço de tuplos, sendo por isso indirecta e anónima.
MODELOS DE COMUNICAÇÃO:GRUPOS,ESPAÇO PARTILHADO E EVENTOS
Um tuplo é uma estrutura constituída por uma lista ordenada de campos de um determinado tipo [CG89], que podem ou não encontrar-se instanciados com um valor. Exemplo de tuplo com todos os campos instanciados: < ”string”,10,20,”string2” >. Tuplo com alguns campos não instanciados: < ”string”,−,20,− >.
Um espaço de tuplos é uma estrutura de memória partilhada associativa5, a que todos os processos têm acesso independentemente da sua localização. Neste espaço não existe necessidade de estabelecimento de canais directos de comunicação entre os intervenientes, sendo a comunicação efectuada através de escrita e leitura de tuplos do espaço. Como já foi referido, e ao contrário do que se passa na maioria dos sistemas de comunicação por mensagens, nos quais a mensagem deve ser dirigida explicitamente a um destinatário, no modelo Linda o emissor não necessita de explicitamente nomear o receptor (ou receptores) da informação. Ou seja, a informação, sob a forma de tuplo, pode ser lida por qualquer entidade que tenha acesso ao espaço. Existe, neste modelo, um completo isolamento entre o emissor e o receptor (ou receptores) de mensagens. A capacidade de coordenação que caracteriza o modelo assenta na atomicidade das operações de acesso ao espaço, segundo a qual um tuplo é removido do espaço, actualizado localmente pela entidade que invocou a remoção e finalmente é reposto, no espaço, com o novo valor [WCC04].
O modelo Linda inicialmente proposto, era bastante simples ao nível da expressivi- dade dos tuplos e das primitivas de acesso ao espaço, existindo somente três operações (atómicas) de manipulação de tuplos [Gel85]:
• out: um produtor emite um tuplo, para o espaço de tuplos, ou seja insere um novo tuplo no espaço de forma assíncrona, ficando este acessível;
• in e rd: os consumidores podem, através da especificação de um "template" de tuplo, ir buscar dados ao espaço, através das operações in (lê e remove tuplo do espaço) ou rd (lê tuplo).
O "template" utilizado como argumento para a operação de leitura tem que ser compatível ("matched") ao do tuplo ou seja, os tipos dos campos e o seu número têm que ser iguais, embora possam não se encontrar completamentamente instanciados. Ou seja, na leitura (com ou sem remoção) é devolvido um tuplo do espaço compatível com o tuplo de pesquisa. Quando da leitura, e na situação em que existe mais do que um tuplo que satisfaça as condições, não é especificado qual o tuplo retornado6, sendo somente garantido que é compatível com o "template". Da mesma forma, se mais de
5A natureza associativa deste espaço deve-se ao facto de os tuplos serem pesquisados com base nos
seus valores e estrutura e não no seu endereço.
MODELOS DE COMUNICAÇÃO:GRUPOS,ESPAÇO PARTILHADO E EVENTOS
um processo consumidor efectuar a chamada da operação in, com o mesmo "template" em simultâneo, não é possível determinar qual é o processo que "fica" com o tuplo.
Um exemplo simples de um padrão de comunicação possível através do espaço de tuplos, pode ser observado na figura 3.1, em que uma entidade computacional coloca um tuplo no espaço e outra efectua a sua remoção do espaço.
Figura 3.1:Exemplo simples de um padrão de comunicação através do espaço de tuplos
As primitivas de leitura de tuplos, inicialmente propostas possuem uma semântica bloqueante, em que a operação de leitura fica em espera até que exista, disponível no espaço, um tuplo que satisfaça as condições. Pode, desta forma, forçar-se uma sincronização entre o produtor e consumidor de informação.
Posteriormente, foram definidas primitivas de leitura de carácter não bloqueante (inp e rdp) [Car87]. Estas primitivas, em vez de bloquearem se não for detectado nenhum tuplo que satisfaça as condições, retornam, de imediato, um valor com a indicação de que nenhum tuplo foi encontrado [MW98].
Resumo de características
Uma das principais características do modelo Linda é o facto das comunicações se- rem totalmente anónimas, ou seja, uma entidade que acede ao espaço partilhado para ler ou remover um tuplo, não tem necessidade de designar explicitamente o processo emissor do tuplo, e vice-versa.
Os tuplos presentes no espaço partilhado têm uma vida independente das entida- des que os lá colocaram. Isto significa que, quando uma entidade coloca um tuplo no espaço, através de uma operação de escrita (out), este ficará no espaço partilhado até que alguém o remova, independentemente de a entidade responsável pela sua produ- ção ainda existir ou não.