Você está na página 1de 7

Sistemas e aplicações distribuídas

Programas de sistema = realizam a operação do computador em baixo nível (ex: sistema


operacional, driver de dispositivo,...)

➢ Programas aplicativos = viabilizam tarefas específicas aos usuários (ex: Word, Excel, Power
Point, Internet Explorer,...)

Funções básicas do sistema operacional são resumidas em:

➢ Facilitar o acesso aos recursos de hardware – o sistema operacional precisa garantir que todos
os dispositivos de hardware possam ser acessados e controlados de forma transparente,
conforme regras e procedimentos estabelecidos pelo fabricante.

➢ Compartilhar e gerenciar recursos do sistema – os recursos precisam ser gerenciados nos


sistemas monousuários e nos sistemas multiusuários, mas nestes últimos precisam também ser
compartilhados. (ex: 1 impressora não pode ser acessada simultaneamente por 2 usuários, mas
1 unidade de disco pode).

➢ Compartilhar e gerenciar recursos de rede – neste caso, sistemas operacionais de rede


permitem compartilhar recursos, controlar acesso dos usuários, além de viabilizar gerência de
tipos de permissão de acessos aos usuários do sistema em rede.

Sistemas operacionais de mainframes podem ser divididos em:

• SO de Lote (Batch) : sistemas antigos, sem interação do usuário. Em geral

rodavam nas corporações no período noturno.

• SO de Tempo Compartilhado : chamados de “Time-Sharing”, e os programas

rodam em pequenas fatias de tempo chamadas “Time-Slice”. Muito usado porque

vários usuários podem se conectar ao “Mainframe”.

• SO Transacionais : viabiliza muitas consultas “pequenas” simultâneas, gerando

alto volume (ex: consultas e reservas de passagens aéreas ou quartos numa rede

de hotéis).

➢ 2) SO de Servidores – permitem vários usuários compartilhando recursos de

hardware e software de computadores pessoais de grande porte (servidores).

Impressoras, bancos de dados, arquivos, aplicações, serviços WEB são recursos

que podem e devem ser compartilhados.

➢ 3) SO de Multiprocessadores – sistemas desenvolvidos especialmente para

gerenciar hardware composto por várias CPU´s, obtendo o maior desempenho das

mesmas

➢ 4) SO de Computadores Pessoais – fornecem interfaces mais amigáveis, gerando


maior facilidade de uso e funcionalidades diversas para equipamentos de uso

pessoal (ex: Windows, Linux, MacOS, ...)

Subtipos de sistemas operacionais:

➢ 5) SO de Tempo Real – são sistemas “real-time”, usados em cenários onde a

aplicação precisa ser executada em tempos baixos e limitados. Dividem-se em :

• Tempo Real Crítico: o tempo de execução é essencial (ex: equip. médicos,

linhas de produção, controle de tráfego aéreo,...).

• Tempo Real Não Crítico: sistemas onde algum prazo de tempo não atingido é

aceitável.

➢ 6) SO Embarcados – sistemas usados em dispositivos que não são computadores

em si, mas funcionam a partir de microcontroladores ou microprocessadores (ex:

televisões, automóveis, smartphones,...).

➢ 7) SO de Cartões Inteligentes – são pequenos e com menos funções. Rodam em

dispositivos como cartões de crédito, cartões de bancos e nas novas etiquetas

RFID (etiquetas inteligentes que funcionam com transmissão via rádio frequência).

Sistemas fortemente acoplados são chamados de sistemas tradicionais. Possuem um único


sistema operacional que controla 1 ou vários processadores e compartilha apenas um sistema
de memória, possui fácil ampliação da capacidade de processamento adicionando CPU’s nos
sockets da placa mãe. Sua vantagem é o menor custo de desenvolvimento e implantação pois
permite também usar vários processadores de núcleo único.

Também podem ser divididos em sistemas assimétricos e sistemas simétricos.

• Sistemas assimétricos são comumente chamados de mestre/escravo pois somente um


CPU principal (master) pode executar os serviços do Sistema Operacional (chamados
de I/O, system call interrupções, etc). Se outra CPU precisar realizar algum serviço do
SO., deverá solicitar ao mestre que execute os serviços. Desvantagem: Sistema deixa de
funcionar se a CPU Master falhar e pode ocorrer Overhead (Sobrecarga) na CPU master
gerada se várias CPUs requisitarem I/O ao mesmo tempo.

