quinta-feira, 6 de março de 2008

Matéria do Duó - 03/03/2008

semáforo: um programa qdo vai ser executado recebe uma sinalização (flag) para ser executado, o q dá prioridade para a execução dele
Nos sist. distribuídos não existe memória comum. Os processos se comunicam através de mensagens, sujeitas a atrfaso (delay).(Sistemas paralelos usam memória comum)
Controle de erros: Paralelo: caso haja uma falha na comunicação, como usam memoria comum, caso haja erro nesse caso o problema é mto provavelmente de hardware
Distribuídos: caso haja uma falha (comunicação ou processo) a máquina que apresentou a falha pára, porém as outras continaum a funcionar (inclusive os processos que rodem nela. o processo continua a funcionar, somente perde a comunicação)
uma das soluções baratas é o timeout (evitar colocar timeout pqno, pois a mensagem pode atrasar em sua entrega, caso o timeout esteja pqno ocorre a falsa detecção, onde o erro não ocorreu pois a mensagem foi entregue +trd)
Algoritmo de CRC (caçar + sobre isso!)
Gerenciamento de recursos:Exemplo de recursos: tempo de proc., armazenamento, largura de faixa de comunic., etc...reduz os custos, diminui o tempo do sistema, evita deadlock, starvation
Deadlock: o processo A usa o recurso 1, dpois tenta acessar o recurso 2, porém ele tá ocupado. Em paralelo, o B adquiriu o recurso 2 e está aguardando o 1. (Burrice!) (deadlock por recurso)
Prevenção: sincronismo. trocar mensagens a cada evento no sistema. É uma solução cara!detecção. vc cuida realmente do problema só quando ele acontece (timeout é um exemplo)
Linguagens para Sistemas Distribuídos:Conic, Edges, etc... (Darwin é o ambiente ideal para sistemas distribuídos)Java é extremamente adeqüada para sistemas distribuídos fora do Darwin (Haskell tmb)
Distribuição:Replicação para manter a consistência. cada processo tem que ter uma lista dos demais processos para poder entrar em contato com os outros e replicar os dados.
Correção: preparar algoritmos que de tempos em tempos atualize a lista de processos para cada um deles
Particionamento: Os dados estão em locais distintos (nem precisa explicar partição né galera?)
Um controle descentralizado melhora a resistência a falhas e queda do sistema.
A linguagem distribuida deve suportar concorrência (trheads), comunicação (socket) e sincronização (synchronize).
Chamada de procedimento remoto (Remote Procedure Call - RPC)
"O Java é bom pra classificar os tipos de classe" - Duó

Nenhum comentário: