Title: Sistemas Operacionais / Sistemas Distribuídos
Tags: Resumo Sistemas_Operacionais
On every note of this deck, unless a note says otherwise:
tldr: - Definição de sistemas distribuídos (Silberschatz/Tanenbaum): conjunto de computadores/processadores independentes, sem memória/clock compartilhados, que se comunicam por rede e se apresentam como um único sistema ao usuário (transparência).
- Transparências possíveis: acesso, localização, migração/relocação, replicação, concorrência e falha/recuperação.
- Por que usar: muito comuns quando se exige alta disponibilidade; permitem crescimento incremental e tolerância a falhas via replicação de processos/dados.
- Conceitos-chave:
- Middleware: camada que esconde distribuição geográfica e heterogeneidade (SO/protocolos).
- Processo: programa em execução + recursos (CPU, memória, arquivos, rede etc.).
- Microsserviços: serviços pequenos e autônomos, comunicando via REST/gRPC/mensageria; deploy/escala independentes e, tipicamente, persistência própria.
- Escalonamento: decide em qual nó uma tarefa/processo rodará, via algoritmos de scheduling.
- Características de SDs: concorrência, ausência de relógio global e falhas independentes.
- Motivações: distribuição geográfica, integração entre organizações, modularidade/crescimento, compartilhamento de recursos, maior disponibilidade/replicação, melhor desempenho e distribuição de carga.
- Desafios: segurança, escalabilidade e heterogeneidade (hardware/SO/formatos/protocolos).
- Hadoop HDFS: sistema de arquivos distribuído para grandes volumes em clusters baratos, com replicação (padrão 3 cópias); arquitetura com NameNode, DataNodes e Secondary NameNode; não é ideal para muitos arquivos pequenos/acesso aleatório; integra via comandos put/get, FUSE e APIs.
- Hadoop MapReduce: modelo Map + Reduce (com shuffle/sort) para processamento distribuído; coordenação via JobTracker/ResourceManager e execução via TaskTracker/NodeManager; escala horizontalmente e reexecuta tarefas em falha.
- Apache Spark: processamento distribuído mais rápido (muito em memória), APIs em várias linguagens; módulos (Core, SQL, Streaming, MLlib, GraphX) e operações em RDD/DataFrames; integra com Kafka/HDFS/Hive/Delta Lake.
- Filtro Bloom: estrutura probabilística compacta para teste de pertinência: pode ter falso positivo, não tem falso negativo; útil para acelerar consultas (ex.: cache/DB distribuído).
- Modelos/arquiteturas:
- Cliente-servidor: simples, mas pode ser pouco escalável (gargalo no servidor/rede).
- Peer-to-peer: papéis simétricos, melhor distribuição/escala, coordenação mais complexa.
- Tecnologias: sockets, MOM/brokers, RMI/CORBA, SO distribuído, web services.
- MVC: separa Model/View/Controller para manutenção e testes, com possível aumento de complexidade.
- Cluster vs Grid:
- Cluster: fortemente acoplado, geralmente homogêneo e em rede local; pode ser de desempenho, alta disponibilidade ou balanceamento de carga; costuma ter nó mestre.
- Grid: fracamente acoplado, descentralizado e heterogêneo; cooperação de máquinas distribuídas (ex.: SETI), sem exigir alta disponibilidade dos nós.
link: https://documentacao.online/estudos/i9o6.html

front: (CEBRASPE/IPHAN/2018) Cluster e GRID possuem características semelhantes, como o multiprocessamento distribuído, mas se distinguem pelas seguintes razões: cluster é uma coleção de máquinas paralelas conectadas entre si que, por trabalharem juntas, fornecem alta disponibilidade e(ou) balanceamento de carga; o GRID, por sua vez, envolve a integração, gestão de recursos computacionais fracamente acoplados e geograficamente distribuídos.
response: Correta
comment: Um belo resumo! Para o cluster pense em máquinas em uma mesma rede, numa mesma “sala”, são fortemente acoplados (mesmo sistema operacional, mesmo tipo de hardware). Os grids são espalhados pelo mundo, fracamente acoplados (sistemas operacionais e máquinas diferentes).
title: Sistemas Distribuídos
Other fields (not shown on cards):
back: Correta - Um belo resumo! Para o cluster pense em máquinas em uma mesma rede, numa mesma “sala”, são fortemente acoplados (mesmo sistema operacional, mesmo tipo de hardware). Os grids são espalhados pelo mundo, fracamente acoplados (sistemas operacionais e máquinas diferentes).