• Sistemas simétricos: todos os processadores realizam as mesmas funções, exceto


“boot” e outros realizados somente pela CPU master. Suas vantagens são o maior
poder de processamento chamado de paralelismo, rodando 1 programa em CPUs
distintas ao mesmo tempo e tolerância a falhas, já que o sistema continua funcionando
se 1 CPU falhar. Já suas desvantagens são os conflitos de acesso a memória que podem
ocorrer nessa forma de organização e deverão ser gerenciados pelo SO corretamente.
A) Sistemas Fortemente Acoplados (tightly coupled, possui computação paralela, overhead
menor) –

➢ Multiprocessamento: técnica que separa o programa em “fatias” que serão executadas ao


mesmo tempo pelos processadores disponíveis.

Processamento Vetorial ➔ os processadores possuem instruções específicas para agilizar a


execução de vetores (ex: expressão matemática pode ser executada por 1 instrução vetorial).
As aplicações devem possuir código vetorizável.

Processamento Paralelo ➔ quando vários processadores executam de forma simultânea partes


de 1 mesma aplicação. A aplicação deve ser compatível com essa divisão em partes, para
processamento por mais de 1 processador.

B) Sistemas Fracamente Acoplados (bagunçado e baseado em rede) – são os sistemas


operacionais de rede e os sistemas operacionais distribuídos. Eles geralmente possuem o
mesmo sistema operacional. A rede é transparente para os usuários (nem sabem que ela existe
na maioria das vezes, ou não imaginam como é seu funcionamento).

Suas características são:

▪ Existência de 2 ou + sistemas computacionais completos (CPU, Memória, I/O),


independentes, mas interligados através de 1 ou + redes de comunicação.

▪ Cada sistema computacional tem seus recursos (Memória, I/O) controlado pelo seu próprio
sistema operacional.

▪ Vantagem ➔ recursos de sistemas distintos podem ser compartilhados, já que estão


interconectados, além de permitir a fácil troca de informações/dados entre os sistemas.

Um terminal burro é um monitor que não opera sozinho, atuando como dispositivo de I/O e
necessita de estar conectado a um computador host ou por meio de uma rede, geralmente
requerem um mouse e um teclado para inserir dados.

UNIDADE 2

Um sistema distribuído é um conjunto de sistemas autônomos, interconectados por uma rede

de comunicação e que funciona como se fosse um sistema fortemente acoplado. Cada

componente de um sistema distribuído possui seus próprios recursos, como processadores,

memória principal, dispositivos de E/S, sistema operacional e espaço de endereçamento. Os

tipos de sistemas operacionais que compõem um sistema distribuído não precisam ser

necessariamente homogêneos.

CARACTERÍSTICAS DE UM SISTEMA DISTRIBUÍDO:


• ESCALABILIDADE: Controlar o custo dos recursos físicos; Controlar a perda de
desempenho não podendo ser maior que a função do tempo de acesso aos dados do
sistema; Impedir que os recursos de software se esgotem prevendo antecipadamente
adaptações as mudanças; Evitar gargalos de desempenho utilizando algoritmos
descentralizados.

• CONCORRÊNCIA: Concorrência em sistemas distribuídos refere-se à situação em que


vários componentes ou processos em um sistema estão competindo pelo acesso aos
mesmos recursos compartilhados, como dados ou dispositivos de armazenamento.
Isso pode levar a problemas, como condições de corrida, onde os processos podem
interferir uns nos outros ou acessar recursos de forma inconsistente. Lidar com a
concorrência envolve técnicas como bloqueios (locks), exclusão mútua distribuída,
transações distribuídas e algoritmos de controle de concorrência para garantir que os
recursos sejam acessados corretamente e que os processos ocorram de maneira
ordenada e consistente.

• SEGURANÇA: Visa garantir a proteção e a integridade dos dados, recursos e


comunicações em Sistemas Distribuídos abordando princípios de
Confidencialidade(Apenas usuários autorizados tem acesso; Criptografia protege a
comunicação e a garantia da confidencialidade dos dados mesmo se interceptados),
Integridade(impossibilidade de alteração de dados de forma acidental ou maliciosa;
Pode envolver assinaturas digitais ou checksums), Disponibilidade(garante que
recursos estejam disponíveis quando necessário e protegidos contra ataques DoS),
Autenticação(Verificação de id como senhas, certificados digitais, biometria),
Autorização(acesso a somente o que tem autorização para acessar), Auditoria e
Rastreabilidade(registrar, detectar e monitorar as atividades do sistema) e, Tolerância a
falhas(resiliência a falhas acidentais ou maliciosas).

• TRANSPARÊNCIA: Capacidade de ocultar a complexidade da infraestrutura distribuída


dos usuários e aplicativos, proporcionando uma experiência de uso consistente e sem
revelar a natureza distribuída do sistema. Isso significa que os usuários podem acessar
recursos distribuídos sem se preocupar com sua localização física, migração, replicação,
concorrência ou falhas. A transparência permite que um sistema distribuído seja
percebido e usado como se fosse um único sistema coeso, simplificando a interação e
proporcionando conveniência aos usuários.

• Tratamento de falhas de hardware: em sistemas distribuídos, o tratamento de falhas de


hardware está relacionado à redundância, como, por exemplo, a existência de várias fontes e
processadores, memórias com detecção e correção de erros, redundância dos meios de
conexão, entre outros.

• Tratamento de falhas de software: mais complexa de se implementar, deve garantir que, no


caso de uma falha no SO, por exemplo, a aplicação continue a ser executada normalmente,
sem que o usuário perceba.
Técnicas de tratamento de falhas:

• Detecção de falhas: Podem ou não ser detectadas porém podem ser suspeitas, dados
corrompidos em uma mensagem poder ser mais facilmente detectados do que um
servidor remoto danificado.
• Mascaramento de falhas: Algumas falhas detectadas podem ser ocultas ou serem
menos sérias.
• Tolerância a falhas: Ao invés de tentar detectar e mascarar todas elas, a solução pode
ser projetar um sistema capaz de tolerar falhas.
• Recuperação de falhas: Envolve o processo de projetar softwares de modo que o
estado dos dados permanentes possa ser recuperado ou retrocedido após a falha de
um servidor.
• Redundância: Os serviços podem se tornar tolerante a falhas com o uso de
componentes redundantes

Middleware é um software que diferentes aplicações usam para se comunicar e


oferece a funcionalidade para conectar aplicações de modo inteligente e eficiente
atuando como uma ponte entre diversos tipos de ferramenta e bancos de dados,
integrando-os em um único sistema.
Em desenvolvimento de software é usado para integrar diferentes componentes de
software a outras aplicações oferecendo um padrão de APIs(interface de programação
de aplicações).

APIs são mecanismos que permitem que dois componentes de software se


comuniquem usando um conjunto de definições e protocolos. A aplicação que envia a
solicitação é chamada de cliente e a aplicação que envia a resposta é chamada de
servidor. Existem 4 modelos que podem ser utilizados:

• APIs SOAP: Usam o protocolo Simple Object Access Protocol(Protocolo de Acesso a


Objetos Simples) onde o cliente e servidor trocam mensagens usando XML. É
considerada uma API menos flexível e mais popular no passado.
• APIs RPC: Conhecidas como Remote Procedure Calls (Chamadas de Procedimento
Remoto), o cliente conclui uma função ou um procedimento no servidor e o mesmo
envia a saída de volta ao cliente.
• APIs WebSocket: utiliza Objetos JSON(formato leve e mais simples de entendimento de
troca de informações/dados entre sistemas, significa JavaScript Object Notation) para
transmitir dados. Uma API WebSocket oferece suporte à comunicação bidirecional
entre aplicativos cliente e o servidor. O servidor pode enviar mensagens de retorno de
chamada a clientes conectados, tornando-o mais eficiente que a API REST.
• APIs REST: O cliente envia solicitações ao servidor como dados. O servidor usa essa
entrada do cliente para iniciar funções internas e retorna os dados de saída ao cliente.
REST significa Transferência Representacional de Estado. REST define um conjunto de
funções como GET, PUT, DELETE e assim por diante, que os clientes podem usar para
acessar os dados do servidor. Clientes e servidores trocam dados usando HTTP.

A principal característica da API REST é a ausência de estado. A ausência de estado significa que
os servidores não salvam dados do cliente entre as solicitações. As solicitações do cliente ao
servidor são semelhantes aos URLs que você digita no navegador para visitar um site. A
resposta do servidor corresponde a dados simples, sem a renderização gráfica típica de uma
página da Web.

As APIs REST oferecem quatro principais benefícios:

1. Integração

As APIs são usadas para integrar novas aplicações com sistemas de software existentes. Isso
aumenta a velocidade de desenvolvimento porque cada funcionalidade não precisa ser escrita
do zero. Você pode usar APIs para aproveitar o código existente.

