Prof-Calebe / livro-sistemas-distribuidos

E-Book de Sistemas Distribuído desenvolvido nas disciplinas de Computação e Sistemas Distribuídos
MIT License
0 stars 31 forks source link

Introdução SD #5

Open JuanLiraEst opened 3 months ago

JuanLiraEst commented 3 months ago

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.

Sistemas distribuídos - Processos

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