front: (CEBRASPE/TRE-PE/2015) Os sistemas operacionais têm rotinas que não são executadas de forma linear, mas, sim, concorrentemente, em função de eventos assíncronos.
response: Correta
comment: As rotinas do sistema operacional são executadas conforme as características das tarefas (jobs). Existem os jobs do tipo CPU bound e os I/O bound. Os eventos variam conforme a necessidade dos usuários (mais uso do processador ou de dispositivos de entrada/saída). Por isso, a assertiva afirmou que as rotinas são executadas em função de eventos assíncronos!
title: Sistemas Distribuídos
Other fields (not shown on cards):
back: Correta - As rotinas do sistema operacional são executadas conforme as características das tarefas (jobs). Existem os jobs do tipo CPU bound e os I/O bound. Os eventos variam conforme a necessidade dos usuários (mais uso do processador ou de dispositivos de entrada/saída). Por isso, a assertiva afirmou que as rotinas são executadas em função de eventos assíncronos!

front: (CABRASPE/SEPLAG-CE/2024) Em relação a sistemas distribuídos, julgue o item seguinte. No padrão de arquitetura MVC (model-view-controller), os aplicativos são divididos em modelos, exibições e componentes; nesse padrão, as solicitações de usuário são encaminhadas para um controlador, que é responsável por trabalhar com o modelo para executar as ações do usuário, bem como por escolher a exibição a ser apresentada para o usuário.
response: Correta
comment: Vamos analisar os 3 componentes da arquitetura MVC (Model-View-Controller): ● Model (Modelo): Representa os dados e a lógica de negócios da aplicação; ● View (Visão): Responsável pela apresentação da informação ao usuário; ● Controller (Controlador): Recebe e processa as entradas do usuário, interage com o modelo para executar ações e escolhe a visualização adequada para apresentar os resultados.
title: Sistemas Distribuídos
Other fields (not shown on cards):
back: Correta - Vamos analisar os 3 componentes da arquitetura MVC (Model-View-Controller): ● Model (Modelo): Representa os dados e a lógica de negócios da aplicação; ● View (Visão): Responsável pela apresentação da informação ao usuário; ● Controller (Controlador): Recebe e processa as entradas do usuário, interage com o modelo para executar ações e escolhe a visualização adequada para apresentar os resultados.

front: (CABRASPE/CNJ/2024) A respeito de arquitetura distribuída de microsserviços, julgue o item a seguir. O desenvolvimento em microsserviços é a evolução de uma aplicação monolítica, em que cada microsserviço executa uma função ou um recurso.
response: Correta
comment: O desenvolvimento em microsserviços consiste na divisão de uma aplicação em vários serviços pequenos (micro). Esses serviços “pequenos” são independentes e especializados, sendo que cada um executa uma função específica ou oferece um recurso isolado. Esse modelo é visto como uma evolução ou alternativa ao modelo monolítico, no qual toda a aplicação é implementada como um único bloco de código. No paradigma de microsserviços: ● Cada serviço pode ser desenvolvido, implantado e escalado independentemente; ● A comunicação entre os serviços ocorre geralmente via APIs ou mensageria; ● Há uma maior ênfase na descentralização, resiliência e facilidade de manutenção.
title: Sistemas Distribuídos
Other fields (not shown on cards):
back: Correta - O desenvolvimento em microsserviços consiste na divisão de uma aplicação em vários serviços pequenos (micro). Esses serviços “pequenos” são independentes e especializados, sendo que cada um executa uma função específica ou oferece um recurso isolado. Esse modelo é visto como uma evolução ou alternativa ao modelo monolítico, no qual toda a aplicação é implementada como um único bloco de código. No paradigma de microsserviços: ● Cada serviço pode ser desenvolvido, implantado e escalado independentemente; ● A comunicação entre os serviços ocorre geralmente via APIs ou mensageria; ● Há uma maior ênfase na descentralização, resiliência e facilidade de manutenção.

front: (CEBRASPE/SEPLAG-CE/2024) Em relação a sistemas distribuídos, julgue o item seguinte. O termo middleware é usado para designar uma camada de software responsável pela interface com o usuário, como as camadas de apresentação e visualização.
response: Errada
comment: Middleware refere-se a uma camada de software intermediária (faz o “meio de campo”) que facilita a comunicação, o gerenciamento de dados e a integração entre diferentes sistemas, aplicações ou componentes distribuídos. Middleware NÃO É responsável pela interface com o usuário. As camadas de apresentação e visualização fazem parte da interface do usuário, que fica na extremidade da aplicação.
title: Sistemas Distribuídos
Other fields (not shown on cards):
back: Errada - Middleware refere-se a uma camada de software intermediária (faz o “meio de campo”) que facilita a comunicação, o gerenciamento de dados e a integração entre diferentes sistemas, aplicações ou componentes distribuídos. Middleware NÃO É responsável pela interface com o usuário. As camadas de apresentação e visualização fazem parte da interface do usuário, que fica na extremidade da aplicação.

front: (CEBRASPE/CTI/2024) Acerca de arquitetura do sistema de arquivos distribuído, julgue o item subsecutivo. O núcleo do Hadoop File System é um servidor executado em uma máquina chamada NameNode, que recebe e coordena todas as solicitações do sistema de arquivos.
response: Correta
comment: A arquitetura do HDFS é composta por: ● NameNode (nó mestre): Responsável por gerenciar a estrutura do sistema de arquivos, como diretórios e nomes de arquivos. Controla onde os blocos de dados estão armazenados, porém não armazena os dados em si. O NameNode é o ponto crítico do sistema, pois, se falhar, o sistema não funciona corretamente; ● DataNode (nós de dados): Responsável pelo armazenamento dos blocos de dados. Os DataNodes realizam leituras e gravações de dados conforme instruções do NameNode. Também enviam relatórios regulares ao NameNode sobre o status dos dados; ● Secondary NameNode: Ajuda o NameNode a manter backups dos metadados. Não é um backup direto, mas faz checkpoints periódicos.
title: Sistemas Distribuídos
Other fields (not shown on cards):
back: Correta - A arquitetura do HDFS é composta por: ● NameNode (nó mestre): Responsável por gerenciar a estrutura do sistema de arquivos, como diretórios e nomes de arquivos. Controla onde os blocos de dados estão armazenados, porém não armazena os dados em si. O NameNode é o ponto crítico do sistema, pois, se falhar, o sistema não funciona corretamente; ● DataNode (nós de dados): Responsável pelo armazenamento dos blocos de dados. Os DataNodes realizam leituras e gravações de dados conforme instruções do NameNode. Também enviam relatórios regulares ao NameNode sobre o status dos dados; ● Secondary NameNode: Ajuda o NameNode a manter backups dos metadados. Não é um backup direto, mas faz checkpoints periódicos.

front: (CEBRASPE/CTI/2024) Acerca de arquitetura do sistema de arquivos distribuído, julgue o item subsecutivo. O Hadoop MapReduce permite que os arquivos de entrada e saída sejam armazenados em um sistema de arquivos distribuído, de modo que várias máquinas leiam e gravem dados em paralelo.
response: Correta
comment: O Hadoop MapReduce foi projetado para trabalhar com sistemas de arquivos distribuídos, como o HDFS ( Hadoop Distributed File System). O funcionamento é o seguinte: ● Arquivos de entrada são armazenados no HDFS e automaticamente divididos em blocos. Cada bloco pode ser processado por uma máquina diferente do cluster em paralelo; ● O MapReduce executa a etapa de Map em várias máquinas simultaneamente, cada uma processando uma parte dos dados; ● Os resultados intermediários são embaralhados e depois enviados para a etapa deReduce, que também ocorre em paralelo; ● O resultado final é gravado de volta no HDFS (ou outro sistema de arquivos distribuído).
title: Sistemas Distribuídos
Other fields (not shown on cards):
back: Correta - O Hadoop MapReduce foi projetado para trabalhar com sistemas de arquivos distribuídos, como o HDFS ( Hadoop Distributed File System). O funcionamento é o seguinte: ● Arquivos de entrada são armazenados no HDFS e automaticamente divididos em blocos. Cada bloco pode ser processado por uma máquina diferente do cluster em paralelo; ● O MapReduce executa a etapa de Map em várias máquinas simultaneamente, cada uma processando uma parte dos dados; ● Os resultados intermediários são embaralhados e depois enviados para a etapa deReduce, que também ocorre em paralelo; ● O resultado final é gravado de volta no HDFS (ou outro sistema de arquivos distribuído).

