11.04.2013 Views

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

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

6.1. COOBJECTOS 83<br />

o mesmo estado inicial <strong>em</strong> todas as réplicas.<br />

Após a sua criação, os subobjectos são modificados através da execução das operações <strong>de</strong>finidas<br />

na sua interface. Estas operações são registadas e propagadas para todas as réplicas, como se explicou<br />

anteriormente. As operações <strong>de</strong> todos os subobjectos <strong>de</strong> um coobjecto são tratadas conjuntamente.<br />

6.1.3 R<strong>em</strong>oção <strong>de</strong> um coobjecto<br />

Um coobjecto é r<strong>em</strong>ovido executando a função <strong>de</strong> r<strong>em</strong>oção <strong>de</strong>finida na API do sist<strong>em</strong>a. Esta função<br />

limita-se a invocar a operação <strong>de</strong> r<strong>em</strong>oção <strong>de</strong>finida no componente <strong>de</strong> atributos do coobjecto. Assim, a<br />

informação sobre se um coobjecto foi r<strong>em</strong>ovido ou não é mantida pelo próprio.<br />

Quando a operação <strong>de</strong> r<strong>em</strong>oção é executada numa réplica, o coobjecto passa ao estado <strong>de</strong> r<strong>em</strong>ovido<br />

e é impedido qualquer acesso por parte dos clientes. No entanto, a réplica do coobjecto não é imedia-<br />

tamente eliminada, <strong>de</strong> forma a permitir a propagação da operação <strong>de</strong> r<strong>em</strong>oção para as outras réplicas.<br />

O servidor apenas liberta os recursos relativos a um coobjecto r<strong>em</strong>ovido <strong>de</strong>pois <strong>de</strong> obter informação<br />

da propagação da operação <strong>de</strong> r<strong>em</strong>oção para todos os outros servidores. O servidor mantém, durante<br />

um período <strong>de</strong> t<strong>em</strong>po longo, <strong>de</strong>finido pelo administrador do sist<strong>em</strong>a, para cada coobjecto eliminado, o<br />

seu i<strong>de</strong>ntificador e o sumário das operações conhecidas no momento da eliminação. Esta informação é<br />

usada, durante as sessões <strong>de</strong> sincronização, para informar os outros servidores que o coobjecto po<strong>de</strong> ser<br />

eliminado caso não sejam conhecidas novas operações nesses servidores.<br />

Se, antes <strong>de</strong> um coobjecto ser eliminado, for recebida uma operação executada concorrent<strong>em</strong>ente<br />

com a operação <strong>de</strong> r<strong>em</strong>oção, a r<strong>em</strong>oção é interrompida e o coobjecto passa ao estado <strong>de</strong> “não r<strong>em</strong>ovido”,<br />

po<strong>de</strong>ndo ser acedido <strong>de</strong> forma normal. A propagação <strong>de</strong>ssa operação leva a que os outros servidores<br />

pass<strong>em</strong> igualmente ao estado <strong>de</strong> “não r<strong>em</strong>ovido”. Caso o coobjecto já tenha sido eliminado <strong>em</strong> algum<br />

servidor, esse servidor obterá uma nova cópia a partir <strong>de</strong> um dos outros servidores (<strong>de</strong> forma idêntica à<br />

obtenção <strong>de</strong> um cópia <strong>de</strong> um novo coobjecto) 2 .<br />

6.1.4 R<strong>em</strong>oção <strong>de</strong> um subobjecto<br />

A r<strong>em</strong>oção dos subobjectos <strong>de</strong>pen<strong>de</strong> do gestor <strong>de</strong> subobjectos utilizado. Em geral, po<strong>de</strong>m-se utilizar<br />

técnicas <strong>de</strong> reciclag<strong>em</strong> automática ou r<strong>em</strong>oção explícita. Este probl<strong>em</strong>a foi abordado na secção 3.3.8.<br />

6.1.5 Versão dos coobjectos<br />

Como se <strong>de</strong>screveu na secção 4.1.1, cada sequência <strong>de</strong> operações é i<strong>de</strong>ntificada através do par<br />

(srvview,n_seq), <strong>em</strong> que srvview i<strong>de</strong>ntifica univocamente um servidor (como se <strong>de</strong>talha na secção 6.2.1) e<br />

2 Este processo po<strong>de</strong> causar a não execução dos blocos apenas uma vez <strong>de</strong> algumas operações.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!