2. Inovação

Setores inteiros podem mudar com a chegada de uma nova aplicação. As empresas precisam
responder rapidamente e oferecer suporte à rápida implantação de serviços inovadores. Elas
podem fazer isso fazendo alterações no nível da API sem precisar reescrever todo o código.

3. Expansão

As APIs apresentam uma oportunidade única para as empresas atenderem às necessidades de


seus clientes em diferentes plataformas. Por exemplo, a API de mapas permite a integração de
informações de mapas por meio de sites, Android, iOS etc. Qualquer empresa pode fornecer
acesso semelhante aos seus respectivos bancos de dados internos usando APIs gratuitas ou
pagas.

4. Facilidade de manutenção

A API atua como um gateway entre dois sistemas. Cada sistema é obrigado a fazer alterações
internas para que a API não seja afetada. Dessa forma, qualquer alteração futura de código
feita por uma parte não afetará a outra parte.

Microsserviços são uma abordagem arquitetônica e organizacional do desenvolvimento de


software na qual o software consiste em pequenos serviços independentes que se comunicam
usando APIs bem definidas.

CAMADAS LÓGICAS: o sistema é dividido em camadas, nas quais cada uma utiliza as funções
oferecidas pela camada lógica inferior.

ARQUITETURA DE CAMADAS FÍSICAS: complementam suas irmãs, as camadas lógicas. As

camadas físicas organizam as funcionalidades de uma determinada camada lógica, além de ser

responsável por essas funcionalidades nos servidores apropriados.

THIN CLIENTS: Esse conceito de dispositivo baseia-se na existência de uma camada de software
que dá suporte a uma interface constituída por janelas (local para o usuário), executando
operações ou também acessando serviços em um servidor remoto.

Os modelos fundamentais utilizam três visões para avaliar os sistemas distribuídos de maneira
individual:
1. os modelos de interação, que tratam diretamente da comunicação entre os elementos
do sistema;
2. os modelos de falha, que lidam com condições adversas que podem conduzir o sistema
a funcionar incorretamente ou até mesmo parar de funcionar; e
3. os modelos de segurança, que assumem que o funcionamento de um sistema
distribuído passa pela proteção contra tentativas de interferência em seus elementos
ou de roubo dos dados manipulados por ele.

Os modelos fundamentais têm como objetivos:

o Evidenciar todas as suposições relevantes sobre o sistema modelado.


o Generalizar o que é possível ou impossível, considerando essas suposições.

Sabe-se então, que um processo consome recursos como espaço de endereçamento,


descritores de arquivos abertos, permissões de acesso, quotas, entre outros. Em outras
palavras, um processo pode consumir bastante memória e processamento. Além desses
recursos, ele associa a sua existência um fluxo de execução. E para esse fluxo de execução dá-
se a denominação de thread (componente indissociável dos processos, em termos de SO ou
programação para computadores), que pertence a um único processo, mas que todo processo
pode possuir mais de um (conceito de multithreading).

Grid Computing (Computação em Grade): Um grid é uma infraestrutura de computação


distribuída que conecta recursos de hardware, software e dados geograficamente distribuídos
para formar uma única infraestrutura de computação. Ele permite o compartilhamento de
recursos entre várias organizações e domínios administrativos diferentes. Os recursos no grid
podem ser heterogêneos e pertencer a diferentes proprietários. O objetivo é criar uma
infraestrutura amplamente distribuída e colaborativa para lidar com tarefas computacionais
complexas.

Cluster Computing (Computação em Cluster): Um cluster é um conjunto de computadores


interconectados que trabalham juntos como uma única entidade computacional. Os
computadores em um cluster são geralmente fisicamente próximos uns dos outros e são
projetados para trabalhar em conjunto, compartilhando recursos, como processadores,
memória e armazenamento. Os clusters são frequentemente usados para melhorar o
desempenho e a capacidade de processamento, permitindo a execução paralela de tarefas e
distribuindo a carga de trabalho entre os nós do cluster.

Em resumo, a principal diferença entre um grid e um cluster é a escala e a abrangência do


compartilhamento de recursos. Um grid conecta recursos distribuídos geograficamente em
uma ampla área de rede, permitindo o compartilhamento entre organizações diferentes. Já um
cluster é um conjunto de computadores interconectados que trabalham em conjunto como
uma unidade coesa para melhorar o desempenho e a capacidade de processamento
localmente.

Você também pode gostar