front: (CEBRASPE/CTI/2024) Acerca de arquitetura do sistema de arquivos distribuído, julgue o item subsecutivo. Uma das desvantagens do sistema de arquivos distribuído Hadoop File System é a impossibilidade de conectá-lo ao sistema de arquivos local de uma máquina.
response: Errada
comment: O HDFS pode ser acessado e integrado ao sistema de arquivos local de uma máquina, embora existam algumas limitações. O que é possível fazer? ● Transferência de arquivos entre o sistema local e o HDFS (permite enviar ou baixar arquivos, comandos put e get): hdfs dfs -put arquivo_local.txt /diretorio/hdfs/ hdfs dfs -get /diretorio/hdfs/arquivo.txt arquivo_local.txt ● Montagem do HDFS no sistema local, com ferramentas como FUSE ( Filesystem in Userspace). Ex.: usando o Hadoop-FUSE, é possível montar /mnt/hdfs e navegar pelos arquivos como em qualquer diretório; ● Acesso programático, através de linguagens como Java e Python (com PyArrow ou hdfs3), permitindo que aplicações leiam e escrevam diretamente no HDFS.
title: Sistemas Distribuídos
Other fields (not shown on cards):
back: Errada - O HDFS pode ser acessado e integrado ao sistema de arquivos local de uma máquina, embora existam algumas limitações. O que é possível fazer? ● Transferência de arquivos entre o sistema local e o HDFS (permite enviar ou baixar arquivos, comandos put e get): hdfs dfs -put arquivo_local.txt /diretorio/hdfs/ hdfs dfs -get /diretorio/hdfs/arquivo.txt arquivo_local.txt ● Montagem do HDFS no sistema local, com ferramentas como FUSE ( Filesystem in Userspace). Ex.: usando o Hadoop-FUSE, é possível montar /mnt/hdfs e navegar pelos arquivos como em qualquer diretório; ● Acesso programático, através de linguagens como Java e Python (com PyArrow ou hdfs3), permitindo que aplicações leiam e escrevam diretamente no HDFS.

front: (CEBRASPE/CTI/2024) Acerca de arquitetura do sistema de arquivos distribuído, julgue o item subsecutivo. Apache Spark é um sistema de processamento de dados paralelos muito utilizado para aplicações de Big Data, porém ele não suporta operações algébricas.
response: Errada
comment: O Spark oferece diversas operações algébricas sobre conjuntos de dados, principalmente através das abstrações de RDDs ( Resilient Distributed Datasets) e DataFrames. Alguns exemplos de operações algébricas suportadas pelo Spark são: ● Em RDDs: ○ map: aplica uma função a cada elemento; ○ filter: filtra elementos; ○ reduce: reduz o conjunto com uma operação binária (como soma, multiplicação); ○ union: união de conjuntos; ○ intersection: interseção; ○ cartesian: produto cartesiano; ○ aggregate: agrega com operações associativas e comutativas; ● Em DataFrames e Spark SQL: ○ Projeções: seleção de colunas; ○ Seleção: filtros (WHERE); ○ Junções (JOIN): combina tabelas; ○ Agrupamentos (GROUP BY): agrupamento seguido de agregações como SUM(), AVG(); ○ Ordenação (ORDER BY); ○ Funções matemáticas: soma, média, entre outras.
title: Sistemas Distribuídos
Other fields (not shown on cards):
back: Errada - O Spark oferece diversas operações algébricas sobre conjuntos de dados, principalmente através das abstrações de RDDs ( Resilient Distributed Datasets) e DataFrames. Alguns exemplos de operações algébricas suportadas pelo Spark são: ● Em RDDs: ○ map: aplica uma função a cada elemento; ○ filter: filtra elementos; ○ reduce: reduz o conjunto com uma operação binária (como soma, multiplicação); ○ union: união de conjuntos; ○ intersection: interseção; ○ cartesian: produto cartesiano; ○ aggregate: agrega com operações associativas e comutativas; ● Em DataFrames e Spark SQL: ○ Projeções: seleção de colunas; ○ Seleção: filtros (WHERE); ○ Junções (JOIN): combina tabelas; ○ Agrupamentos (GROUP BY): agrupamento seguido de agregações como SUM(), AVG(); ○ Ordenação (ORDER BY); ○ Funções matemáticas: soma, média, entre outras.

