Logo Passei Direto
Buscar

02 Processos em sistemas distribuídos

Ferramentas de estudo

Questões resolvidas

Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Questões resolvidas

Prévia do material em texto

Processos em sistemas distribuídos
Apresentação
À medida que os sistemas distribuídos evoluem, as aplicações nesses ambientes tornam-se cada 
vez mais importantes e complexas. Dessa forma, é importante focar no desempenho desses 
sistemas. Os elementos básicos de execução em um sistema computacional são processos e thread. 
As threads viabilizam meios de aumentar o desempenho de um sistema distribuído explorando os 
recursos de hardware e software das arquiteturas computacionais atuais. Outro conceito importante 
é a virtualização que tem sido amplamente aplicada e utilizada em sistemas distribuídos, focando na 
reutilização de recursos sob demanda, apresentando diversas vantagens nos sistemas distribuídos, 
como maior flexibilidade e disponibilidade com menos custos.
Nesta Unidade de Aprendizagem, você vai aprender sobre processos e threads, especialmente 
sobre threads em sistemas distribuídos. Além disso, você vai compreender como o conceito de 
virtualização é aplicado em sistemas distribuídos. Por fim, vai conhecer exemplos de processos 
cliente e servidor em sistemas distribuídos.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Explicar a importância das threads em sistemas distribuídos.•
Descrever a aplicação de virtualização em sistemas distribuídos.•
Exemplificar processos cliente e servidor em sistemas distribuídos.•
Desafio
O mundo já passou por algumas pandemias, como a de Covid-19 e a de H1N1. Nesse contexto, 
recente o uso de assistentes virtuais passou a ser uma das soluções mais adotadas no atendimento 
ao cliente. Devido ao isolamento social imposto durante a quarentena da Covid-19, muitas 
empresas se viram com um número de funcionários reduzidos e foi preciso intensificar o uso de 
assistentes virtuais para as diferentes lacunas que o cenário representa.
Você é consultor em uma empresa de gerenciamento de TI chamada Virtual System Solutions, 
localizada em Porto Alegre, Rio Grande do Sul. Um dos principais produtos da empresa é fornecer 
frameworks que auxiliam no desenvolvimento e na implantação de assistentes virtuais de sistemas 
Web em geral.
Veja mais:
Sendo assim, responda: qual a possível solução para resolver esse problema?
Infográfico
Os dois elementos básicos de execução de um sistema computacional são processos e threads. Ao 
mesmo tempo que esses conceitos se relacionam e se complementam, apresentam diferenças e 
alguns aspectos como processamento, armazenamento, relacionamento e compartilhamento de 
recursos.
Neste Infográfico, veja as principais diferenças entre processos e threads.
Aponte a câmera para o 
código e acesse o link do 
conteúdo ou clique no 
código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/050f1315-ce5d-49cb-a37e-f62df0e95533/399d7edc-3b89-45e1-b780-fd2e9395a660.png
Conteúdo do Livro
Sem processos e threads seria inviável executar todo e qualquer tipo de aplicação em qualquer 
sistema computacional. Threads, também chamadas de processos leves, são segmentos de 
processos. Dessa forma, buscando explorar o hardware das arquiteturas atuais compostas de mais 
de uma unidade de processamento, a aplicação do conceito de threads em sistemas distribuídos é 
fundamental para o desempenho de uma grande maioria de aplicações. Contudo, os sistemas 
distribuídos estão cada vez mais heterogêneos e sobrecarregados. Por isso, o conceito de 
virtualização é importante, pois viabiliza a virtualização de recursos, tornando possível criar 
máquinas virtuais de forma totalmente desvinculada do hardware.
No capítulo Processos em sistemas sistribuídos, você vai ver algumas características dos elementos 
básicos de execução: processos e threads. Além disso, vai estudar sobre a aplicação de threads, 
especificamente, em sistemas distribuídos. Por fim, vai entender sobre os processos cliente e 
servidor em um sistema distribuído. 
Boa leitura.
SISTEMAS 
DISTRIBUÍDOS
Eduarda Rodrigues Monteiro
Processos em sistemas 
distribuídos
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Explicar a importância de threads em sistemas distribuídos.
 � Descrever a aplicação de virtualização em sistemas distribuídos.
 � Exemplificar processos de cliente e servidor em sistemas distribuídos.
Introdução
Um dos principais conceitos de sistemas operacionais (SO) é o de proces-
sos. Nessa área, processo é definido como uma abstração de um programa 
em execução. Na perspectiva de SO, o gerenciamento e o escalamento 
de processos são aspectos fundamentais. No paradigma de programação 
sequencial, um processo é um programa em execução considerando um 
único fluxo de controle. As arquiteturas de processadores convencionais 
atuais fornecem os recursos que viabilizam um processo a ter mais de 
um fluxo de controle (ou execução). A partir desse avanço tecnológico, 
os paradigmas de programação evoluíram e, atualmente, dependem da 
natureza da aplicação ou da sua complexidade para ser implementada, 
considerando os paradigmas de programação concorrente e/ou paralelos. 
Assim, grande parte dos programas atuais são constituídos por mais de 
um fluxo de execução e chamados de threads. 
Com o conceito de virtualização de recursos, as arquiteturas cons-
tituídas com apenas uma unidade de processamento aliadas aos SO 
atuais, providos de processos e threads, oferecem meios de execução 
para mais de uma tarefa simultaneamente. A virtualização viabiliza que o 
hardware execute várias instâncias, de diferentes sistemas, paralelamente 
e, dessa forma, aplicações passam rodar em SO distintos em uma mesma 
plataforma. 
Neste capítulo, você verá a função fundamental dos diferentes tipos 
de processos em sistemas distribuídos. Aprenderá sobre threads e seu 
respectivo papel nos sistemas distribuídos. Além disso, conhecerá o 
conceito de virtualização, seus tipos e como funcionam as diferentes 
modelagens em sistemas distribuídos. Por fim, você verá exemplos de 
processos cliente e servidor e sistemas distribuídos, bem como eles são 
modelados de forma independente. 
1 Aplicação de threads em sistemas distribuídos 
Thread é um fluxo de execução de processo, também conhecida como “pro-
cessos leves”. Seu principal objetivo em SO é auxiliar na execução de uma 
aplicação, associando vários fluxos de execução a um único processo. Aliado 
aos componentes de hardware, inerentes às arquiteturas de processadores 
atuais (multicore e multiprocessadas), uma das principais vantagens do uso 
de threads é o desempenho, pois podem acelerar a execução de tarefas simul-
tâneas que envolvem o mesmo programa. O conceito de processos e threads 
apresenta muitas similaridades e, por isso, serão apresentados a seguir de forma 
individual. Na sequência, a abordagem de threads em sistemas distribuídos 
será discorrida. 
Processos
Inicialmente é preciso compreender o que é um processo e como eles se 
relacionam e se comunicam em SO.
A execução de um programa em um sistema computacional convencional 
ocorre de forma independente, ou seja, para cada processo, o SO reserva um 
espaço de endereçamento na memória. No momento da execução de um pro-
cesso, o SO cria processadores virtuais, em que cada um tem a incumbência 
de executar um programa diferente. Sendo assim, há a necessidade de manter 
o controle entre os processos e os processadores virtuais. Para isso, cada um 
deles têm um bloco descritor de processo. A função desse bloco é armazenar 
informações importantes sobre todo contexto de execução do processo em 
questão. O bloco descritor de processos, portanto, inclui uma tabela que arma-
zena registros de diferentes contextos, como do gerenciamento de processos 
(registros, program counter [PC], ponteiro da pila, identificador do processo, 
Processos em sistemas distribuídos2
prioridade, entre outros), do gerenciamento de memória (ponteiros para seg-
mentos de memória que armazenam dados e informações sobre segmentos) 
e do gerenciamento de arquivos(informações sobre diretórios, descritores 
de arquivos que estão sendo utilizados pelo processo em questão e aspectos 
sobre permissões entre usuário e grupos).
Como, em geral, os processos são executados independentemente entre si, 
ressalta-se que o SO é responsável por garantir a concorrência entre diversos 
processos em execução e concorrendo por recursos compartilhados, tanto de 
software como de hardware, como variáveis, núcleos de execução, memória 
(considere o subsistema hierárquico que constitui um tradicional — registra-
dores, caches, memória principal e secundária) e elementos de entrada/saída. 
Threads
Os conceitos de processos e threads são muito similares, por isso, atualmente, 
os processadores de propósito geral e sistemas computacionais são multipro-
gramados, ou seja, capazes de executar mais de uma tarefa simultaneamente. 
Sistemas computacionais convencionais fornecem um espaço de armazena-
mento de memória para cada processo e, pelo menos, uma thread de controle. 
Em algumas aplicações é factível ter múltiplas threads de controle em um 
mesmo espaço de endereçamento, executadas de forma concorrente. 
Uma das principais motivações para o uso de threads é explorar o soft-
ware e o hardware, respectivamente. Em termos de software, a partir de 
uma análise prévia (do sistema e/ou do domínio da aplicação), identifica-se 
diversas aplicações e tarefas executadas ao mesmo tempo. Por outro lado, o 
uso de threads é importante para a exploração dos níveis de paralelismos que 
compõem as arquiteturas dos processadores atuais. Outro aspecto importante 
sobre threads é que, na maioria dos sistemas, o tempo de criar e destruir uma 
pode ser até 100 vezes mais rápido, quando comparado ao de um processo 
(TANENBAUM, 2010). O terceiro argumento, referente à importância das 
threads, é o desempenho. Além dos custos de manutenção de uma thread 
serem significativamente menores que os de um processo, seu modelo de 
programação envolve a decomposição de uma aplicação em múltiplas threads, 
as quais são executadas de forma independente. Em resumo, a utilidade das 
threads se destaca em ambientes compostos de múltiplos nodos (CPUs) nos 
quais é possível aplicar um paralelismo real, ou seja, em sistemas distribuídos. 
3Processos em sistemas distribuídos
Threads em sistemas distribuídos
As threads fornecem uma granularidade fina (COULOURIS et al., 2013), 
uma vez que múltiplas delas podem realizar o controle de um processo. Essa 
característica é muito útil para a criação de aplicações em ambientes distri-
buídos compostos de máquinas multithreads, em que o foco principal é a 
obtenção de desempenho. Ademais, threads são importantes em sistemas 
distribuídos porque auxiliam diretamente nos modelos estruturais de clientes 
e servidores, sobretudo em servidores, pois atualmente é muito difícil que eles 
sejam implementados sem o conceito de threads. Diferentemente de proces-
sos, as threads compartilham o mesmo espaço de armazenamento, portanto, 
o desenvolvimento de aplicações multithreads nativas torna-se mais complexo, 
uma vez que o desafio da concorrência fica mais evidente e requer mecanismos 
adicionais, como mão de obra especializada para prover o controle dos recursos 
compartilhados e da consistência dos dados resultantes das aplicações. 
Um aspecto relevante sobre o uso de threads refere-se à execução, pois 
elas permitem o bloqueio de chamadas de sistemas sem precisar do processo 
como um todo. Essa característica é útil para a comunicação em sistemas 
distribuídos, pois as threads viabilizam um meio de manter múltiplas conexões 
lógicas no momento. Por essa razão, serão descritos clientes e servidores 
multithreads a seguir. 
Clientes multithreads 
Ocultar tempos longos de propagação de mensagens entre processos em redes 
de alta e ampla disponibilidade é uma das motivações para o uso de clientes 
multithreads em sistemas distribuídos, pois, a partir desta característica, 
é possível prover um alto nível de transparência de distribuição. Ademais, 
ao lidar com comunicações de curso longo, devemos considerar que o tempo 
para conclusão de cada operação é, por vezes, significativo, o que se torna 
um possível problema. 
Processos em sistemas distribuídos4
Um exemplo típico de clientes multithreads são os navegadores web, 
os quais geralmente iniciam buscando uma página Hypertext Markup Lan-
guage (HTML) e as exibem posteriormente. Em geral, um documento web 
é formado de um arquivo HTML e, para realizar a busca de cada elemento, 
precisa de (TORRES, 2010): 
 � uma conexão Transmission Control Protocol (TCP)/Internet Protocol 
