Sistemas de Computação: Acoplamento, SMPs, Clusters e Nuvem

Classificado em Computação

Escrito em em português com um tamanho de 12,63 KB

1. Características dos Sistemas de Computação

a) Sistemas Fortemente Acoplados (Tightly Coupled)

Nos sistemas fortemente acoplados (tightly coupled), existem vários processadores compartilhando uma única memória e gerenciados por um único Sistema Operacional. Múltiplos processadores permitem que vários programas sejam executados ao mesmo tempo, ou que um programa seja dividido em subprogramas para a execução simultânea em mais de um processador. Desta forma, é possível aumentar a capacidade de computação de um sistema, adicionando novos processadores com um custo muito inferior em relação à aquisição de novos computadores.

Exemplos: Linux e o Windows Server são considerados sistemas fortemente acoplados.

b) Sistemas Fracamente Acoplados

Os sistemas fracamente acoplados caracterizam-se por possuir dois ou mais sistemas de computação interligados, sendo que cada sistema possui o seu próprio sistema operacional, gerenciando os seus recursos, como processador, memória e dispositivos de entrada/saída. Podem ser utilizados em situações que necessitem de um menor custo e de se obter sistemas independentes.

c) SMPs (Symmetric Multiprocessing)

Um SMP pode ser definido como um sistema computacional com as seguintes características:

  • Existem dois ou mais processadores similares de capacidade comparável.
  • Os processadores compartilham a mesma memória principal e facilidades de entrada/saída, interconectados por um único barramento, de tal forma que o tempo de acesso à memória seja compatível com o tempo de operação dos processadores.
  • Todos os processadores podem realizar as mesmas funções, daí o termo simétrico.
  • O sistema é controlado por um sistema operacional integrado que provê interação entre os processadores e seus programas, ao nível de serviços, tarefas, arquivos e elementos de dados.

2. Diferenças entre Sistemas Fortemente Acoplados Simétricos e Assimétricos

Sistemas Simétricos:

  • Todos os processadores podem realizar todos os tipos de processos.
  • Acessos simultâneos à memória (DSM - Distributed Shared Memory).
  • Solução mais complexa que o assimétrico, oferecendo melhor reconfiguração e tolerância a falhas.

Sistemas Assimétricos:

  • Organização mestre/escravo.
  • O processador mestre executa as transações do SO.
  • Processadores escravos executam processos de usuários.
  • Apresentam problemas de sobrecarga ou falhas no processador mestre.

3. Características de Sistemas Fracamente Acoplados

  • Processamento paralelo e cooperativo.
  • Diferentes proprietários dos recursos.
  • Mecanismos de descoberta de recursos.
  • Conceito de Organização Virtual (VO - Virtual Organization).

4. Diferenças entre Clusters e Grids

Grids:

  • Processamento paralelo e cooperativo.
  • Diferentes proprietários dos recursos.
  • Mecanismos de descoberta de recursos.
  • Conceito de Organização Virtual (VO - Virtual Organization).
  • Usuários “enxergam” os recursos distribuídos como se fossem centralizados (Portal).
  • Provedores e consumidores de recursos.
  • Grandes distâncias geográficas.
  • Recursos computacionais heterogêneos.

Clusters:

  • Processamento paralelo e colaborativo/cooperativo.
  • Visão única do sistema.
  • Compartilhamento de recursos.
  • Balanceamento de carga.
  • Redundância (reconfiguração, tolerância a falhas).
  • Cada nó de execução tem um SO (cópia idêntica), memória e relógio.
  • Conexões de alto desempenho (fast, gigabit, myrinet – TCP, Cliente/Servidor).
  • Aplicações críticas (alta disponibilidade).
  • Aplicações com demanda de processamento.

5. Características Principais da Computação em Nuvem (Cloud Computing)

Cloud Computing é um paradigma de computação em larga escala que possui foco em proporcionar economia de escala, em que um conjunto abstrato, virtualizado e dinamicamente escalável de poder de processamento, armazenamento, plataformas e serviços são disponibilizados sob demanda para clientes externos através da Internet.

6. Diferenças entre Computação em Nuvem e Computação em Grade (Grid Computing)

As principais diferenças residem em:

  • Modelo de Negócio.
  • Modelo de Computação e Compartilhamento de Recursos.
  • Nível de Abstração e Facilidade de Uso.
  • Segurança.

7. Conceitos da Computação em Nuvem

a. PaaS (Platform as a Service ou Plataforma como um Serviço)

PaaS provê serviços para facilitar o desenvolvimento e distribuição de aplicações. Exemplos: Google AppEngine, Microsoft Azure Services platform, Salesforce.com Internet Application Development platform e Bungee Connect platform.

b. SaaS (Software as a Service ou Software como um Serviço)

SaaS provê aplicações inteiras que, ao invés de serem utilizadas por um mecanismo de aquisição de licenças e download de software, são acessadas diretamente através da Internet. Exemplos: aplicação de CRM da Salesforce.com e da Microsoft, aplicações de escritório (processadores de texto e planilhas) do Google.

c. IaaS (Infrastructure as a Service ou Infraestrutura como um Serviço)

IaaS disponibiliza recursos de hardware, como espaço em disco e capacidade de processamento. Um exemplo é o Amazon S3.

8. Vantagens dos Sistemas Distribuídos

  • Economia: melhor relação custo x benefício quanto ao desempenho.
  • Eficiência: maior poder total de computação.
  • Distribuição de recursos: máquinas geograficamente separadas.
  • Confiabilidade e Disponibilidade: se uma máquina falha, o sistema permanece funcional.
  • Normalização: necessária à integração.
  • Escalabilidade: poder computacional adicionado em incrementos.
  • Aplicações modulares: domínios maiores, baixo acoplamento e reaproveitamento.
  • Flexibilidade: diferentes plataformas podem ser integradas.
  • Compartilhamento de recursos: computação como commodities (discos, processadores, memória, software).
  • Novos mercados.

9. Desvantagens no Desenvolvimento de Sistemas Distribuídos

  • Aplicação: Pouca disponibilidade de ferramentas de suporte (ex: compiladores, middleware).
  • Deve ser bem planejada para obter os benefícios propostos (concorrência, consistência, multithread, sincronismo, comunicação).
  • Conceitos e sua utilização em fase de amadurecimento.
  • Soluções mais complexas.
  • Rede: seu estado causa alto impacto na aplicação, podendo eliminar suas vantagens.
  • Segurança: várias portas de entrada (queijo suíço).
  • Falhas: instabilidade das aplicações, modelagem e testes falhos.

10. Componente que Lida com Heterogeneidade

O Middleware lida com diferentes arquiteturas de software:

  • Camada de software.
  • Mascara a heterogeneidade do ambiente.

11. Problemas Devido ao Processamento Concorrente

Concorrência: processos que executam simultaneamente e concorrem por recursos.

  • Requisições concorrentes a um mesmo serviço ou recurso.
  • Vários servidores oferecendo um mesmo serviço.
  • Mesma aplicação executando em diferentes computadores.

12. Escalabilidade em Sistemas Distribuídos

Vantagens:

  • Prever aumento de demanda.
  • Operar efetivamente em escalas diferentes.
  • Processamento independente do tamanho da rede.

Dificuldades:

  • Controle de custos.
  • Controle de perda de desempenho.
  • Evitar gargalos.
  • Prevenir escassez de elementos de software (Ex.: endereços IP na Internet).

13. Segmentos de um Processo na Memória

Os 4 segmentos que formam um processo na memória são:

  • Segmento de código.
  • Segmento de dados.
  • Segmento de pilha.
  • Segmento de heap (implícito, mas geralmente considerado).

14. Utilidade da Estrutura de Dados “Pilha” em SO

Uma utilidade principal é a Chamada de funções e passagem de parâmetros:

  • Ao se invocar uma função ou procedimento, a função e seus argumentos são colocados na pilha do processo (PUSH).
  • A função chamada consulta argumentos na pilha.
  • Ao terminar, os argumentos e a função são desempilhados (POP).

15. Diferenças entre Multi-thread e Multi-processos (Programador)

Multithread: Dois processos com vários threads cada um, acessando e bloqueando algum dispositivo (ex: teclado). Threads compartilham o espaço de endereçamento, facilitando a comunicação, mas exigindo cuidado com recursos compartilhados.

16. Variáveis Locais em Threads

Sim, variáveis locais são Thread-Safe por natureza, uma vez que cada Thread de acesso mantém suas próprias cópias de variáveis locais, parâmetros de métodos e valores de retorno. Por isto, é uma prática comum e recomendada definir variáveis dentro dos métodos, garantindo que o conteúdo das variáveis não será corrompido.

17. Pilha em Threads de Usuário vs. Núcleo

  • Threads de Usuário: Utilizadas através de biblioteca de threads, há uma pilha por processo. Usam-se quando o programador deve prever que haverão diversas chamadas para abrir mão da CPU (yield).
  • Threads de Núcleo (Kernel Threads): Geralmente, há uma pilha por thread, pois o núcleo gerencia cada uma individualmente.

18. Conceitos de Concorrência

a. Condição de Disputa (Race Condition)

Ocorre quando 2 ou mais processos tentam acessar ou executar as suas regiões críticas ao mesmo tempo.

b. Exclusão Mútua

Garante que apenas um thread esteja em uma seção crítica por vez.

c. Região Crítica

É a parte do código onde processos tentam acessar ao mesmo tempo a variável ou recurso compartilhado.

19. Mutex

O Mutex funciona como uma trava, parecida com as encontradas em armários públicos em aeroportos ou alguns bancos. Se a porta estiver aberta, é só usar (e trancar). Se estiver fechada, você deve esperar a sua vez. Este método é confiável do ponto de vista prático para garantir exclusão mútua.

20. Comunicação Interprocessos

Sobre as afirmações:

  • I) A região crítica é composta pelas estruturas de dados compartilhadas entre os processos residentes em memória. (Verdadeiro)
  • II) Exclusão mútua consiste em não ter mais do que um processo processando uma região crítica ao mesmo tempo. (Verdadeiro)
  • III) Uma condição de disputa ocorre quando 2 ou mais processos tentam acessar ou executar as suas regiões críticas ao mesmo tempo. (Verdadeiro)

A opção correta é: e) todas estão certas.

21. Troca de Mensagens com Caixas Postais (Sem Bloqueio)

Sim, este esquema pode levar a condições de disputa, pois a repetição de tentativas (busy waiting) para enviar ou receber mensagens, mesmo que não bloqueie o processo, pode levar a um uso ineficiente de recursos e a problemas de ordenação ou acesso se a lógica de repetição não for bem sincronizada.

22. Padrão POSIX

POSIX.1c define uma interface de programação para o desenvolvimento de aplicações multithread.

23. Análise de Código com Threads

Análise do trecho de código para somar um vetor com 5 threads:

  • Região Crítica: Linhas 14 a 16, onde a variável compartilhada somatotal é modificada.
  • Recurso Compartilhado: A variável global somatotal (linha 7).
  • Método para Exclusão Mútua: Uso de um Mutex (pthread_mutex_t mut), com as chamadas pthread_mutex_lock( &mut ) e pthread_mutex_unlock( &mut ).

Entradas relacionadas: