Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introdução SD #5

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open

Introdução SD #5

wants to merge 3 commits into from

Conversation

JuanLiraEst
Copy link

@JuanLiraEst JuanLiraEst commented May 18, 2024

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:

  1. 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
    
  2. 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
    
  3. 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.

  4. 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant