Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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