(IP); 
 � ler a entrada de dados; 
 � passar os dados para um componente de exibição. 
As etapas de configuração de uma conexão e da leitura dos dados recebi-
dos são, por padrão, operações bloqueantes. Focando em ocultar latências de 
comunicação, alguns navegadores web exibem os dados à medida que ainda 
estão chegando. Enquanto o texto é disponibilizado ao usuário, o navegador 
realiza a busca de outros arquivos que compõe a página em questão. 
Dessa forma, o usuário não precisa aguardar todos os componentes que 
formam a página serem buscados para obtê-la. Você pode observar que o na-
vegador web realiza mais de uma tarefa simultaneamente e, portanto, perceber 
que a implementação de um cliente multithread em um navegador web ajuda 
significativamente no desempenho da aplicação. Outra vantagem é que nave-
gadores web implementados como clientes multithreads viabilizam a abertura 
de diversas conexões ao mesmo tempo. Em resumo, a utilização de clientes 
multithreads considera que os dados podem ser distribuídos e replicados em 
vários servidores. Nesse cenário, a utilização de threads viabiliza os clientes 
estabelecerem conexões distintas com o objetivo de disponibilizar um docu-
mento único em paralelo, como resultado, o documento web inteiro é exibido 
em um tempo consideravelmente menor, quando comparado à utilização de 
servidor não replicado. Por essa razão, é importante realizar uma análise de 
implementação multithread de forma análoga ao servidor. 
5Processos em sistemas distribuídos
Servidores multithreads 
A implementação de mecanismos mutltithreads auxilia no desenvolvimento do 
servidor, provendo uma simplificação considerável no código e viabilizando 
meios que facilitam a exploração do paralelismo, com o intuito de obter o 
melhor desempenho possível. 
Como estudo de caso de servidores multithreads, considere um servidor 
de arquivos que, eventualmente, apresentará pedidos de bloqueio enquanto 
aguarda alguma operação no disco. O funcionamento básico de um sistema 
de arquivos acontece da seguinte maneira: 
 � aguarda por uma solicitação de operação em um arquivo (seja de leitura 
ou escrita); 
 � executa a solicitação;
 � envia os resultados requisitados.
A Figura 1 apresenta um diagrama de um servidor multithread.
Figura 1. Servidor multithread organizado segundo modelo despachante/operário.
Fonte: Adaptada de Tanenbaum e Van Steen (2007).
Thread despachante
Requisição despachada
para um thread operário Servidor
Thread operário
Sistema operacional
Requisição que está
chegando da rede
Processos em sistemas distribuídos6
No modelo ilustrado na Figura 1, a thread despachante (do inglês, dis-
patcher) (CARISSIMI; ROCHOL; GRANVILLE, 2009), lê as requisições 
vindas de clientes via rede referentes a possíveis operações em um arquivo. 
Após analisar essas solicitações, a thread despachante escolhe uma operária 
(do inglês, worker thread) ociosa para tratar de cada uma das requisições. 
Ao final, os resultados são enviados.
Outra alternativa de implementação desse estudo de caso é considerar a 
possibilidade de operar com uma thread (do inglês, single thread) e também 
conhecida como monothread. O principal laço do servidor de arquivos recebe 
uma requisição de um cliente, analisa e executa toda a solicitação até sua 
conclusão. Enquanto aguarda pelo disco, o servidor fica ocioso e não realiza 
nenhum processamento,ou recebe qualquer outra requisição. Portanto, ser-
vidores single threads não conseguem receber e tratar requisições de outros 
clientes enquanto realizam operações de entrada e saída (leitura de disco). 
Além disso, se o servidor de arquivos estiver executando em uma máquina 
dedicada (assim como ocorre nos e arquivos), a CPU ficará ociosa enquanto o 
servidor de arquivos espera pelo disco. Como resultado, verifica-se que número 
de solicitações tratadas por unidade de tempo é menor, quando comparado 
à implementação multithreads. Assim, fica evidente que o ganho em termos 
de desempenho é significativo na aplicação de threads nas implementações.
A terceira alternativa para implementar servidores é a partir do uso de 
máquina de estados finito (VAN STEEN; TANENBAUM, 2017), cuja imple-
mentação considera o modelo monothread, mas oferece operações de envio 
e recebimento (do inglês, send e receive, respectivamente) não bloqueantes. 
Essas três estratégias estão dispostas no Quadro 1. 
Fonte: Adaptado de Tanenbaum e Van Steen (2007).
Modelo Características
Threads Paralelismo, chamadas bloqueadoras de sistema
Processo monothread Sem paralelismo, chamadas bloqueadoras de 
sistema
Máquina de estado finito Paralelismo, chamadas de sistemas não bloqueadas
Quadro 1. Modos de construir um servidor
7Processos em sistemas distribuídos
A alternativa multithread apresenta como principal característica a explo-
ração do paralelismo com o bloqueio de chamadas de sistemas. Por outro lado, 
a estratégia monothread permite o bloqueio de chamadas de sistemas, mas não 
apresenta meios para exploração do paralelismo. Por fim, a implementação 
baseada em estados finitos apresenta um potencial relevante em termos de 
desempenho, por meio da exploração do paralelismo, mas o fato de não bloquear 
chamadas torna a implementação e o controle do sistema mais complexos, 
pois o processo inteiro que está executando a thread acaba sendo bloqueado. 
2 Virtualização
Considerando um sistema single-trhead, por exemplo, a execução simultânea 
é uma utopia, a sensação de que o paralelismo ocorre é porque os chavea-
mentos entre processos e threads é realizado rapidamente. A virtualização de 
recursos surge com o objetivo de fazer apenas uma CPU ser capaz de simular 
a existência de mais unidades de processamento, ou seja, a capacidade de 
simular vários núcleos de execução que podem se expandir e atender a outros 
recursos. Portanto, a ideia básica da virtualização de recursos é considerar 
que, hipoteticamente, há um recurso replicado no sistema. 
O conceito de virtualização de recursos existe há muitas décadas, mas tem 
obtido atenção crescente no desenvolvimento e na programação de sistemas 
computacionais, especialmente em ambientes distribuídos, os quais, ao longo 
do tempo, tornaram-se mais comuns e mais complexos. Em termos práticos, 
todo sistema computacional, principalmente distribuído, fornece uma interface 
de programação de software em um nível mais alto, uma vez considerados 
seus respectivos sistemas subjacentes de software e de hardware, conforme 
representado na Figura 2a. Há diferentes tipos de interfaces, abrangendo 
desde um conjunto básico de instruções oferecidas pela CPU, até uma ampla 
coleção para programação viabilizadas por muitos sistemas de middlewares 
atuais. Em geral, a proposta consiste em estender ou substituir uma interface 
existente, a fim de simular o comportamento de outro sistema, como ilustrado 
na Figura 2b.
Processos em sistemas distribuídos8
Figura 2. (a) Organização geral entre programa, interface e sistema. (b) Organização geral 
da virtualização do sistema A sobre o sistema B.
Fonte: Tanenbaum e Van Steen (2007, p. 48) e Van Steen e Tanenbaum (2017, p. 117). 
Virtualização em sistemas distribuídos
A virtualização foi introduzida na década de 1970 para reutilização de hard-
ware e componentes. O modelo IBM 370 e seus sucessores foram exemplos 
de sucesso da virtualização em sistemas distribuídos, uma vez que forneciam 
máquinas virtuais com diferentes SO. 
É importante ressaltar que, naquele período, à medida que o hardware ficava 
mais barato, os computadores ficavam mais potentes e a quantidade de tipos 
diferentes de SO diminuía, fazendo a virtualização deixar de ser um problema 
importante. Todavia, no final da década de 1990, ocorreram mudanças (VAN 
STEEN; TANENBAUM, 2017), porque enquanto componentes de hardware 
e software de baixo nível mudam com rapidez, os softwares que apresentam 
níveis mais altos de abstração, tendem a ser mais estáveis. 
Considerando que softwares legados não conseguem manter o ritmo das 
plataformas (em termos de alterações), as quais eles dependem hierarqui-
camente, o conceito de virtualização é muito importante, pois os auxilia a 
permanecer em novas plataformas, e cada aplicação ser portada e executada 
em sua respectiva máquina virtual, incluindo artefatos como bibliotecas e SO. 
Dessa forma, o processo de virtualização oferece algum grau de portabilidade 
e flexibilidade aos sistemas. Aliado a esses aspectos, além da portabilidade e 
da permissão de permanência de softwares legados, a virtualização também 
é auxilia na manutenção de middlewares. 
9Processos em sistemas distribuídos
Tipos de virtualização 
Para compreender as diferenças inerentes à virtualização, é importante reportar 
que os sistemas computacionais em geral fornecerem três tipos de interfaces: 
1. uma interface entre o software e o hardware, denominada instructions 
set architecture (ISA), formada de um conjunto de instruções de má-
quina que podem ser invocadas por qualquer programa e subdivididas 
em instruções gerais e privilegiadas;
2. uma interface que consiste basicamente em chamadas de sistemas, um 
dos mecanismos de comunicação entre processos (ou threads) em SO; 
3. uma interface chamada de bibliotecas, geralmente conhecidas como 
application programming interface (API).
Essas interfaces são divididas em quatro níveis, apresentados na Figura 3. 
Figura 3. Interfaces oferecidas por sistemas computacionais
Fonte: Adaptada de Tanenbaum e Van Steen (2007).
Aplicação
Biblioteca
Sistema operacional
Hardware
Funções de
biblioteca
Chamadas de
sistema
Instruções
privilegiadas
Instruções
gerais
Observando a Figura 3, pode-se perceber os quatro níveis distintos: aplica-
ção, biblioteca, SO e hardware, que abrangem três interfaces, já enumeradas 
anteriormente. A essência do processo de virtualização é simular o papel de 
cada uma delas em um ambiente virtual.
Processos em sistemas distribuídos10
A virtualização pode acontecer por meio de dois caminhos diferentes, 
representados na Figura 4. 
Figura 4. (a) Máquina virtual de processo. (b) Monitor de máquina virtual nativa. (c) Monitor 
de máquina virtual hospedeira.
Fonte: Adaptada de Van Steen e Tanenbaum (2017). 
Aplicação/bibliotecas Aplicação/bibliotecas
Aplicação/bibliotecas
Sistema em execução
Sistema
operacional
(a) (b) (c)
Sistema
operacional
Sistema
operacional
Sistema
operacional
Monitor de máquina
virtual
Monitor de máquina
virtual
Hardware Hardware Hardware
De acordo com a Figura 4a, a máquina virtual de processo consiste em 
desenvolver um sistema de tempo de execução que forneça um conjunto de 
instruções abstratas e que podem ser invocadas na execução das aplicações. 
Essas instruções podem ser interpretadas ou emuladas, por exemplo, o ambiente 
java runtime environment (JRE). 
Já a opção da Figura 4b representa um monitor de máquina virtual nativa, 
que consiste na implementação de um sistema sobre uma camada que emula 
o hardware original subjacente e, como interface de usuário, fornece um 
conjunto completo de instruções do mesmo ou de outro hardware. É chamada 
de máquina virtual nativa porque sua implementação é realizada diretamente 
na camada acima do hardware subjacente, ou seja, a máquina física (também 
conhecida como bare metal). O interessante dessa abordagem é a possibilidade 
de executar vários tipos de programas e SO (nesse contexto também conhecidoscomo guests) de forma independente e simultânea em uma mesma plata-
forma. Esse tipo de virtualização se aplica ao fundamento de infraestruturas 
hiperconvergentes (TORRES, 2010), nas quais, por exemplo, um servidor é 
11Processos em sistemas distribuídos
configurado em uma máquina virtual como se fosse um sistema computacio-
nal qualquer sem vínculo algum com o hardware e, a partir disso, torna-se 
possível movê-la para outro hardware, diminuindo os custos de inatividade 
do servidor. Por essa razão, essa estratégia de virtualização é importante em 
relação à segurança do sistema (principalmente no aspecto da confiabilidade) 
e portabilidade. Referente à segurança, essa estratégia propicia o isolamento 
completo de uma aplicação, evitando que uma falha (tanto por erro ou por 
ataques à segurança) não afete a máquina completamente. Por outro lado, 
em termos de portabilidade, possibilita que todo ambiente possa ser movido 
de uma máquina para outra, pois permite que hardware e software sejam 
manipulados de forma desvinculada um do outro. Uma possível desvantagem 
dessa estratégia é que, sabendo que um monitor de máquina virtual nativo 
necessita fornecer e controlar o acesso de diferentes recursos, dependendo do 
hardware e do SO em questão, pode haver a necessidade de implementação de 
drivers de alguns recursos, como aspectos de conectividade (redes, bluetooth) e 
dispositivos gráficos (placas gráficas dependendo do fabricante). Um exemplo 
típico dessa abordagem é o software VMWare EXXi e o uso de um monitor 
de máquina virtual hospedado, altamente popular em sistemas distribuídos 
modernos, como data centers e nuvens, além de fornecerem meios para criação 
de clusters de servidores.
Diante da possível necessidade de implementação de drivers de dispositivos, 
em caso de alguma eventual incompatibilidade entre o hardware original e a 
máquina virtual, há uma variação desse segundo tipo de virtualização (Figura 
4c). O monitor de máquina virtual hospedada, focando em suprir essa lacuna, 
é executado “em cima” de um SO hospedeiro. Em outras palavras, é uma 
camada que “roda” em cima do sistema instalado no host (máquina física), 
sendo considerado o processo do SO hospedeiro que viabiliza a criação de 
máquinas virtuais, nas quais várias instâncias de SO virtualizados podem 
ser instaladas. Nesse caso, o monitor de máquina virtual se beneficia das 
diversas facilidades propiciadas pelo SO hospedeiro. A partir disso, esse tipo 
de virtualização passa a receber privilégios especiais, pois o SO que recebe 
as solicitações é o hospedeiro. No entanto, como todas as máquinas virtuais 
compartilham o mesmo kernel e, assim, concorrem por recursos como qualquer 
outra aplicação, esse tipo de virtualização se torna uma alternativa adequada 
para a implementação de data centers, por exemplo. Um exemplo típico dessa 
estratégia de virtualização é o VMPlayer ou VirtualBox.
Processos em sistemas distribuídos12
3 Exemplos de processos cliente/servidor 
em sistemas distribuídos
Nesta seção, será apresentada uma descrição mais precisa de clientes e 
servidores. 
Clientes
A principal tarefa de uma máquina cliente é prover meios de interação entre 
usuários e seus servidores remotos. Para isso, existem duas estratégias pos-
síveis, ilustradas na Figura 5.
Figura 5. (a) Aplicação em rede com seu próprio protocolo. (b) Solução geral para permitir 
acesso a aplicações remotas.
Fonte: Adaptada de Tanenbaum e Van Steen (2007) e Van Steen e Tanenbaum (2017).
(a)
Máquina cliente
Protocolo
independente
de aplicação
Protocolo
independente
de aplicação
Aplicação
SO Local
Middleware
Máquina cliente
Aplicação
SO Local
Middleware
Máquina do servidor
Aplicação
SO Local
Rede Rede
Middleware
Máquina do servidor
Aplicação
SO Local
Middleware
(b)
A estratégia ilustrada na Figura 5a considera que, para cada serviço re-
moto, a máquina cliente deverá fornecer uma contraparte, ou seja, permitir a 
interação (contato) com o serviço via rede. Considere um exemplo típico dessa 
estratégia: uma agenda executando no smartphone de um cliente precisa estar 
devidamente sincronizada com uma agenda remota, perceba que essa agenda 
está possivelmente compartilhada, portanto, a sincronização será efetivada 
por um protocolo de nível de aplicação. 
A segunda estratégia apresentada (Figura 5b) é uma alternativa que inde-
pende de protocolo e provê o acesso direto aos serviços remotos, oferecendo 
somente interfaces de usuários coniventes. Em outras palavras, essa alternativa 
visa apresentar uma solução neutra, ou seja, independente de aplicação, por 
exemplo, nas quais a máquina cliente é utilizada apenas como um terminal 
13Processos em sistemas distribuídos
(sem a necessidade de armazenamento local) que repassa os comandos para que 
tudo seja executado e armazenado no servidor. Além disso, nessa estratégia é 
importante fornecer as informações inerentes a interface do usuário, mas que 
não tenha conhecimento do(s) servidor(es) ao(s) qual(is) ele está se conectando, 
ou seja, é de extrema relevância que a implantação do cliente oculte a comu-
nicação que ocorre com o servidor e mantenha um dos principais desafios de 
sistemas distribuídos: a transparência de acesso. Para isso, o middleware pode 
auxiliar ocultando a ocorrência de alteração de servidores que estão atendendo 
às requisições, provendo transparência de conexão e replicação. Garantindo 
diferentes transparências, o usuário não tem conhecimento da ocorrência de 
alguma perda de conexão com servidor durante a execução da aplicação. Essa 
abordagem, que consistem em terminais clientes minimizados (do inglês, 
thin clients), tem atenção crescente à medida que a conectividade da Internet 
cresce e dispositivos móveis estão cada vez potentes. 
Baseado nessa ideia, a literatura apresenta outro modelo importante em 
relação aos clientes, que considera o software como muito mais do que apenas 
uma interface com o usuário, mas que também é possível ter parte do proces-
samento e dados em uma aplicação cliente/servidor sendo executados no lado 
do cliente. Esse modelo é chamado de software cliente/servidor (do inglês, 
client/server software) e formado por dispositivos que abrangem softwares 
em cliente embarcado, como caixas eletrônicos, leitores de código de barras 
e decodificadores de televisões. Nessa modelagem, as interfaces de usuá-
rios são consideradas uma pequena parte do software cliente, em contraste 
com as facilidades de processamento local e comunicação (VAN STEEN; 
TANENBAUM, 2017). 
Servidores
A ideia geral de cada servidor é sempre organizada da mesma maneira, primeiro 
há a espera por uma requisição de um cliente, na sequência garante-se que a 
solicitação seja atendida e, depois disso, espera o próximo chamado. Um ser-
vidor implementa um serviço específico em nome de uma coleção de clientes. 
Existem dois tipos de servidores: iterativos e concorrentes. Um servidor 
iterativo gerencia as requisições e retorna o resultado ao cliente solicitante. 
Já um concorrente pode ser implementado com processos filhos ou threads 
dispachers, em que a manipulação das requisições são papéis desempenhados 
separadamente pelas threads ou por processos inerentes ao mesmo servidor. 
Processos em sistemas distribuídos14
Dessa forma, cada thread ou processo que gerencia as requisições é responsável 
por enviar a resposta ao cliente solicitante. Servidores concorrentes podem lidar 
com várias solicitações, principalmente na presença de operações bloqueantes 
(em discos ou em outros servidores). Nesse sentido, pode-se dizer que, uma vez 
considerada a implementação de um servidor com threads, o sistema atende 
às requisições separadamente e, esse servidor concorrente é um multihread. 
Outra questão interessante é como os clientes entram em contato com um 
servidor. Em geral, eles enviam solicitações para uma porta, na qual o servidor 
está executando e aguardando requisições (cada servidor escuta em uma porta 
específica). Aliado a esse cenário,os clientes precisam saber previamente em 
qual(is) porta(s) o servidor está executando. Uma das abordagens utilizadas é 
os serviços conhecidos atenderem em portas padrão. O Quadro 2 mostra que 
a maioria dos serviços estão vinculados a portas específicas.
Fonte: Adaptado de Van Steen e Tanenbaum (2017).
Nome do serviço Acrônimo Porta
File Transfer [Default Data] ftp-data 20
File Transfer [Control] ftp 21
Telnet telnet 23
Simple Mail Transfer smtp 25
Web (HTTP) www 80
Quadro 2. Serviços e portas vinculadas
Conhecendo as portas em que os servidores atendem na maioria dos ser-
viços, como listado no Quadro 2, os clientes precisam encontrar o endereço 
da máquina que estão utilizando, para isso, os nomes dos serviços podem ser 
utilizados com esse propósito. Existem muitos serviços que não requerem uma 
porta conhecida, por exemplo, um serviço que fornece o horário e pode utilizar 
uma porta dinâmica atribuída pelo seu próprio SO local. Visando soluções 
mais genéricas, duas estratégias que focam em vincular cliente/servidor são 
ilustradas na Figura 6. 
15Processos em sistemas distribuídos
Figura 6. (a) Vinculação de um cliente/servidor usando um daemon. (b) Vinculação 
cliente/servidor usando um supervisor.
Fonte: Adaptada de Tanenbaum e Van Steen (2007) e Van Steen e Tanenbaum (2017).
Máquina cliente
Cliente
Daemon
Servidor
Máquina do servidor
Porta
registradora
Tabela de
portas
(a)
Máquina do servidor
Servidor
propriamente
dito
Super-
servidor
Criar
servidor
para
serviço
requisitado
2. Requisitar
 serviço