front: (CEBRASPE/SEFAZ-CE/2021) A respeito de sistemas distribuídos, julgue o item a seguir. Middleware é um sistema que conecta outros recursos, abstraindo protocolos de comunicação e camadas de infraestrutura.
response: Correta
comment: Middleware é uma camada de software localizada logicamente entre uma camada de nível mais alto (usuários e aplicações) e uma camada subjacente (frameworks e facilidades de comunicação). As principais funções da camada de middleware são: ● Ocultar do usuário que a aplicação é executada em diferentes máquinas distribuídas geograficamente; ● Ocultar a heterogeneidade dos sistemas operacionais (ex.: Windows, Linux etc.) e protocolos de comunicação subjacentes.
title: Sistemas Distribuídos
Other fields (not shown on cards):
back: Correta - Middleware é uma camada de software localizada logicamente entre uma camada de nível mais alto (usuários e aplicações) e uma camada subjacente (frameworks e facilidades de comunicação). As principais funções da camada de middleware são: ● Ocultar do usuário que a aplicação é executada em diferentes máquinas distribuídas geograficamente; ● Ocultar a heterogeneidade dos sistemas operacionais (ex.: Windows, Linux etc.) e protocolos de comunicação subjacentes.

front: (CEBRASPE/TJ-DFT/2015) Nos sistemas implementados a partir do uso de uma arquitetura de componentes distribuídos, o middleware tem a responsabilidade de gerenciar a interação entre esses componentes.
response: Correta
comment: Middleware: camada de software localizada logicamente entre uma camada de nível mais alto (usuários e aplicações) e uma camada subjacente (frameworks e facilidades de comunicação). As principais funções da camada de middleware são: ● Ocultar do usuário que a aplicação é executada em diferentes máquinas distribuídas geograficamente; ● Ocultar a heterogeneidade dos sistemas operacionais (ex.: Windows, Linux etc.) e protocolos de comunicação subjacentes.
title: Sistemas Distribuídos
Other fields (not shown on cards):
back: Correta - Middleware: camada de software localizada logicamente entre uma camada de nível mais alto (usuários e aplicações) e uma camada subjacente (frameworks e facilidades de comunicação). As principais funções da camada de middleware são: ● Ocultar do usuário que a aplicação é executada em diferentes máquinas distribuídas geograficamente; ● Ocultar a heterogeneidade dos sistemas operacionais (ex.: Windows, Linux etc.) e protocolos de comunicação subjacentes.

front: (CEBRASPE/STJ/2015) A arquitetura orientada a serviços é forma de desenvolvimento de sistemas distribuídos em que os componentes de sistemas são serviços autônomos, razão por que, devido à interoperabilidade, as ligações entre os serviços devem ser rígidas para não provocar mudanças durante sua execução.
response: Errada
comment: Não é o foco de nossa aula a arquitetura orientada a serviços. Mas como é um assunto pertinente, vamos ver... A arquitetura orientada a serviços é a forma de desenvolvimento de sistemas distribuídos em que os componentes são autônomos e as ligações entre os serviços devem ser flexíveis durante sua execução.
title: Sistemas Distribuídos
Other fields (not shown on cards):
back: Errada - Não é o foco de nossa aula a arquitetura orientada a serviços. Mas como é um assunto pertinente, vamos ver... A arquitetura orientada a serviços é a forma de desenvolvimento de sistemas distribuídos em que os componentes são autônomos e as ligações entre os serviços devem ser flexíveis durante sua execução.