Definição:
SD é um grupo de computadores independentes, apresentados como um só sistema para o usuário. Então, por mais que
Vantagens: Escalabilidade e compartilhamento dos recursos.
Objetivos/metas:
Acesso a recursos: facilitar acesso e compartilhamento dos recursos aos usuários de maneira eficiente. Com isso, economizamos dinheiro e facilitamos a troca de informações.
O que é um recurso, afinal? Impressoras, PCs, Pgs web, redes, facilidades de armazenamento.
Groupware: software colaborativo
Transparência: se apresenta para o usuário como apenas um. Então, de forma oculta, o sistema distribuído se mostra único, mesmo que seus processos estejam separados por vários computadores
Transparência de acesso, localização, migração, relocação, replicação, concorrência, falha
Abertura: Um SD aberto oferece serviços apenas de acordo com as regras padrões (protocolos). Em redes, por ex, temos regras para formato, significado da troca de mensagens, e conteúdo. Em SDs no geral, temos a Interface Definition Languade – IDL, que costumam descrever as interfaces. Essas interfaces são responsáveis pela especificação dos serviços.
Escalabilidade: De acordo com Neuman (1994), escalabilidade é referente a tamanho, termos geográficos e termos administrativos. Porém, um sistema escalado nesses âmbitos todos pode perder em performance.
Escalabilidade em tamanho: é fácil alocar recursos e usuários no sistema
Escalabilidade em termo geográfico: não há problema em usuários e recursos estarem geograficamente distantes.
Escalabilidade em termo administrativo: é fácil de organizar/gerenciar esse sistema.
Problemas de escalabilidade podem surgir por conta de:
Serviços centralizados (ex um único servidor pra vários users)
Dados centralizados (ex uma única lista telefônica online)
Algoritmos centralizados (ex um roteamento com base em informações completas)
Sistemas distribuídos - Processos
Objetivo: apresentar os diferentes processos e seus papéis em SD
Obs: O que é um processo?
Um processo é um programa em execução.
Em outras palavras, um programa sendo executado em um dos processadores virtuais do SO naquele momento.
Threads
Para executar um programa, um SO cria vários processadores, cada um para uma execução de programa diferente.
Pra monitorar esses processadores virtuais, o SO tem uma tabla de processos (processo = programa em execução), com entradas para guardar valores da CPU, mapas de memória, arquivos abertos, informações de contabilidade, privilégios, etc.
Threads e processos são formas de fazer mais coisas ao mesmo tempo
O desempenho multithread não necessariamente é pior que o monothread. Na verdade, o multithreading ganha em desempenho no geral
Threads não são automaticamente protegidas umas das outras, então uma implementação multithread requer intelecto adicional
Virtualização
Threads e processos nos permitem construir programas que parecem ser executados ao mesmo tempo. Se temos um computador de um processador, realmente é uma instrução por vez. Aí, o chaveamento rápido entre threads e processos que dá a ilusão de paralelismo.
Então, aí entra a virtualização de recursos: temos uma CPU só, apesar de se dar a ilusão de múltiplas ações simultâneas. Isso pode ser feito para outros recursos também.
Todo SD tem sua interface de alto nível
Representação: Programa - Interface X - Hardware/Software sistema X
Resumo
Processos desempenham um papel fundamental para formar uma base de comunicação entre diferentes bases. É importante entender a organização interna dos processos, e se suportam vários threads de controle ou não.
"A organização de uma aplicação distribuída em termos de clientes e servidores se mostrou útil".
O software cliente foca em transparência de distribuição, ocultando detalhes de comunicação e
localização dos servidores. Também oculta questões de falhas
Servidores podem envolver um ou mais serviços. Geralmente são mais complicados do que clientes. Podem ser
iterativos (uma conexão por vez) ou concorrentes (várias por vez)
Ref - Sistemas Distribuídos - Princípios e Paradigmas (2a edição). Andrew S. Tanenbaum, Maarten Van Steen
Sistemas Distribuídos - Introdução (definição, objetivos, tipos)
Definição: SD é um grupo de computadores independentes, apresentados como um só sistema para o usuário. Então, por mais que Vantagens: Escalabilidade e compartilhamento dos recursos.
Objetivos/metas:
Acesso a recursos: facilitar acesso e compartilhamento dos recursos aos usuários de maneira eficiente. Com isso, economizamos dinheiro e facilitamos a troca de informações.
Transparência: se apresenta para o usuário como apenas um. Então, de forma oculta, o sistema distribuído se mostra único, mesmo que seus processos estejam separados por vários computadores
Abertura: Um SD aberto oferece serviços apenas de acordo com as regras padrões (protocolos). Em redes, por ex, temos regras para formato, significado da troca de mensagens, e conteúdo. Em SDs no geral, temos a Interface Definition Languade – IDL, que costumam descrever as interfaces. Essas interfaces são responsáveis pela especificação dos serviços.
Escalabilidade: De acordo com Neuman (1994), escalabilidade é referente a tamanho, termos geográficos e termos administrativos. Porém, um sistema escalado nesses âmbitos todos pode perder em performance.
Escalabilidade em tamanho: é fácil alocar recursos e usuários no sistema
Escalabilidade em termo geográfico: não há problema em usuários e recursos estarem geograficamente distantes.
Escalabilidade em termo administrativo: é fácil de organizar/gerenciar esse sistema.
Sistemas distribuídos - Processos
Obs: O que é um processo?
Threads
Para executar um programa, um SO cria vários processadores, cada um para uma execução de programa diferente.
Pra monitorar esses processadores virtuais, o SO tem uma tabla de processos (processo = programa em execução), com entradas para guardar valores da CPU, mapas de memória, arquivos abertos, informações de contabilidade, privilégios, etc.
O desempenho multithread não necessariamente é pior que o monothread. Na verdade, o multithreading ganha em desempenho no geral Threads não são automaticamente protegidas umas das outras, então uma implementação multithread requer intelecto adicional
Virtualização
Threads e processos nos permitem construir programas que parecem ser executados ao mesmo tempo. Se temos um computador de um processador, realmente é uma instrução por vez. Aí, o chaveamento rápido entre threads e processos que dá a ilusão de paralelismo.
Então, aí entra a virtualização de recursos: temos uma CPU só, apesar de se dar a ilusão de múltiplas ações simultâneas. Isso pode ser feito para outros recursos também.
Todo SD tem sua interface de alto nível
Resumo
Processos desempenham um papel fundamental para formar uma base de comunicação entre diferentes bases. É importante entender a organização interna dos processos, e se suportam vários threads de controle ou não.
Ref - Sistemas Distribuídos - Princípios e Paradigmas (2a edição). Andrew S. Tanenbaum, Maarten Van Steen