1. Solicitar
 porta
2. Continuar
 serviço
1. Requisitar
 serviço
Cliente
Máquina cliente
(b)
A Figura 6a ilustra uma solução baseada em um daemon especial, que 
atuam em cada máquina que executa os serviços. O daemon controla a porta 
atual de cada serviço implementado por um servidor e executa em uma porta 
conhecida. Dessa forma, um cliente realizará o contato com o daemon e 
solicitará a porta, em seguida, conseguirá entrar em contato com o servidor 
específico. Portanto, o daemon funciona como um componente intermediário, 
executando em uma porta conhecida por todos os clientes e repassando as 
conexões para um servidor específico. 
Processos em sistemas distribuídos16
Vincular uma porta a um serviço específico é muito comum, no entanto, 
implementar cada serviço por meio de um servidor separado tende refletir 
em desperdício de recursos. Um exemplo desse cenário são sistemas Unix, os 
quais comumente tem uma quantidade significativa de servidores executando 
simultaneamente. Em vez de controlar o número elevado de processos, torna-se 
mais eficiente o uso de um superservidor, o qual executa cada porta vinculada 
a um serviço específico (Figura 6b). 
Existem, ainda, servidores sem estado (do inglês, stateless servers) e com 
estado (do inglês, stateful servers). Um servidor sem estado nunca mantém 
informações do status de seus clientes após processar uma solicitação, por 
exemplo, quando um arquivo é aberto para atender a uma determinada soli-
citação, ele não armazena esse registro e simplesmente fecha o arquivo após 
acessá-lo. Além disso, pode alterar seu próprio estado sem a necessidade de 
informar nenhum cliente. Uma alternativa ao projeto de servidores sem estado 
é conhecida como estado flexível (do inglês, soft state), a qual mantém o que 
é conhecido, isto é, o servidor garante conservar o estado de um cliente por 
um tempo restrito. Após esse período, o servidor descarta as informações 
que matinha do cliente vinculado. Um exemplo desse tipo de abordagem é 
quando o servidor precisa manter o cliente informado sobre atualizações por 
tempo limitado. 
Já um servidor com estado mantém as informações dos clientes, ou seja, 
elas devem ser removidas de forma explicitada. Um exemplo dessa abor-
dagem de implementação de servidor com estado é um de arquivos, que 
garante manter uma cópia local de determinado arquivo (mesmo depois de 
atualizado). Para isso, o servidor deve ter uma tabela formada por entradas 
(cliente e arquivo) que viabilize meios de monitorar e identificar os clientes 
que têm as devidas permissões para realizar atualizações em um determinado 
arquivo. Em contrapartida, se um servidor com estado falhar, perde todas as 
informações pertinentes e necessita resgatar o seu estado como era antes, 
para tanto, precisa recuperar a tabela de entradas para garantir as atualizações 
recentes dos arquivos. Além disso, é importante ressaltar que prover melhoria 
no desempenho de servidores sem estado é uma das principais motivações dos 
servidores com estado. Contudo, em caso de falhas em um servidor sem estado, 
nada precisa ser resgatado ou recuperado e nenhuma medida de contingência 
precisa ser adotada, é preciso apenas retomar sua funcionalidade e aguardar 
pelas requisições de clientes. 
17Processos em sistemas distribuídos
Nesse contexto, os estados podem ser divididos em: estado de sessão e 
estado permanente. O estado de sessão está associado à uma sequência de 
operações solicitadas por um único usuário, as quais devem ser mantidas por um 
tempo determinado. O estado de sessão é utilizado e mantido em arquiteturas 
clientes/servidor de três camadas, nas quais o servidor de aplicação necessita 
fazer uma série de consultas no banco de dados para conseguir responder à 
solicitação do cliente. Nesse caso, se o estado de sessão se perder, basta o cliente 
enviar novamente a mesma solicitação, a qual será recebida e processada sem 
acarretar nenhuma inconsistência. Por outro lado, quando se trata do estado 
permanente, as informações são geralmente persistidas no banco de dados. 
Para a maior parte dos sistemas distribuídos, manter o estado de sessão está 
diretamente relacionado ao projeto de um servidor com estado e, portanto, 
essa modelagem deve implantar medidas referentes à durabilidade de estado 
armazenada no servidor e ter como pré-requisito planos de contingência espe-
ciais na ocorrência de falhas. Por fim, ao projetar um servidor, as modelagens 
com e sem estado não devem influenciar nos serviços que oferece.
Cluster de servidores
Um cluster de servidores é um conjunto de nodos (máquinas) interconectados 
via rede de computadores, em que cada máquina pode executar um ou mais 
servidores simultaneamente. A estrutura típica de um cluster é organizada 
em três camadas, conforme demonstrado na Figura 7.
Figura 7. Organização geral de um cluster de servidores em três camadas.
Fonte: Tanenbaum e Van Steen (2007, p. 56) e Van Steen e Tanenbaum (2017, p. 142).
Comutador lógico
(possivelmente múltiplo)
Servidores de aplicação/
computação
Sistema distribuído
de arquivos/ banco
de dados
Requisição
despachadaRequisição
de cliente
Primeira camada Segunda camada Terceira camada
Processos em sistemas distribuídos18
Observando as camadas ilustradas na Figura 7, é possível observar que 
a primeira se refere a um computador lógico, responsável por distribuir as 
requisições dos clientes entre os servidores de aplicação, os quais realizarão 
as computações propriamente ditas (pertencem a segunda camada). Além 
disso, sabe-se que em qualquer arquitetura cliente/servidor multicamadas, 
vários clusters são formados de servidores dedicados aos processamentos de 
aplicações específicas, ao contrário de clusters convencionais, constituídos 
de computadores normais nos quais os servidores são tipicamente voltados 
para executar tarefas de alto desempenho. Entretanto, em clusters corporati-
vos, a capacidade de computação não é o foco principal, mas sim a garantia 
do acesso ao armazenamento. Nesse contexto, a ideia lógica dos clusters de 
servidores propõe a terceira camada, que concentra no processamento de 
dados, em especial, os de arquivos e bancos de dados. Visando atender essa 
demanda, dependendo do uso, os clusters de servidores podem rodar em 
máquinas especializadas e devidamente configuradas para garantir acesso de 
alta velocidade aos discos, considerando que são providos de caches potencial 
dearmazenamento de dados significativo do lado do servidor. 
É importante ressaltar que nem todos os clusters de servidores conse-
guirão efetivar esse gerenciamento sob demanda, pois muitos sistemas não 
conseguirão distinguir o serviço da aplicação. Dessa forma, nem todas as 
aplicações serão redirecionadas de forma correta para as máquinas adequadas 
e desenvolvidas explicitamente para atender à execução de uma natureza de 
aplicação explícita, é possível que máquinas diferentes executem aplicações 
diversas. Como consequência, dependendo do gerenciamento do cluster de 
servidores, pode-se perceber que ele é suscetível a permitir ociosidade de 
recurso, uma vez que podem haver nodos ociosos porque não há nenhuma 
aplicação exclusiva para a sua execução, ao passo que outros nodos podem 
apresentar uma elevada carga de trabalho a partir de muitas requisições para 
um único tipo de aplicação. Uma possível solução seria a virtualização focada 
em migração de código de uma máquina virtual para outra. 
19Processos em sistemas distribuídos
CARISSIMI, A. S.; ROCHOL, J.; GRANVILLE, L. Z. Redes de computadores. Porto Alegre: 
Bookman, 2009. (Série Livros Didáticos Informática UFRGS, v. 20).
COULOURIS, G. et al. Sistemas distribuídos: conceitos e projeto. 5. ed. Porto Alegre: 
Bookman, 2013. 
TANENBAUM, A. S. Sistemas operacionais modernos. 3. ed. São Paulo: Pearson, 2010.
TANENBAUM, A. S.; VAN STEEN, M. Sistemas distribuídos: princípios e paradigmas. 2. ed. 
Pearson Prentice Hall, 2007.
TORRES, G. Redes de computadores: curso completo. 2. ed. Rio de Janeiro: Novaterra, 2010. 
VAN STEEN, M.; TANENBAUM, A. S. Distributed systems. 3rd ed. [S. l.]: Createspace Inde-
pendent Publishing Platform, 2017.
Processos em sistemas distribuídos20
Dica do Professor
Considere uma arquitetura de um sistemas distribuído composta de diferentes compoenentes e 
tecnologias, tais como servidor Web, banco de dados, sistema de mensagens e orquestração. 
Houve um momento em que foi indentificada uma incompatibilidade entre alguns dos serviços 
providos pelos sistemas com a versão do sistema operacional. Esse problema acarretou a troca do 
sistema operacional atual por outro que garantia compatibilidade com todos os diferentes serviços. 
Posteriormente, os serviços começaram a apresentar problemas novamente, só que dessa vez o 
problema estava relacionado com a dependência de bibliotecas, cada serviço requeria uma 
biblioteca diferente com versões específicas. Então, a compatibilidade desses serviços e dessas 
bibliotecas com as depedências do sistema operacional também precisou ser analisada. De acordo 
com esse cenário, a arquitetura do sistema distribuído foi sendo modificada à medida que os 
problemas apareciam, isto é, troca de sistema operacional, substituição de componentes por 
 componentes com versões mais recentes, alteração de banco de dados, entre outros aspectos. Em 
