SlideShare uma empresa Scribd logo
1 de 68
Baixar para ler offline
Sistemas Distribuídos
Processos, Threads, Virtualização e Migração de
Código
Frederico Madeira
LPIC-1, LPIC-2, CCNA
fred@madeira.eng.br
www.madeira.eng.br
Referências
- Tanenbaum, A.; Steen, M.; Sistemas Distribuídos, princípios
e paradigmas. Capítulo 3.
- Coulouris, G.;Dollimore, J.; Kindberg, T.;
SISTEMAS DISTRIBUIDOS CONCEITOS E PROJETO. Capítulo 6
- Tanenbaum, A.,Woodhull, A.; Sistemas Operacionais:
Projetos e Implementação, CAP 2
✔
Processos
✔
Threads
✔
Virtualização
✔
Migração de Código
Agenda
✔
Não existem Sistemas Operacionais Distribuídos, existem
apenas Sistemas Operacionais de rede como
✔
Linux
✔
MAC
✔
Windows
✔
Neste caso os SO’s devem oferecer suporte na implementação
de sistemas distribuídos
✔
Através da Combinação de Middleware + Sistema Operacional
podemos oferecer transparência em relação a rede e
abstração de certas atividades do SO.
Introdução
Processos
• É o conceito mais central em qualquer sistema
operacional
• É simplesmente um programa em execução,
incluindo os valores correntes do contador de
programa, dos registradores e das variáveis.
• Durante a execução do SO, a CPU alterna de
processo para processo, dando a impressão de
paralelismo
Processos
• SO cria vários processadores virtuais, sendo cada
um para executar um dado programa.
• SO possui uma tabela de processos para
monitorar esses processadores virtuais.
– A tabela possui:
• entradas para armazenar valores de
registradores de CPU
• Mapas de memória
• Arquivos abertos
• Informações sobre contabilidade
• Privilégios, etc...
• SO garante que os processos sejam
independentes de forma que não afetem uns aos
outros
• O compartilhamento da mesma CPU e outros
dispositivos é transparente para os processos.
Problemática dos Processos
• Nos anos 80, foi descoberto que a noção
tradicional de um sistema operacional, de um
processo que executa um único fluxo de execução,
era diferente dos requisitos dos sistemas
operacionais distribuídos.
• Diferente dos requisitos dos aplicativos mais
sofisticados que utilizam um único
processador, mas que exigem concorrência de
suas atividades internas.
• O único modo para seu programa acessar a dados
na estrutura (contexto) de um processo, consultar
ou mudar seu estado, é via uma chamada de
sistema.
Solução
• Aprimorar a noção de processo, para que ele
pudesse ser associado a múltiplas atividades
internas a ele.
• Com o surgimento de processadores de mais
alto desempenho, uma nova unidade de
processamento concorrente pode ser definida
dentro do próprio processo, novos fluxos de
execução e assim pode-se ter múltiplos fluxos
de execução (múltiplas threads) num mesmo
processo.
• Cada fluxo de execução é chamada Thread.
Threads
●
Executam sua própria porção de código
independente de outros threads
●
Rodam no espaço do usuário em contrapartida
aos processos que rodam no espaço do sistema
●
Mais barato do ponto de vista da CPU
●
Podem compartilhar áreas de endereçamento
●
Atualmente, um processo consiste em um
ambiente de execução, contendo uma ou mais
threads.
●
Threads (linhas de execução) são atividades
(tarefas internas) concorrentes executadas dentro
de um processo.
●
Um processo pode ter uma ou mais threads.
Espaço do Usuário x Espaço do Sistema
Processos x Threads
Multithread
• Múltiplas threads executam concorrentemente em
um processo, e é análogo a múltiplos processos
executando concorrentemente em um único
processador.
• Threads pertencentes a um mesmo processo,
compartilham os mesmos recursos e memória
(espaço de endereçamento) do processo.
• Cada thread pode ser associada a uma CPU
diferentes (em processadores modernos
• Exemplo de uma planilha rodando com 3 threads
de controle
– Controle interação do usuário
– Realizar atualização da planilha
– Realizar cópia de segurança
– Todos usando os mesmos dados
compartilhados em memória
Multithread
• No linux podemos avaliar as threds e processos através de
comandos como ps, top ou htop.
• TGID = Thread Group ID
• PID = Processo ID
Threads em Sistemas Distribuídos
• Clientes Multithread
– Para se obter alto grau de transparência de
distribuição, é necessário esconder o tempo de
propagação de mensagens entre processos
– Comumente o cliente deve executar mais outra
ação enquanto realiza a troca de mensagens
– Ex: Browser WEB
• Tão logo o arquivo HTML seja recebido,
threads separados se encarregam de buscar
outras partes
• Cada thread estabelece uma conexão
separada com o servidor
Threads em Sistemas Distribuídos
• Clientes Multithread
– Como servidores WEB normalmente são
replicados e cada thread abre uma nova
conexão com o servidor
– Temos a oportunidade de balancear carga do
servidor da aplicação, tendo em vista que cada
solicitação ao nosso servidor poderá ser
balanceada pelo DNS.
•Clientes Multithread
Exemplo de Cliente Multithread
Threads em Sistemas Distribuídos
• Servidores Multithread
– Além da performance, através de Thread, é
possível elaborar um paralelismo;
– De forma fácil e simplificado;
– Ainda mais quando computadores possui
multiprocessadores;
– Também evitamos que a CPU fica ociosa;
Threads em Sistemas Distribuídos
• Servidores Multithread
– Para exemplificar:
• Implementação de um filesystem sem
recurso de threads
– Enquando o FS processa uma requisição e
aguarda pelo disco, a CPU fica bloqueada
para receber novas solicitações
• Implementação de um filesystem com
recurso de threads
– Modelo despachante/operário
– Ao receber uma solicitação, o
despachante entrega a uma thread que
vai solicitar ao disco
– Em paralelo o despachante recebe outras
demadnas e entrega para outras threads
Threads em Sistemas Distribuídos
- Servidores
Threads em Sistemas Distribuídos –
Formas de construir o Servidor
Threads em Sistemas Distribuídos –
Formas de construir o Servidor
Virtualização
“É um termo que se refere a criação de máquinas virtuais que se
comportam com se fosse um computador real. O software
executado nesta máquina virtual é separado do hardware real da
máquina.” Wikipedia
“É a criação de substitutos flexíveis para recursos reais —
substitutos que têm as mesmas funções e interfaces externas que
seus equivalentes reais, mas diferem em atributos como tamanho,
desempenho e custo. Esses substitutos são denominados recursos
virtuais; seus usuários geralmente não têm conhecimento da
substituição.”
IBM DeveloperWorks: Hypervisores, virtualização e a nuvem
Virtualização
“É um termo amplo da computação que se refere a capacidade de
executar software, comumente, sistemas operacionais, concorrentemente
e isolados de outros programas do sistema.
A maioria das implementações utiliza um hypervisor, uma camada de
software ou subsistema que controla o hardware e provê sistemas
operacionais guest com acesso ao nível mais baixo do hardware.
O hypervisor permite multiplos sistemas operacionais, chamados de guest,
a rodar no mesmo sistema, oferecendo hardware virtualizado ao sistema
operaciona guest.”
Red Hat Enterprise Linux 6 - Virtualization Getting Started
Virtualização
Por que Virtualizar ?
• Estende ou substitui uma interface existente de
modo a imitar o comportamento de um outro
sistema;
• Essência da virtualização é imitar o comportamento
das interfaces (instruções de máquina, chamadas
de sistema)
• Muito utilizado na década de 70, nos mainframes
da IBM, onde executava aplicativos e S.O. de vários
fornecedores (através das máquinas virtuais)
• Isolação de uma aplicação completa e seu ambiente
– Falhas, ataques ou vulnerabilidades afetam
apenas uma aplicação e não todas que rodam na
máquina
• Alocação rápida de novos hosts.
• Aproveitamento do tempo ocioso das CPU’s
Métodos para Virtualização de SO
• Full Virtualization:
– Utiliza funcionalidades do Hardware do
processador
– Oferece ao guest total abstração sistema físico
hospedeiro
– Permite rodar sistemas operacionais guest sem
modificação
– Aplicações e o próprio sistema operacional não
percebem que estão virtualizados
Métodos para Virtualização de SO
• Para-Virtualization:
– Utiliza conjunto de software e estrutura de
dados que deve estar presentes no sistema
guest
– Requer modificação de software no guest para
utilização do sistema para-virtualizado
– Pode englobar todo o kernel, ou drivers ou
dispositivos de i/o
– Desempenho próximo da máquina real
Métodos para Virtualização de SO
• Software Virtualization (or emulation)
– Utiliza técnica de slow binary translation ou
outras técnicas para rodar sistemas guest sem
modificação.
Métodos para Virtualização de SO
Full Virtualization
Métodos para Virtualização de SO
Para-Virtualização
Hypervisor
• Os hypervisors são componentes de software
ou firmware que podem virtualizar recursos
do sistema.
• A virtualização geralmente é implementada através
de um Hypervisor
• Também chamado de Virtual Machine Monitor
(Monitor de Máquina Virtual) ou VMM
• Oferecem uma forma conveniente de usar o mesmo
hardware do computador físico para outras tarefas
diferentes
• Os hypervisors não são iguais, mas todos oferecem
recursos semelhantes
Tipos de Hypervisors
• Tipo 1
– Funcionam diretamente no HW
– Chamados de HardV
– Recomendados para servidores de produção
– Pode ser carregado via pendrive
– Baixo overhead
• Tipo 2
– Funcionam sobre um sistema operacional host e
oferecem o serviço de virtualização
– Chamados de SoftV
– Não recomendado para servidores de produção
– Normalmente utilizados como porta de entrada para a
virtualização
– Alto overhead, pois o SO Host consome recursos do Hw
• Temos outros tipos de virtualização, mas para escopo deste trabalho,
não foram descritos aqui
Tipos de Hypervisors
Exemplos de Hypervisor
• PowerVM
• VMware ESX Server (vSphere)
• Xen (Citrix)
• KVM
• z/VM
• Hyper-V
Funcionalidades desejadas em um
Hypervisor
• Desempenho da máquina virtual
Os sistemas virtuais deveriam ter desempenho similar
ou superior aos seus equivalentes, pelo menos em
relação aos aplicativos dentro cada servidor. Qualquer
coisa além dessa referência é lucro.
• Gerenciamento de memória
• Alta disponibilidade
Cada grande fornecedor tem sua própria solução de
alta disponibilidade e a maneira como cada um atinge
isso pode ser bem diferente, variando desde métodos
minimalistas até muito complexos
Funcionalidades desejadas em um
Hypervisor
• Migração ativa
Migração ativa em diferentes plataformas é a
capacidade de migrar simultaneamente duas ou mais
Vms
• Redes, armazenamento e segurança
Em rede, os hypervisors devem suportar agrupamento
de cartões de interface de rede (NICs) e
balanceamento de carga, isolamento Unicast e
suporte para o entroncamento de rede de área local
virtual (VLAN) padrão (802.1Q).
Em armazenamento, devem suportar armazenamento
em rede iSCSI e Fibre Channel
Exemplo KVM e Libvirt
Exemplo KVM e Libvirt
Servidor
• Um servidor é um processo que implementa um
serviço especifico
• Cada servidor é organizado do mesmo modo:
– Espera por uma requisição
– Processa-a
– Depois, espera pela próxima requisição
Servidor
• Na elaboração de um servidor, temos que
responder as seguintes perguntas:
– Como o cliente irá acessar o servidor?
– Como interromper a comunicação com o
servidor?
– Servidor deve guardar o estado dos clientes?
Servidor
Como os cliente irão acessar o servidor?
• Os servidores devem escolher um terminal (porta)
do computador para receber as requisições;
• Algumas portas são conhecidas (tais como o HTTP –
80 e o FTP – 20/21);
– Definidas pela IANA
• Existem duas maneiras de manipular portas:
– Utilizar um daemon
– Supeservidor (inetd no unix)
Servidor
Como os cliente irão acessar o servidor?
• O servidor cadastra a sua porta no daemon;
• O Cliente, antes de acessar o servidor, pergunta
qual porta está sendo disponibilizado;
• Depois, acessa o servidor;
Servidor
Como os cliente irão acessar o servidor?
• Para evitar que tenha processos ociosos esperando
por uma requisição;
• O supervisor monitora cada porta associada com
um serviço específico;
• Ao receber um requisição em uma dessas portas,
executa outro programa para continuar com o
requisição, e quanto terminar de atender, finaliza-o
• Ex.: Daemon inetd no Unix
Servidor
Como interromper a conexão com o servidor?
• Abordagem mais simples
– usuário finaliza o processo da aplicação cliente →
servidor encerrará a conexão antiga
• Abordagem mais completa:
– dados “urgentes” (fora da banda)
– Pacotes TCP possuem no header o campo URG.
– Servidor ao receber um pacote com o campo
URG setado é interrompido, através de um sinal.
Servidor
Servidor deve guardar o estado dos clientes?
• Existem três tipos de servidor:
– Sem estado
• Não mantém informações sobre os estados
dos clientes
• Pode mudar seu próprio estado sem ter de
informar a nenhum cliente
• As requisições atuais não influenciaram as
próximas requisições
• Vantagem: o serviço pode ser reiniciado e
não afeta as requisições dos clientes
• ex. Páginas WEB comuns
Servidor
Servidor deve guardar o estado dos clientes?
• Existem três tipos de servidor:
– Estado Flexível
• Armazena temporariamente o estado do
Cliente
• Após o tempo limitado, o servidor descarta
estas informações
• As requisições atuais não influenciaram as
próximas requisições
• ex. Session de uma página WEB
Servidor
Servidor deve guardar o estado dos clientes?
• Existem três tipos de servidor:
– Com Estado
• O servidor irá armazenar o estado do Cliente;
• As informações sobre precisam ser
explicitamente removidos pelo servidor;
• Problema: além de ter que armazenar o
estado de cada cliente, caso o servidor caia e
volte a funcionar, pode perder todos os
estados de todos os clientes;
• ex. Servidor de arquivos que permite a um
cliente manter cópia local de um arquivo.
Servidor mantêm uma tabela, com entradas
(cliente, arquivo). Permite monitorar as
permissões sobre um arquivo, etc.
• ex2: Tracker Bittorrent
Servidor - Clusters
• Uma forma de tornar o serviço mais disponível
agrupando computadores formando um Cluster
• Cluster é: Conjunto de máquinas conectadas por
uma rede, no qual cada máquina executa um ou
mais servidores. Estas máquinas estão conectadas
por uma rede local, com alta largura de banda e
baixa latência.
• Geralmente, é divido em 3 camadas;
Servidor - Clusters
Servidor - Clusters
• Primeira Camada
– Forma o ponto de entrada para o cluster de
servidores, oferecendo um único endereço de
rede.
– Considerando TCP, o comutador aceita
requisições e as transfere a um dos servidores
– Deve elaborar algum esquema de
balanceamento de carga: identificando o melhor
servidor a tratar a requisição ou sempre
selecionado um servidor diferente
Servidor - Clusters
• Primeira Camada
Servidor - Clusters
• Segunda Camada
– Servidores dedicados a processamento de
aplicações
– Normalmente servidores que executam
hardware de alto desempenho dedicado a
aumentar a capacidade de computação
– Clusters corporativos podem rodar com
máquinas comuns quando o gragalo for o acesso
ao disco.
Servidor - Clusters
• Terceira Camada
– Servidores de processamento de dados,
especialmente servidores de arquivo e banco de
dados
– Podem usar máquinas especializadas para
acesso a alta velocidade a disco e que têm
grandes caches dedos ao lado do servidor
Um exemplo de um site a utilizar técnicas de balanceamento de carga é a
própria Wikimedia Foundation e os seus projetos. Em Junho de 2004, a carga
era balanceada usando uma combinação de:
➔
Round robin DNS, que distribui os pedidos uniformemente para um dos
três servidores de cache Squid;
➔
Estes servidores de cache usam os tempos de resposta para distribuir os
pedidos para cada um dos sete servidores de páginas. Em média, os
servidores Squid já têm em cache páginas suficientes para satisfazer 75%
dos pedidos sem sequer consultar os servidores de páginas;
➔
Os scripts PHP que formam a aplicação distribuem a carga para um de vários
servidores de base de dados dependendo do tipo do pedido, com as
atualizações indo para um servidor primário e as consultas para um ou mais
servidores secundários.
- http://pt.wikipedia.org/wiki/Balanceamento_de_Carga
Balanceamento de Carga (Load Balancing)
Migração de Código
• Migração de código ocorre, tradicionalmente, na
forma de migração de processo;
• Todo o processo migra de uma máquina à outra;
• Isso é uma tarefa custosa e complicada;
• O motivo para fazer isso é sempre a
otimização (desempenho);
• Exemplo de um uso:
– Em um cluster, para melhorar o balanceamento
de carga, pode migrar programas para máquinas
ociosas, liberando as demais;
– Um cliente, antes de interagir com o servidor,
necessita baixa um código;
Migração de Código
Migração de Código
• Consiste em três segmentos:
– Segmento de código: contém o conjunto de
instruções que compõem o programa que está
em execução
– Segmento de recursos: contém referências a
recursos externos (arquivos, impressoras)
– Segmento de execução: armazenar o estado
em execução de um processo no momento da
migração (dados privados, pilha,contador de
programa)
Migração de Código
• Mobilidade pode ser de dois tipos:
– Mobilidade Fraca: possível transferir somente
o segmento de código, junto com alguns dados
de inicialização. Requer somente que a
máquina-alvo possa executar o código
(portabilidade)
– Mobilidade Forte: segmento de execução
também pode ser transferido. O processo em
execução pode ser parado e movido para uma
outra máquina e retomar a execução no ponto
original
Migração de Código
• Em relação do ponto de início da migração:
– Iniciada pelo remetente: a migração é
iniciada na máquina em que o código está em
execução
• Ex.: enviar programa de busca pela Internet
a um servidor de banco de dados para
realização de pesquisas; agente móvel que→
passa de site para site
– Iniciada pelo destinatário: Iniciativa da
migração de código é tomada pela máquina-alvo
(cliente);
• Ex.: Applet do Java
Migração de Código
• Destinatário:
– Mais simples que pelo remetente.
– Cliente toma iniciativa de migração.
• Contrário requer mecanismos de confiança entre
cliente e servidor
– Login/identificação
• Destinatário pode ser feita no anonimato
– Servidor não se interessa pelos dados do cliente
– Migração serve para melhorar desempenho do
cliente.
Migração de Código - Recursos
• Três tipos de vinculações processo-recurso:
– Vinculação por identificador
• Processo requer exatamente o recurso
referenciado (URL de um site)
– Vinculação por valor
• É necessário somente um valor
• Se outro recurso fornece o mesmo valor,
execução não é afetada (bibliotecas
padronizadas)
– Vinculação por tipo
• Processo requer um recurso de um tipo
específico (monitores,impressoras)
Migração de Código - Recursos
• Três tipos de vinculações recurso-máquina:
– Recursos não ligados: recursos podem ser
movidos com facilidade entre maquinas
diferentes(arquivos de dados)
– Recursos amarrados: recursos podem ser
movidos ou copiados, mas só a custo
relativamente alto ( banco de dados locais)
– Recurso fixos: recursos estão intimamente
vinculados a uma máquina ou ambiente
especifico e não podem ser movidos (porta)
Migração de Código
• Referência global
– Caso vários processos referenciem um recurso,
uma alternativa é estabelecer uma referência
global, que atravesse as fronteiras das máquinas
• URL (baixa complexidade)
• Memória compartilhada entre processos
(referência global significa memória
compartilhada)
Migração de Código
• Complexidade está ligada aos tipos de vínculo
processo-recurso e recurso-máquina
– Recursos não ligados: Melhor solução é copiar
ou mover o recurso para o novo destino
– Vinculações por tipo: A solução é vincular
novamente o processo a um recurso do mesmo
tipo disponível no local
Migração de Código - Heterogêneos
• Sistemas distribuído são construídos em ambientes
heterogêneos (S.O. E arquitetura de máquina);
• A migração de código neste cenário requer que
cada plataforma seja suportada pelo sistemas;
• Assegurando que cada segmento de código pode
ser executado e representado em cada plataforma;
Migração de Código - Heterogêneos
• Existem duas alternativas:
– Utilizar linguagens de programação alta
portabilidade (ex. Baseadas em
interpretadores/scripts – PHP – ou “compiladas”
- Java );
• conseguimos executar segmento de processo
em máquina diferentes
– Usar máquinas virtuais, virtualizando
recursos da máquina, possibilitando uniformiza
estes recursos;
• permite migra todo um sistema operacional
de uma máquina a outra;
Migração de Código
Sistemas Distribuídos
Arquiteturas
Frederico Madeira
LPIC-1, LPIC-2, CCNA
fred@madeira.eng.br
www.madeira.eng.br

Mais conteúdo relacionado

Mais procurados

2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processos2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processosComputação Depressão
 
Introdução aos Sistemas Distribuídos
Introdução aos Sistemas DistribuídosIntrodução aos Sistemas Distribuídos
Introdução aos Sistemas DistribuídosFrederico Madeira
 
Sistemas Distribuídos - Aula 08 - Segurança
Sistemas Distribuídos - Aula 08 - SegurançaSistemas Distribuídos - Aula 08 - Segurança
Sistemas Distribuídos - Aula 08 - SegurançaArthur Emanuel
 
Sistemas Operacionais Modernos Capítulo 3 Deadlock
Sistemas Operacionais Modernos Capítulo 3 DeadlockSistemas Operacionais Modernos Capítulo 3 Deadlock
Sistemas Operacionais Modernos Capítulo 3 DeadlockWellington Oliveira
 
Sistemas Operacionais - 03 - Tipos e Estrutura dos SO
Sistemas Operacionais - 03 - Tipos e Estrutura dos SOSistemas Operacionais - 03 - Tipos e Estrutura dos SO
Sistemas Operacionais - 03 - Tipos e Estrutura dos SOMauro Duarte
 
Aula 1: Virtualização
Aula 1: VirtualizaçãoAula 1: Virtualização
Aula 1: Virtualizaçãocamila_seixas
 
Comandos do linux
Comandos do linuxComandos do linux
Comandos do linuxPeslPinguim
 
Tipos de Sistemas Operacionais
Tipos de Sistemas OperacionaisTipos de Sistemas Operacionais
Tipos de Sistemas OperacionaisLuciano Crecente
 
222097384 aulas-de-rede-tipos-de-servidores
222097384 aulas-de-rede-tipos-de-servidores222097384 aulas-de-rede-tipos-de-servidores
222097384 aulas-de-rede-tipos-de-servidoresMarco Guimarães
 
Sistemas distribuídos aula 1
Sistemas distribuídos aula 1Sistemas distribuídos aula 1
Sistemas distribuídos aula 1Renato William
 
Processos e threads
Processos e threadsProcessos e threads
Processos e threadsSilvino Neto
 
Introdução a Sistemas Distribuídos
Introdução a Sistemas DistribuídosIntrodução a Sistemas Distribuídos
Introdução a Sistemas DistribuídosVictor Hazin da Rocha
 
Aula 2 introdução a sistemas distribuídos
Aula 2   introdução a sistemas distribuídosAula 2   introdução a sistemas distribuídos
Aula 2 introdução a sistemas distribuídosEduardo de Lucena Falcão
 
Aula de Sistemas Distribuídos - Tolerância a Falhas
Aula de Sistemas Distribuídos - Tolerância a FalhasAula de Sistemas Distribuídos - Tolerância a Falhas
Aula de Sistemas Distribuídos - Tolerância a FalhasVictor Hazin da Rocha
 
desafios na implementacao de sistemas distribuidos
desafios na implementacao de sistemas distribuidosdesafios na implementacao de sistemas distribuidos
desafios na implementacao de sistemas distribuidosHélio Jovo
 

Mais procurados (20)

Modelo TCP/IP
Modelo TCP/IPModelo TCP/IP
Modelo TCP/IP
 
2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processos2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processos
 
Introdução aos Sistemas Distribuídos
Introdução aos Sistemas DistribuídosIntrodução aos Sistemas Distribuídos
Introdução aos Sistemas Distribuídos
 
Sistemas Distribuídos - Aula 08 - Segurança
Sistemas Distribuídos - Aula 08 - SegurançaSistemas Distribuídos - Aula 08 - Segurança
Sistemas Distribuídos - Aula 08 - Segurança
 
Sistemas Operacionais Modernos Capítulo 3 Deadlock
Sistemas Operacionais Modernos Capítulo 3 DeadlockSistemas Operacionais Modernos Capítulo 3 Deadlock
Sistemas Operacionais Modernos Capítulo 3 Deadlock
 
Sistemas Operacionais - 03 - Tipos e Estrutura dos SO
Sistemas Operacionais - 03 - Tipos e Estrutura dos SOSistemas Operacionais - 03 - Tipos e Estrutura dos SO
Sistemas Operacionais - 03 - Tipos e Estrutura dos SO
 
Aula 1: Virtualização
Aula 1: VirtualizaçãoAula 1: Virtualização
Aula 1: Virtualização
 
Comandos do linux
Comandos do linuxComandos do linux
Comandos do linux
 
Tipos de Sistemas Operacionais
Tipos de Sistemas OperacionaisTipos de Sistemas Operacionais
Tipos de Sistemas Operacionais
 
SO-04 Escalonamento de Processos
SO-04 Escalonamento de ProcessosSO-04 Escalonamento de Processos
SO-04 Escalonamento de Processos
 
222097384 aulas-de-rede-tipos-de-servidores
222097384 aulas-de-rede-tipos-de-servidores222097384 aulas-de-rede-tipos-de-servidores
222097384 aulas-de-rede-tipos-de-servidores
 
Sistemas distribuídos aula 1
Sistemas distribuídos aula 1Sistemas distribuídos aula 1
Sistemas distribuídos aula 1
 
Processos e threads
Processos e threadsProcessos e threads
Processos e threads
 
Introdução a Sistemas Distribuídos
Introdução a Sistemas DistribuídosIntrodução a Sistemas Distribuídos
Introdução a Sistemas Distribuídos
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
Aula 2 introdução a sistemas distribuídos
Aula 2   introdução a sistemas distribuídosAula 2   introdução a sistemas distribuídos
Aula 2 introdução a sistemas distribuídos
 
SI - Comunicação
SI - ComunicaçãoSI - Comunicação
SI - Comunicação
 
Linux para leigos
Linux para leigos Linux para leigos
Linux para leigos
 
Aula de Sistemas Distribuídos - Tolerância a Falhas
Aula de Sistemas Distribuídos - Tolerância a FalhasAula de Sistemas Distribuídos - Tolerância a Falhas
Aula de Sistemas Distribuídos - Tolerância a Falhas
 
desafios na implementacao de sistemas distribuidos
desafios na implementacao de sistemas distribuidosdesafios na implementacao de sistemas distribuidos
desafios na implementacao de sistemas distribuidos
 

Semelhante a SI - Processos, Threads, Virtualização e Migração de Código

Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03thomasdacosta
 
Programação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaProgramação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaFabio Moura Pereira
 
Escalonamento de processos em sistemas virtualizados
Escalonamento de processos em sistemas virtualizadosEscalonamento de processos em sistemas virtualizados
Escalonamento de processos em sistemas virtualizadosClaudio Eckert
 
Apresentação HyperCloud GT8
Apresentação HyperCloud GT8Apresentação HyperCloud GT8
Apresentação HyperCloud GT8HyperCloud UFS
 
Sistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaSistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaAdriano Teixeira de Souza
 
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionaisSuperTec1
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Aula 03 informática aplicada - virtualização
Aula 03  informática aplicada - virtualizaçãoAula 03  informática aplicada - virtualização
Aula 03 informática aplicada - virtualizaçãoRobson Ferreira
 
Segurança em servidores Linux
Segurança em servidores LinuxSegurança em servidores Linux
Segurança em servidores LinuxImpacta Eventos
 
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptxAula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptxChadidoDiogo1
 
Componentes do Sistema operacional
Componentes do Sistema operacional Componentes do Sistema operacional
Componentes do Sistema operacional Rodrigo Rodrigues
 
Módulo 3-Sistema Operativo Servidor - V3.pdf
Módulo 3-Sistema Operativo Servidor - V3.pdfMódulo 3-Sistema Operativo Servidor - V3.pdf
Módulo 3-Sistema Operativo Servidor - V3.pdfFChico2
 
Lecture 4-Processos e Threads pt mz.pptx
Lecture 4-Processos e Threads pt mz.pptxLecture 4-Processos e Threads pt mz.pptx
Lecture 4-Processos e Threads pt mz.pptxcassamo2
 
Introducao a Sistemas Operacionais
Introducao a Sistemas OperacionaisIntroducao a Sistemas Operacionais
Introducao a Sistemas OperacionaisIsaac Vieira
 

Semelhante a SI - Processos, Threads, Virtualização e Migração de Código (20)

Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03
 
Programação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaProgramação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e Concorrência
 
Escalonamento de processos em sistemas virtualizados
Escalonamento de processos em sistemas virtualizadosEscalonamento de processos em sistemas virtualizados
Escalonamento de processos em sistemas virtualizados
 
Apresentação HyperCloud GT8
Apresentação HyperCloud GT8Apresentação HyperCloud GT8
Apresentação HyperCloud GT8
 
Sistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaSistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e Paralela
 
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Aula 03 informática aplicada - virtualização
Aula 03  informática aplicada - virtualizaçãoAula 03  informática aplicada - virtualização
Aula 03 informática aplicada - virtualização
 
CentOS
CentOSCentOS
CentOS
 
Servidores de Aplicações
Servidores de AplicaçõesServidores de Aplicações
Servidores de Aplicações
 
Consegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + PuppetConsegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + Puppet
 
04 threads
04 threads04 threads
04 threads
 
Segurança em servidores Linux
Segurança em servidores LinuxSegurança em servidores Linux
Segurança em servidores Linux
 
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptxAula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
 
Componentes do Sistema operacional
Componentes do Sistema operacional Componentes do Sistema operacional
Componentes do Sistema operacional
 
SO2 - Windows 7
SO2 - Windows 7SO2 - Windows 7
SO2 - Windows 7
 
Módulo 3-Sistema Operativo Servidor - V3.pdf
Módulo 3-Sistema Operativo Servidor - V3.pdfMódulo 3-Sistema Operativo Servidor - V3.pdf
Módulo 3-Sistema Operativo Servidor - V3.pdf
 
Lecture 4-Processos e Threads pt mz.pptx
Lecture 4-Processos e Threads pt mz.pptxLecture 4-Processos e Threads pt mz.pptx
Lecture 4-Processos e Threads pt mz.pptx
 
Redes2 aula02
Redes2 aula02Redes2 aula02
Redes2 aula02
 
Introducao a Sistemas Operacionais
Introducao a Sistemas OperacionaisIntroducao a Sistemas Operacionais
Introducao a Sistemas Operacionais
 

Mais de Frederico Madeira

Introdução a Cloud Computing
Introdução a Cloud ComputingIntrodução a Cloud Computing
Introdução a Cloud ComputingFrederico Madeira
 
SI - SAD - Sistemas de Arquivos Distribuídos
SI - SAD  - Sistemas de Arquivos DistribuídosSI - SAD  - Sistemas de Arquivos Distribuídos
SI - SAD - Sistemas de Arquivos DistribuídosFrederico Madeira
 
SI - Sistemas Distribuídos - Apresentação da disciplina
SI - Sistemas Distribuídos - Apresentação da disciplinaSI - Sistemas Distribuídos - Apresentação da disciplina
SI - Sistemas Distribuídos - Apresentação da disciplinaFrederico Madeira
 
Alta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDAlta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDFrederico Madeira
 
Linux - Instalação de Programas
Linux - Instalação de ProgramasLinux - Instalação de Programas
Linux - Instalação de ProgramasFrederico Madeira
 
Proteja seus dados em casa e na internet
Proteja seus dados em casa e na internetProteja seus dados em casa e na internet
Proteja seus dados em casa e na internetFrederico Madeira
 
Linux e o modelo open source
Linux e o modelo open sourceLinux e o modelo open source
Linux e o modelo open sourceFrederico Madeira
 
Redes VoIP - O Futuro da Telefonia
Redes VoIP - O Futuro da TelefoniaRedes VoIP - O Futuro da Telefonia
Redes VoIP - O Futuro da TelefoniaFrederico Madeira
 
Open Virtualization - Virtualização em Software Livre
Open Virtualization - Virtualização em Software LivreOpen Virtualization - Virtualização em Software Livre
Open Virtualization - Virtualização em Software LivreFrederico Madeira
 
Redes NGN - Next Generation Networks
Redes NGN - Next Generation NetworksRedes NGN - Next Generation Networks
Redes NGN - Next Generation NetworksFrederico Madeira
 
Ferramentas para Detecção de Problemas em Redes
Ferramentas para Detecção de Problemas em RedesFerramentas para Detecção de Problemas em Redes
Ferramentas para Detecção de Problemas em RedesFrederico Madeira
 
Arquiteturas de Gerência de Redes
Arquiteturas de Gerência de RedesArquiteturas de Gerência de Redes
Arquiteturas de Gerência de RedesFrederico Madeira
 
Introdução a Gerência de Redes
Introdução a Gerência de RedesIntrodução a Gerência de Redes
Introdução a Gerência de RedesFrederico Madeira
 
Apresentação da disciplina de Gerência de Redes
Apresentação da disciplina de Gerência de RedesApresentação da disciplina de Gerência de Redes
Apresentação da disciplina de Gerência de RedesFrederico Madeira
 
O Uso de Captchas de Áudio no Combate ao spam em Telefonia IP
O Uso de Captchas de Áudio no Combate ao spam em Telefonia IPO Uso de Captchas de Áudio no Combate ao spam em Telefonia IP
O Uso de Captchas de Áudio no Combate ao spam em Telefonia IPFrederico Madeira
 
Segurança em Redes de Voz Sobre IP
Segurança em Redes de Voz Sobre IPSegurança em Redes de Voz Sobre IP
Segurança em Redes de Voz Sobre IPFrederico Madeira
 

Mais de Frederico Madeira (20)

WebServices
WebServicesWebServices
WebServices
 
IoT - Internet of Things
IoT -  Internet of ThingsIoT -  Internet of Things
IoT - Internet of Things
 
Introdução a Cloud Computing
Introdução a Cloud ComputingIntrodução a Cloud Computing
Introdução a Cloud Computing
 
SI - SAD - Sistemas de Arquivos Distribuídos
SI - SAD  - Sistemas de Arquivos DistribuídosSI - SAD  - Sistemas de Arquivos Distribuídos
SI - SAD - Sistemas de Arquivos Distribuídos
 
SI - Sistemas Distribuídos - Apresentação da disciplina
SI - Sistemas Distribuídos - Apresentação da disciplinaSI - Sistemas Distribuídos - Apresentação da disciplina
SI - Sistemas Distribuídos - Apresentação da disciplina
 
Alta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDAlta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBD
 
Linux - Instalação de Programas
Linux - Instalação de ProgramasLinux - Instalação de Programas
Linux - Instalação de Programas
 
Proteja seus dados em casa e na internet
Proteja seus dados em casa e na internetProteja seus dados em casa e na internet
Proteja seus dados em casa e na internet
 
Linux e o modelo open source
Linux e o modelo open sourceLinux e o modelo open source
Linux e o modelo open source
 
Redes VoIP - O Futuro da Telefonia
Redes VoIP - O Futuro da TelefoniaRedes VoIP - O Futuro da Telefonia
Redes VoIP - O Futuro da Telefonia
 
Open Virtualization - Virtualização em Software Livre
Open Virtualization - Virtualização em Software LivreOpen Virtualization - Virtualização em Software Livre
Open Virtualization - Virtualização em Software Livre
 
Redes NGN - Next Generation Networks
Redes NGN - Next Generation NetworksRedes NGN - Next Generation Networks
Redes NGN - Next Generation Networks
 
MRTG - SNMP na Prática
MRTG - SNMP na PráticaMRTG - SNMP na Prática
MRTG - SNMP na Prática
 
Introdução ao SNMP
Introdução ao SNMPIntrodução ao SNMP
Introdução ao SNMP
 
Ferramentas para Detecção de Problemas em Redes
Ferramentas para Detecção de Problemas em RedesFerramentas para Detecção de Problemas em Redes
Ferramentas para Detecção de Problemas em Redes
 
Arquiteturas de Gerência de Redes
Arquiteturas de Gerência de RedesArquiteturas de Gerência de Redes
Arquiteturas de Gerência de Redes
 
Introdução a Gerência de Redes
Introdução a Gerência de RedesIntrodução a Gerência de Redes
Introdução a Gerência de Redes
 
Apresentação da disciplina de Gerência de Redes
Apresentação da disciplina de Gerência de RedesApresentação da disciplina de Gerência de Redes
Apresentação da disciplina de Gerência de Redes
 
O Uso de Captchas de Áudio no Combate ao spam em Telefonia IP
O Uso de Captchas de Áudio no Combate ao spam em Telefonia IPO Uso de Captchas de Áudio no Combate ao spam em Telefonia IP
O Uso de Captchas de Áudio no Combate ao spam em Telefonia IP
 
Segurança em Redes de Voz Sobre IP
Segurança em Redes de Voz Sobre IPSegurança em Redes de Voz Sobre IP
Segurança em Redes de Voz Sobre IP
 

Último

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 

Último (6)

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

SI - Processos, Threads, Virtualização e Migração de Código

  • 1. Sistemas Distribuídos Processos, Threads, Virtualização e Migração de Código Frederico Madeira LPIC-1, LPIC-2, CCNA fred@madeira.eng.br www.madeira.eng.br
  • 2. Referências - Tanenbaum, A.; Steen, M.; Sistemas Distribuídos, princípios e paradigmas. Capítulo 3. - Coulouris, G.;Dollimore, J.; Kindberg, T.; SISTEMAS DISTRIBUIDOS CONCEITOS E PROJETO. Capítulo 6 - Tanenbaum, A.,Woodhull, A.; Sistemas Operacionais: Projetos e Implementação, CAP 2
  • 4. ✔ Não existem Sistemas Operacionais Distribuídos, existem apenas Sistemas Operacionais de rede como ✔ Linux ✔ MAC ✔ Windows ✔ Neste caso os SO’s devem oferecer suporte na implementação de sistemas distribuídos ✔ Através da Combinação de Middleware + Sistema Operacional podemos oferecer transparência em relação a rede e abstração de certas atividades do SO. Introdução
  • 5. Processos • É o conceito mais central em qualquer sistema operacional • É simplesmente um programa em execução, incluindo os valores correntes do contador de programa, dos registradores e das variáveis. • Durante a execução do SO, a CPU alterna de processo para processo, dando a impressão de paralelismo
  • 6. Processos • SO cria vários processadores virtuais, sendo cada um para executar um dado programa. • SO possui uma tabela de processos para monitorar esses processadores virtuais. – A tabela possui: • entradas para armazenar valores de registradores de CPU • Mapas de memória • Arquivos abertos • Informações sobre contabilidade • Privilégios, etc... • SO garante que os processos sejam independentes de forma que não afetem uns aos outros • O compartilhamento da mesma CPU e outros dispositivos é transparente para os processos.
  • 7. Problemática dos Processos • Nos anos 80, foi descoberto que a noção tradicional de um sistema operacional, de um processo que executa um único fluxo de execução, era diferente dos requisitos dos sistemas operacionais distribuídos. • Diferente dos requisitos dos aplicativos mais sofisticados que utilizam um único processador, mas que exigem concorrência de suas atividades internas. • O único modo para seu programa acessar a dados na estrutura (contexto) de um processo, consultar ou mudar seu estado, é via uma chamada de sistema.
  • 8. Solução • Aprimorar a noção de processo, para que ele pudesse ser associado a múltiplas atividades internas a ele. • Com o surgimento de processadores de mais alto desempenho, uma nova unidade de processamento concorrente pode ser definida dentro do próprio processo, novos fluxos de execução e assim pode-se ter múltiplos fluxos de execução (múltiplas threads) num mesmo processo. • Cada fluxo de execução é chamada Thread.
  • 9. Threads ● Executam sua própria porção de código independente de outros threads ● Rodam no espaço do usuário em contrapartida aos processos que rodam no espaço do sistema ● Mais barato do ponto de vista da CPU ● Podem compartilhar áreas de endereçamento ● Atualmente, um processo consiste em um ambiente de execução, contendo uma ou mais threads. ● Threads (linhas de execução) são atividades (tarefas internas) concorrentes executadas dentro de um processo. ● Um processo pode ter uma ou mais threads.
  • 10. Espaço do Usuário x Espaço do Sistema
  • 12. Multithread • Múltiplas threads executam concorrentemente em um processo, e é análogo a múltiplos processos executando concorrentemente em um único processador. • Threads pertencentes a um mesmo processo, compartilham os mesmos recursos e memória (espaço de endereçamento) do processo. • Cada thread pode ser associada a uma CPU diferentes (em processadores modernos • Exemplo de uma planilha rodando com 3 threads de controle – Controle interação do usuário – Realizar atualização da planilha – Realizar cópia de segurança – Todos usando os mesmos dados compartilhados em memória
  • 13. Multithread • No linux podemos avaliar as threds e processos através de comandos como ps, top ou htop. • TGID = Thread Group ID • PID = Processo ID
  • 14. Threads em Sistemas Distribuídos • Clientes Multithread – Para se obter alto grau de transparência de distribuição, é necessário esconder o tempo de propagação de mensagens entre processos – Comumente o cliente deve executar mais outra ação enquanto realiza a troca de mensagens – Ex: Browser WEB • Tão logo o arquivo HTML seja recebido, threads separados se encarregam de buscar outras partes • Cada thread estabelece uma conexão separada com o servidor
  • 15. Threads em Sistemas Distribuídos • Clientes Multithread – Como servidores WEB normalmente são replicados e cada thread abre uma nova conexão com o servidor – Temos a oportunidade de balancear carga do servidor da aplicação, tendo em vista que cada solicitação ao nosso servidor poderá ser balanceada pelo DNS.
  • 16. •Clientes Multithread Exemplo de Cliente Multithread
  • 17. Threads em Sistemas Distribuídos • Servidores Multithread – Além da performance, através de Thread, é possível elaborar um paralelismo; – De forma fácil e simplificado; – Ainda mais quando computadores possui multiprocessadores; – Também evitamos que a CPU fica ociosa;
  • 18. Threads em Sistemas Distribuídos • Servidores Multithread – Para exemplificar: • Implementação de um filesystem sem recurso de threads – Enquando o FS processa uma requisição e aguarda pelo disco, a CPU fica bloqueada para receber novas solicitações • Implementação de um filesystem com recurso de threads – Modelo despachante/operário – Ao receber uma solicitação, o despachante entrega a uma thread que vai solicitar ao disco – Em paralelo o despachante recebe outras demadnas e entrega para outras threads
  • 19. Threads em Sistemas Distribuídos - Servidores
  • 20. Threads em Sistemas Distribuídos – Formas de construir o Servidor
  • 21. Threads em Sistemas Distribuídos – Formas de construir o Servidor
  • 22. Virtualização “É um termo que se refere a criação de máquinas virtuais que se comportam com se fosse um computador real. O software executado nesta máquina virtual é separado do hardware real da máquina.” Wikipedia “É a criação de substitutos flexíveis para recursos reais — substitutos que têm as mesmas funções e interfaces externas que seus equivalentes reais, mas diferem em atributos como tamanho, desempenho e custo. Esses substitutos são denominados recursos virtuais; seus usuários geralmente não têm conhecimento da substituição.” IBM DeveloperWorks: Hypervisores, virtualização e a nuvem
  • 23. Virtualização “É um termo amplo da computação que se refere a capacidade de executar software, comumente, sistemas operacionais, concorrentemente e isolados de outros programas do sistema. A maioria das implementações utiliza um hypervisor, uma camada de software ou subsistema que controla o hardware e provê sistemas operacionais guest com acesso ao nível mais baixo do hardware. O hypervisor permite multiplos sistemas operacionais, chamados de guest, a rodar no mesmo sistema, oferecendo hardware virtualizado ao sistema operaciona guest.” Red Hat Enterprise Linux 6 - Virtualization Getting Started
  • 25. Por que Virtualizar ? • Estende ou substitui uma interface existente de modo a imitar o comportamento de um outro sistema; • Essência da virtualização é imitar o comportamento das interfaces (instruções de máquina, chamadas de sistema) • Muito utilizado na década de 70, nos mainframes da IBM, onde executava aplicativos e S.O. de vários fornecedores (através das máquinas virtuais) • Isolação de uma aplicação completa e seu ambiente – Falhas, ataques ou vulnerabilidades afetam apenas uma aplicação e não todas que rodam na máquina • Alocação rápida de novos hosts. • Aproveitamento do tempo ocioso das CPU’s
  • 26. Métodos para Virtualização de SO • Full Virtualization: – Utiliza funcionalidades do Hardware do processador – Oferece ao guest total abstração sistema físico hospedeiro – Permite rodar sistemas operacionais guest sem modificação – Aplicações e o próprio sistema operacional não percebem que estão virtualizados
  • 27. Métodos para Virtualização de SO • Para-Virtualization: – Utiliza conjunto de software e estrutura de dados que deve estar presentes no sistema guest – Requer modificação de software no guest para utilização do sistema para-virtualizado – Pode englobar todo o kernel, ou drivers ou dispositivos de i/o – Desempenho próximo da máquina real
  • 28. Métodos para Virtualização de SO • Software Virtualization (or emulation) – Utiliza técnica de slow binary translation ou outras técnicas para rodar sistemas guest sem modificação.
  • 29. Métodos para Virtualização de SO Full Virtualization
  • 30. Métodos para Virtualização de SO Para-Virtualização
  • 31. Hypervisor • Os hypervisors são componentes de software ou firmware que podem virtualizar recursos do sistema. • A virtualização geralmente é implementada através de um Hypervisor • Também chamado de Virtual Machine Monitor (Monitor de Máquina Virtual) ou VMM • Oferecem uma forma conveniente de usar o mesmo hardware do computador físico para outras tarefas diferentes • Os hypervisors não são iguais, mas todos oferecem recursos semelhantes
  • 32. Tipos de Hypervisors • Tipo 1 – Funcionam diretamente no HW – Chamados de HardV – Recomendados para servidores de produção – Pode ser carregado via pendrive – Baixo overhead • Tipo 2 – Funcionam sobre um sistema operacional host e oferecem o serviço de virtualização – Chamados de SoftV – Não recomendado para servidores de produção – Normalmente utilizados como porta de entrada para a virtualização – Alto overhead, pois o SO Host consome recursos do Hw • Temos outros tipos de virtualização, mas para escopo deste trabalho, não foram descritos aqui
  • 34. Exemplos de Hypervisor • PowerVM • VMware ESX Server (vSphere) • Xen (Citrix) • KVM • z/VM • Hyper-V
  • 35. Funcionalidades desejadas em um Hypervisor • Desempenho da máquina virtual Os sistemas virtuais deveriam ter desempenho similar ou superior aos seus equivalentes, pelo menos em relação aos aplicativos dentro cada servidor. Qualquer coisa além dessa referência é lucro. • Gerenciamento de memória • Alta disponibilidade Cada grande fornecedor tem sua própria solução de alta disponibilidade e a maneira como cada um atinge isso pode ser bem diferente, variando desde métodos minimalistas até muito complexos
  • 36. Funcionalidades desejadas em um Hypervisor • Migração ativa Migração ativa em diferentes plataformas é a capacidade de migrar simultaneamente duas ou mais Vms • Redes, armazenamento e segurança Em rede, os hypervisors devem suportar agrupamento de cartões de interface de rede (NICs) e balanceamento de carga, isolamento Unicast e suporte para o entroncamento de rede de área local virtual (VLAN) padrão (802.1Q). Em armazenamento, devem suportar armazenamento em rede iSCSI e Fibre Channel
  • 37. Exemplo KVM e Libvirt
  • 38. Exemplo KVM e Libvirt
  • 39. Servidor • Um servidor é um processo que implementa um serviço especifico • Cada servidor é organizado do mesmo modo: – Espera por uma requisição – Processa-a – Depois, espera pela próxima requisição
  • 40. Servidor • Na elaboração de um servidor, temos que responder as seguintes perguntas: – Como o cliente irá acessar o servidor? – Como interromper a comunicação com o servidor? – Servidor deve guardar o estado dos clientes?
  • 41. Servidor Como os cliente irão acessar o servidor? • Os servidores devem escolher um terminal (porta) do computador para receber as requisições; • Algumas portas são conhecidas (tais como o HTTP – 80 e o FTP – 20/21); – Definidas pela IANA • Existem duas maneiras de manipular portas: – Utilizar um daemon – Supeservidor (inetd no unix)
  • 42. Servidor Como os cliente irão acessar o servidor? • O servidor cadastra a sua porta no daemon; • O Cliente, antes de acessar o servidor, pergunta qual porta está sendo disponibilizado; • Depois, acessa o servidor;
  • 43. Servidor Como os cliente irão acessar o servidor? • Para evitar que tenha processos ociosos esperando por uma requisição; • O supervisor monitora cada porta associada com um serviço específico; • Ao receber um requisição em uma dessas portas, executa outro programa para continuar com o requisição, e quanto terminar de atender, finaliza-o • Ex.: Daemon inetd no Unix
  • 44. Servidor Como interromper a conexão com o servidor? • Abordagem mais simples – usuário finaliza o processo da aplicação cliente → servidor encerrará a conexão antiga • Abordagem mais completa: – dados “urgentes” (fora da banda) – Pacotes TCP possuem no header o campo URG. – Servidor ao receber um pacote com o campo URG setado é interrompido, através de um sinal.
  • 45. Servidor Servidor deve guardar o estado dos clientes? • Existem três tipos de servidor: – Sem estado • Não mantém informações sobre os estados dos clientes • Pode mudar seu próprio estado sem ter de informar a nenhum cliente • As requisições atuais não influenciaram as próximas requisições • Vantagem: o serviço pode ser reiniciado e não afeta as requisições dos clientes • ex. Páginas WEB comuns
  • 46. Servidor Servidor deve guardar o estado dos clientes? • Existem três tipos de servidor: – Estado Flexível • Armazena temporariamente o estado do Cliente • Após o tempo limitado, o servidor descarta estas informações • As requisições atuais não influenciaram as próximas requisições • ex. Session de uma página WEB
  • 47. Servidor Servidor deve guardar o estado dos clientes? • Existem três tipos de servidor: – Com Estado • O servidor irá armazenar o estado do Cliente; • As informações sobre precisam ser explicitamente removidos pelo servidor; • Problema: além de ter que armazenar o estado de cada cliente, caso o servidor caia e volte a funcionar, pode perder todos os estados de todos os clientes; • ex. Servidor de arquivos que permite a um cliente manter cópia local de um arquivo. Servidor mantêm uma tabela, com entradas (cliente, arquivo). Permite monitorar as permissões sobre um arquivo, etc. • ex2: Tracker Bittorrent
  • 48. Servidor - Clusters • Uma forma de tornar o serviço mais disponível agrupando computadores formando um Cluster • Cluster é: Conjunto de máquinas conectadas por uma rede, no qual cada máquina executa um ou mais servidores. Estas máquinas estão conectadas por uma rede local, com alta largura de banda e baixa latência. • Geralmente, é divido em 3 camadas;
  • 50. Servidor - Clusters • Primeira Camada – Forma o ponto de entrada para o cluster de servidores, oferecendo um único endereço de rede. – Considerando TCP, o comutador aceita requisições e as transfere a um dos servidores – Deve elaborar algum esquema de balanceamento de carga: identificando o melhor servidor a tratar a requisição ou sempre selecionado um servidor diferente
  • 51. Servidor - Clusters • Primeira Camada
  • 52. Servidor - Clusters • Segunda Camada – Servidores dedicados a processamento de aplicações – Normalmente servidores que executam hardware de alto desempenho dedicado a aumentar a capacidade de computação – Clusters corporativos podem rodar com máquinas comuns quando o gragalo for o acesso ao disco.
  • 53. Servidor - Clusters • Terceira Camada – Servidores de processamento de dados, especialmente servidores de arquivo e banco de dados – Podem usar máquinas especializadas para acesso a alta velocidade a disco e que têm grandes caches dedos ao lado do servidor
  • 54. Um exemplo de um site a utilizar técnicas de balanceamento de carga é a própria Wikimedia Foundation e os seus projetos. Em Junho de 2004, a carga era balanceada usando uma combinação de: ➔ Round robin DNS, que distribui os pedidos uniformemente para um dos três servidores de cache Squid; ➔ Estes servidores de cache usam os tempos de resposta para distribuir os pedidos para cada um dos sete servidores de páginas. Em média, os servidores Squid já têm em cache páginas suficientes para satisfazer 75% dos pedidos sem sequer consultar os servidores de páginas; ➔ Os scripts PHP que formam a aplicação distribuem a carga para um de vários servidores de base de dados dependendo do tipo do pedido, com as atualizações indo para um servidor primário e as consultas para um ou mais servidores secundários. - http://pt.wikipedia.org/wiki/Balanceamento_de_Carga Balanceamento de Carga (Load Balancing)
  • 55. Migração de Código • Migração de código ocorre, tradicionalmente, na forma de migração de processo; • Todo o processo migra de uma máquina à outra; • Isso é uma tarefa custosa e complicada; • O motivo para fazer isso é sempre a otimização (desempenho); • Exemplo de um uso: – Em um cluster, para melhorar o balanceamento de carga, pode migrar programas para máquinas ociosas, liberando as demais; – Um cliente, antes de interagir com o servidor, necessita baixa um código;
  • 57. Migração de Código • Consiste em três segmentos: – Segmento de código: contém o conjunto de instruções que compõem o programa que está em execução – Segmento de recursos: contém referências a recursos externos (arquivos, impressoras) – Segmento de execução: armazenar o estado em execução de um processo no momento da migração (dados privados, pilha,contador de programa)
  • 58. Migração de Código • Mobilidade pode ser de dois tipos: – Mobilidade Fraca: possível transferir somente o segmento de código, junto com alguns dados de inicialização. Requer somente que a máquina-alvo possa executar o código (portabilidade) – Mobilidade Forte: segmento de execução também pode ser transferido. O processo em execução pode ser parado e movido para uma outra máquina e retomar a execução no ponto original
  • 59. Migração de Código • Em relação do ponto de início da migração: – Iniciada pelo remetente: a migração é iniciada na máquina em que o código está em execução • Ex.: enviar programa de busca pela Internet a um servidor de banco de dados para realização de pesquisas; agente móvel que→ passa de site para site – Iniciada pelo destinatário: Iniciativa da migração de código é tomada pela máquina-alvo (cliente); • Ex.: Applet do Java
  • 60. Migração de Código • Destinatário: – Mais simples que pelo remetente. – Cliente toma iniciativa de migração. • Contrário requer mecanismos de confiança entre cliente e servidor – Login/identificação • Destinatário pode ser feita no anonimato – Servidor não se interessa pelos dados do cliente – Migração serve para melhorar desempenho do cliente.
  • 61. Migração de Código - Recursos • Três tipos de vinculações processo-recurso: – Vinculação por identificador • Processo requer exatamente o recurso referenciado (URL de um site) – Vinculação por valor • É necessário somente um valor • Se outro recurso fornece o mesmo valor, execução não é afetada (bibliotecas padronizadas) – Vinculação por tipo • Processo requer um recurso de um tipo específico (monitores,impressoras)
  • 62. Migração de Código - Recursos • Três tipos de vinculações recurso-máquina: – Recursos não ligados: recursos podem ser movidos com facilidade entre maquinas diferentes(arquivos de dados) – Recursos amarrados: recursos podem ser movidos ou copiados, mas só a custo relativamente alto ( banco de dados locais) – Recurso fixos: recursos estão intimamente vinculados a uma máquina ou ambiente especifico e não podem ser movidos (porta)
  • 63. Migração de Código • Referência global – Caso vários processos referenciem um recurso, uma alternativa é estabelecer uma referência global, que atravesse as fronteiras das máquinas • URL (baixa complexidade) • Memória compartilhada entre processos (referência global significa memória compartilhada)
  • 64. Migração de Código • Complexidade está ligada aos tipos de vínculo processo-recurso e recurso-máquina – Recursos não ligados: Melhor solução é copiar ou mover o recurso para o novo destino – Vinculações por tipo: A solução é vincular novamente o processo a um recurso do mesmo tipo disponível no local
  • 65. Migração de Código - Heterogêneos • Sistemas distribuído são construídos em ambientes heterogêneos (S.O. E arquitetura de máquina); • A migração de código neste cenário requer que cada plataforma seja suportada pelo sistemas; • Assegurando que cada segmento de código pode ser executado e representado em cada plataforma;
  • 66. Migração de Código - Heterogêneos • Existem duas alternativas: – Utilizar linguagens de programação alta portabilidade (ex. Baseadas em interpretadores/scripts – PHP – ou “compiladas” - Java ); • conseguimos executar segmento de processo em máquina diferentes – Usar máquinas virtuais, virtualizando recursos da máquina, possibilitando uniformiza estes recursos; • permite migra todo um sistema operacional de uma máquina a outra;
  • 68. Sistemas Distribuídos Arquiteturas Frederico Madeira LPIC-1, LPIC-2, CCNA fred@madeira.eng.br www.madeira.eng.br