gestão de dados partilhados em ambientes de computação móvel
gestão de dados partilhados em ambientes de computação móvel gestão de dados partilhados em ambientes de computação móvel
34 CAPÍTULO 3. APRESENTAÇÃO DO SISTEMA DOORS 3.2.2.3 Funcionamento comum no servidor Nos servidores, os coobjectos são manipulados em duas situações: quando o servidor recebe operações de um cliente e durante as sessões de sincronização. Para tal, o servidor cria uma cópia do coobjecto (em memória), executa as acções necessárias e grava o novo estado em memória estável. De seguida descrevem-se as acções efectuadas em cada uma das situações. Quando o servidor recebe, de um cliente, uma sequência de operações, entrega essas operações ao coobjecto (através da interface de sistema do coobjecto). No coobjecto, a função que recebe as opera- ções, implementada na cápsula, executa as seguintes acções. Primeiro, entrega a sequência de operações ao componente de registo. O componente de registo atribui um identificador à sequência de operações e armazena-a. Adicionalmente, o sumário das operações 9 conhecidas, mantido no componente de atri- butos e usado durante o funcionamento do coobjecto, é actualizado. Segundo, notifica o componente de reconciliação da existência de novas operações — este componente é responsável por executar as opera- ções armazenadas no componente de registo de acordo com a política definida (garantindo que as várias réplicas de um mesmo coobjecto evoluem da forma esperada). A execução das operações é efectuada de forma idêntica à execução local de operações no cliente (e pode originar a produção e tratamento de informação de awareness ou a invocação de outras operações de outros subobjectos — estas invocações são processadas executando imediatamente as operações nos subobjectos respectivos). Durante as sessões de sincronização os coobjectos podem ser acedidos em três situações: (1) para transmitir o sumário das operações conhecidas e a informação sobre as operações conhecidas noutros servidores; (2) para enviar o conjunto de operações desconhecidas no parceiro; (3) para receber um conjunto de operações desconhecidas do parceiro. O sumário das operações conhecidas e a informação sobre as operações conhecidas nos outros servi- dores está guardada nos atributos do coobjecto. Para obter esta informação, o servidor não necessita de criar uma cópia do coobjecto — a API do sistema permite obter apenas os atributos de um coobjecto. O conjunto de operações que um servidor conhece, mas que o parceiro desconhece, é obtido através da interface do coobjecto (checkChanges). Esta função obtém o conjunto de operações a enviar para o parceiro a partir do componente de registo. Nesta situação, o servidor utiliza a informação sobre o estado do parceiro (operações conhecidas e operações que o parceiro sabe que os outros servidores conhecem) para actualizar a sua informação local. Quando um servidor recebe um conjunto de operações de outro servidor, esse conjunto de operações é entregue ao coobjecto através da interface do coobjecto (insertOp). Esta função efectua as seguintes operações. Primeiro, entrega as operações ao componente de registo, o qual as armazena. Segundo, 9 O identificador de uma operação e os sumários de operações usados no sistema DOORS são baseados em relógios lógicos e vectoriais, como se detalha na secção 4.1.1.
3.2. FRAMEWORK DE COMPONENTES: PRINCÍPIOS GERAIS 35 informa o componente de reconciliação que existem novas operações no componente de registo. Como anteriormente, o servidor utiliza a informação sobre o estado do parceiro para actualizar a sua informação local. Um coobjecto pode ainda ser acedido durante os protocolos de mudança de filiação (do conjunto de servidores que replicam um volume). Durante este processo, e de forma semelhante às situações anteri- ores, o núcleo do sistema limita-se a executar as operações respectivas na interface do coobjecto. Estas operações, implementadas na cápsula, acedem aos vários componentes do coobjecto para executarem as operações respectivas (por exemplo, para determinar se um servidor pode ser removido é necessário verificar se o componente de reconciliação já não necessita da informação sobre as operações submetidas nesse servidor). 3.2.2.4 Operações definidas nos componentes A descrição anterior omitiu a possibilidade de definir, nos vários componentes, operações que devam ser processadas de forma semelhante às operações dos subobjectos, i.e., registando a sua invocação e pro- pagando estas invocações para todas as réplicas. Por exemplo, a remoção de um coobjecto é controlada por uma operação definida no componente de atributos (ver detalhes na secção 6.1.3). Esta funcionalidade é implementada por pré-processamento do código dos componentes. Para cada operação que deve ser registada (e propagada para as várias réplicas) são criados dois métodos: um método que se limita a registar a operação (de forma idêntica aos métodos definidos num representante de um subobjecto) e um método “sombra” com o código da operação. Todas as outras funções definidas nos componentes são processadas como normais funções de um objecto e afectam apenas o estado da cópia na qual são executadas. Por exemplo, a actualização do sumário das operações conhecidas localmente efectuada durante uma sessão de sincronização apenas tem efeito sobre a cópia local do coobjecto. 3.2.2.5 Atributos de uma operação Até ao momento descreveu-se o processamento comum das operações definidas nos subobjectos (e nos outros componentes de um coobjecto) cuja invocação é interceptada no âmbito do funcionamento de um coobjecto. Este processamento comum pode ser modificado através dum conjunto de atributos que o programador pode associar a uma operação quando define o código do subobjecto/coobjecto — este có- digo é pré-processado, como se descreve na secção 3.4.1, de forma a que as operações sejam executadas da forma especificada. No sistema DOORS estão actualmente definidos os seguintes atributos: Leitura Indica que a operação não modifica o estado do coobjecto. Estas operações não necessitam de ser registadas.
- Page 1 and 2: Universidade Nova de Lisboa Faculda
- Page 3: Agradecimentos Para a realização
- Page 7 and 8: Abstract The widespread use of mobi
- Page 9 and 10: Conteúdo 1 Introdução 1 1.1 Moti
- Page 11 and 12: CONTEÚDO xi 5 Avaliação do model
- Page 13 and 14: CONTEÚDO xiii 10 Sistema de reconc
- Page 15 and 16: Lista de Figuras 3.1 Arquitectura d
- Page 17 and 18: Lista de Tabelas 8.1 Tabela de comp
- Page 19 and 20: Capítulo 1 Introdução Os avanço
- Page 21 and 22: 1.2. SISTEMAS DISTRIBUÍDOS DE GEST
- Page 23 and 24: 1.3. VISÃO GERAL E CONTRIBUIÇÕES
- Page 25 and 26: 1.3. VISÃO GERAL E CONTRIBUIÇÕES
- Page 27 and 28: Capítulo 2 Princípios gerais No c
- Page 29 and 30: 2.2. MOTIVAÇÃO - ALGUMAS APLICAÇ
- Page 31 and 32: 2.3. PRINCÍPIOS 13 garantir a disp
- Page 33 and 34: 2.3. PRINCÍPIOS 15 obter o estado
- Page 35 and 36: 2.3. PRINCÍPIOS 17 sobre a evoluç
- Page 37 and 38: 2.3. PRINCÍPIOS 19 2.3.6 Invocaç
- Page 39 and 40: 2.3. PRINCÍPIOS 21 solúveis). As
- Page 41 and 42: Capítulo 3 Apresentação do siste
- Page 43 and 44: 3.1. MODELO GERAL 25 para a activid
- Page 45 and 46: 3.1. MODELO GERAL 27 Aplicação At
- Page 47 and 48: 3.2. FRAMEWORK DE COMPONENTES: PRIN
- Page 49 and 50: 3.2. FRAMEWORK DE COMPONENTES: PRIN
- Page 51: 3.2. FRAMEWORK DE COMPONENTES: PRIN
- Page 55 and 56: 3.3. FRAMEWORK DE COMPONENTES: COMP
- Page 57 and 58: 3.3. FRAMEWORK DE COMPONENTES: COMP
- Page 59 and 60: 3.3. FRAMEWORK DE COMPONENTES: COMP
- Page 61 and 62: 3.3. FRAMEWORK DE COMPONENTES: COMP
- Page 63 and 64: 3.3. FRAMEWORK DE COMPONENTES: COMP
- Page 65 and 66: 3.4. FRAMEWORK DE COMPONENTES: IMPL
- Page 67 and 68: 3.4. FRAMEWORK DE COMPONENTES: IMPL
- Page 69 and 70: Capítulo 4 Descrição das funcion
- Page 71 and 72: 4.1. RECONCILIAÇÃO 53 Segundo, um
- Page 73 and 74: 4.1. RECONCILIAÇÃO 55 4.1.3 Ordem
- Page 75 and 76: 4.1. RECONCILIAÇÃO 57 4.1.4.2 Ver
- Page 77 and 78: 4.1. RECONCILIAÇÃO 59 No decurso
- Page 79 and 80: 4.3. INVOCAÇÃO CEGA 61 4.3 Invoca
- Page 81 and 82: 4.4. INTEGRAÇÃO DE SESSÕES SÍNC
- Page 83 and 84: 4.4. INTEGRAÇÃO DE SESSÕES SÍNC
- Page 85 and 86: 4.4. INTEGRAÇÃO DE SESSÕES SÍNC
- Page 87 and 88: Capítulo 5 Avaliação do modelo d
- Page 89 and 90: 5.1. EDITOR MULTI-SÍNCRONO DE DOCU
- Page 91 and 92: 5.1. EDITOR MULTI-SÍNCRONO DE DOCU
- Page 93 and 94: 5.1. EDITOR MULTI-SÍNCRONO DE DOCU
- Page 95 and 96: 5.2. AGENDA PARTILHADA 77 Figura 5.
- Page 97 and 98: 5.2. AGENDA PARTILHADA 79 de awaren
- Page 99 and 100: Capítulo 6 Núcleo do sistema DOOR
- Page 101 and 102: 6.1. COOBJECTOS 83 o mesmo estado i
3.2. FRAMEWORK DE COMPONENTES: PRINCÍPIOS GERAIS 35<br />
informa o componente <strong>de</strong> reconciliação que exist<strong>em</strong> novas operações no componente <strong>de</strong> registo. Como<br />
anteriormente, o servidor utiliza a informação sobre o estado do parceiro para actualizar a sua informação<br />
local.<br />
Um coobjecto po<strong>de</strong> ainda ser acedido durante os protocolos <strong>de</strong> mudança <strong>de</strong> filiação (do conjunto <strong>de</strong><br />
servidores que replicam um volume). Durante este processo, e <strong>de</strong> forma s<strong>em</strong>elhante às situações anteri-<br />
ores, o núcleo do sist<strong>em</strong>a limita-se a executar as operações respectivas na interface do coobjecto. Estas<br />
operações, impl<strong>em</strong>entadas na cápsula, ace<strong>de</strong>m aos vários componentes do coobjecto para executar<strong>em</strong><br />
as operações respectivas (por ex<strong>em</strong>plo, para <strong>de</strong>terminar se um servidor po<strong>de</strong> ser r<strong>em</strong>ovido é necessário<br />
verificar se o componente <strong>de</strong> reconciliação já não necessita da informação sobre as operações submetidas<br />
nesse servidor).<br />
3.2.2.4 Operações <strong>de</strong>finidas nos componentes<br />
A <strong>de</strong>scrição anterior omitiu a possibilida<strong>de</strong> <strong>de</strong> <strong>de</strong>finir, nos vários componentes, operações que <strong>de</strong>vam ser<br />
processadas <strong>de</strong> forma s<strong>em</strong>elhante às operações dos subobjectos, i.e., registando a sua invocação e pro-<br />
pagando estas invocações para todas as réplicas. Por ex<strong>em</strong>plo, a r<strong>em</strong>oção <strong>de</strong> um coobjecto é controlada<br />
por uma operação <strong>de</strong>finida no componente <strong>de</strong> atributos (ver <strong>de</strong>talhes na secção 6.1.3).<br />
Esta funcionalida<strong>de</strong> é impl<strong>em</strong>entada por pré-processamento do código dos componentes. Para cada<br />
operação que <strong>de</strong>ve ser registada (e propagada para as várias réplicas) são criados dois métodos: um<br />
método que se limita a registar a operação (<strong>de</strong> forma idêntica aos métodos <strong>de</strong>finidos num representante<br />
<strong>de</strong> um subobjecto) e um método “sombra” com o código da operação.<br />
Todas as outras funções <strong>de</strong>finidas nos componentes são processadas como normais funções <strong>de</strong> um<br />
objecto e afectam apenas o estado da cópia na qual são executadas. Por ex<strong>em</strong>plo, a actualização do<br />
sumário das operações conhecidas localmente efectuada durante uma sessão <strong>de</strong> sincronização apenas<br />
t<strong>em</strong> efeito sobre a cópia local do coobjecto.<br />
3.2.2.5 Atributos <strong>de</strong> uma operação<br />
Até ao momento <strong>de</strong>screveu-se o processamento comum das operações <strong>de</strong>finidas nos subobjectos (e nos<br />
outros componentes <strong>de</strong> um coobjecto) cuja invocação é interceptada no âmbito do funcionamento <strong>de</strong> um<br />
coobjecto. Este processamento comum po<strong>de</strong> ser modificado através dum conjunto <strong>de</strong> atributos que o<br />
programador po<strong>de</strong> associar a uma operação quando <strong>de</strong>fine o código do subobjecto/coobjecto — este có-<br />
digo é pré-processado, como se <strong>de</strong>screve na secção 3.4.1, <strong>de</strong> forma a que as operações sejam executadas<br />
da forma especificada. No sist<strong>em</strong>a DOORS estão actualmente <strong>de</strong>finidos os seguintes atributos:<br />
Leitura Indica que a operação não modifica o estado do coobjecto. Estas operações não necessitam <strong>de</strong><br />
ser registadas.