suma, toda vez que algum componente ou alguma tecnologia é substituída, a equipe precisa passar 
pelo mesmo processo de verificação de compatibilidade entre os diferentes componentes e 
tecnologias com a infraestrutura do sistema.
Nesta Dica do Professor, conheça as estratégias denominadas containers e dockers, as quais têm 
sido amplamente utilizadas aliadas ao conceito de virtualização nos sistemas distribuídos atuais, 
que estão cada vez maiores, mais complexos e heterogêneos em diferentes aspectos.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/6d3e6700deca5e9e0f2a03de7fe40675
Exercícios
1) Considerando processos e threads, há diferentes formas de implementar um servidor, dentre 
elas: um servidor monothread (com um único fluxo de execução) e um servidor multithread 
(com mais de um fluxo de execução).
Existe alguma circunstância na qual um servidor monothread possa obter um melhor 
desempenho do que um servidor multithread?
A) Sim, muitas threads podem acarretar uma perda de desempenho.
B) Não, considerar apenas uma thread na implementação do servidor não apresenta melhor 
desempenho.
C) Sim, as threads necessitam de memória e requerem mais registradores, que são recursos mais 
caros.
D) Não, a implementação multithreads é a melhor alternativa para implementar um servidor 
independente da circunstância.
E) Sim, um servidor monothread não necessita controlar mais fluxos de execução e, por isso, 
podem obter um melhor desempenho.
2) Imagine um servidor Web que mantenha uma tabela na qual endereços IP de clientes sejam 
mapeados para as páginas Web acessadas mais recentemente. Quando um cliente se 
conecta ao servidor, o servidor consulta o cliente em sua tabela e, caso o encontre, retorna à 
página registrada.
Esse é um servidor:
A) com estado.
B) sem estado.
C) estado de sessão.
D) estado permanente.
E) com estado flexível.
3) A virtualização de recursos surge com o objetivo de fazer com que apenas uma CPU seja 
capaz de simular a existência de mais unidades de processamento, ou seja, a capacidade de 
simular vários núcleos de execução também pode se expandir de modo a atender outros 
recursos.
Quais das seguintes abordagens de gerenciamento de virtualização pode ajudar as 
organizações a manter a utilização ideal dos recursos de hardware ao longo do tempo?
A) Criando uma biblioteca de modelos de máquinas virtuais e copiando esses modelos para criar 
novas máquinas virtuais. 
B) Implementando várias cópias de máquinas virtuais em diferentes servidores hosts.
C) Colocando máquinas virtuais em computadores de rede virtual isolados.
D) Armazenando máquinas virtuais em uma SAN (Storage Area Network).
E) Reconfigurando automaticamente máquinas virtuais com base em estatísticas de 
desempenho.
4) A ideia básica da virtualização de recursos é considerar que hipoteticamente há um recurso 
replicado no sistema. Sobre as vantagens da virtualização, marque V para Verdadeiro e F 
para Falso. 
( ) Infraestrutura flexível por um custo mais baixo. 
( ) Maior eficiência no gerenciamento. 
( ) Maior disponibilidade. 
( ) Maior economia.
Assinale a alternativa correta:
A) V – V – F – V.
B) V – F – V – V.
C) F – V – V – F.
D) V – V – V – V.
E) V – V – F – V.
As threads são importantes em sistemas distribuídos porque auxiliam diretamente nos 
modelos estruturais de clientes e servidores. Principalmente em servidores, atualmente é 
5) 
muito difícil um servidor sem threads.
O principal objetivo de aplicar threads em um sistema distribuído é?
A) Transparência.
B) Concorrência.
C) Desempenho.
D) Segurança.
E) Escalabilidade.
Na prática
A virtualização foi introduzida na década de 70 e uma das razões mais importantes consiste na 
reutilização de hardware e componentes. Essa abordagem que consiste na virtualização de recursos 
tem obtido atenção crescente, principalmente em sistemas distribuídos, pois o processo de 
virtualização oferece um alto grau de portabilidade e flexibilidade aos sistemas.
Neste Na Prática, conheça o estudo de caso de uma empresa fictícia que manteve sua 
infraestrutura de servidores terceirizados. O conceito de virtualização começou a ser utilizado pela 
empresa no momento em que os usuários começaram a ter problemas com a instalação e conflitos 
de pacotes nos servidores.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para 
acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/39cf4f27-5bb8-42c0-b41e-eb5e4e938d77/866b4c67-90d2-40f4-8c65-0f4944101ab7.png
Saiba mais
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor:
SaaS, IaaS, PaaS (Modelos de Computação em Nuvem)
Assista ao vídeo a seguir que aborda os modelos de computação em nuvem SaSS, IaSS e PaSS.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Segurança na Internet do Futuro: Provendo Confiança 
Distribuída através de Correntes de Blocos na Virtualizaçãode 
Funções de Rede
Confira, neste artigo científico, os principais fundamentos de blockchain e virtualização e a relação 
desses conceitos com os desafios de pesquisa em segurança nas redes de nova geração.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Investigação dos Efeitos do Envelhecimento de Software na 
Plataforma Docker
Confira o artigo científico a seguir que aborda os efeitos de envelhecimento de software, focando 
na plataforma Docker.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://www.youtube.com/embed/-3W3AMNccms
https://www.gta.ufrj.br/ftp/gta/TechReports/RCS19.pdf
https://sol.sbc.org.br/index.php/wperformance/article/view/6478/6374?v=57157509
Análise de desempenho e segurança dos orquestradores 
Apache Mesos, Docker Swarm e Kubernetes em nuvens 
baseadas em OpenStack
Leia, neste artigo científico, um estudo que avalia o desempenho entre os orquestradores de 
containeres, Dockers Swarm, Kubernets e Apache Mesos em nuvens baseadas em OpenStack.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Descomplicando o Docker – O que é um container?
Veja, neste vídeo, um estudo que aborda características de containers e Dockers, os quais estão 
diretamente relacionados à virtualização de sistemas distribuídos.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://sol.sbc.org.br/index.php/eradrs/article/view/10769/10637?v=2133018911
https://www.youtube.com/embed/QFuOggpDAOw

Mais conteúdos dessa disciplina