• Nenhum resultado encontrado

Processos (Threads,Virtualização e Migração de Código)

N/A
N/A
Protected

Academic year: 2021

Share "Processos (Threads,Virtualização e Migração de Código)"

Copied!
63
0
0

Texto

(1)

Processos

(2)

Roteiro

● Processos ● Threads

● Virtualização

(3)

O que é um processo?!

(4)
(5)

Processo

● Processo tem um problema: quando ocorre um

bloqueio nele, todo o processo parará de funcionar;

● Ex. Você só pode fazer outra coisa no sistemas

depois que terminar de imprimir todos os arquivos;

● O processo só volta ser liberado quando terminar

o bloqueio;

(6)
(7)

Thread

● É o processo ser divido em diversas tarefas,

cada

● Possibilitar que as atividades de um processo

possam ser executadas de forma separada, sem que uma afete a outra;

(8)

Mas o que isso tem haver com Sistemas Distribuído?!

TUDO! As threads podem ser usadas em sistemas distribuído para otimizar o sistemas,

(9)

Thread

Sistemas Distribuído (Cliente)

● Sistemas distribuídos que operam em redes de longa distância →

escondem longos tempos de propagação de mensagens entre processos

● A maneira de ocultar latências de comunicação é iniciar a

comunicação e imediatamente prosseguir com outra atividade

● A vantagem disso é que o usuário não precisa esperar por todos os

arquivos para fazer outra atividade

● Exemplo:

● Os navegadores (da Internet) exibem a pagina mesmo que não tenham

(10)

Thread

(11)

Thread

(12)

Thread

Sistemas Distribuído (Servidor)

● 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;

(13)

Thread

Sistemas Distribuído (Servidor)

Esperar Requisição Receber Requisição

Tratar Requisição Processar Responder

● Servidor sem Thread

● Só irá atender uma requisição

por vez;

● Pode ocorrer na etapa

“Processar” ficar presa por esperar pela liberação de um recurso (ex. Leitura de disco);

● Assim a CPU fica ociosa, sem

trabalhar, até quando o processo for liberado;

(14)

Thread

Sistemas Distribuído (Servidor)

● Servidor com Thread

● Ao identificar que estabeleceram

conexão, o servidor “cria” uma

Thread para tratar a requisição e já volta ao estado anterior;

● Assim, cada requisição não irá

influência na próxima;

● Caso ocorra um erro ou bloqueio de

uma das threads, não impedirá que as demais trabalhem; Esperar Requisição Receber Requisição Tratar Requisição Processar Responder Criar Thread ...

(15)

Thread

Sistemas Distribuído (Servidor)

Esperar Requisição Receber Requisição

Tratar Requisição Processar Responder

Servidor sem uso de Thread

Esperar Requisição Receber Requisição Tratar Requisição Processar Responder Criar Thread

Servidor com uso de Thread

(16)

Mas há outra forma de fazer paralelismo sem usar Thread?!

Existem sim. Mas você irá elaborar um sistema muito mais complexo. Ou seja, esqueça e use Thread.

(17)

Virtualização

● Processos e Threads podem ser vistos como um

modo de fazer diversas tarefas ao mesmo tempo

● Fingindo que existem mais de uma CPU no

mesmo computador

● Essa ideia de fingir pode ser estendida para outros

recursos do computador, o que resulta na

(18)

Virtualização

● 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)

(19)
(20)

Virtualização

● Existem vários modos pelos quais a

virtualização pode ser realizada na prática

● Existem quatro tipos diferentes de interfaces

em quatro níveis diferentes:

● Instruções Privilegiadas; ● Instruções Gerais;

● Chamadas de Sistemas; ● Funções de Biblioteca.

(21)
(22)

Virtualização

● A virtualização pode ocorrer de dois modos:

● Primeiro, fornecer um conjunto abstrato de

instruções para executar uma aplicação;

● Segundo, uma camada que protege totalmente o

hardware original, mas que oferece um conjunto de instruções completo, dele ou de outro, hardware;

(23)

Virtualização

Primeiro Modo

● Instruções podem ser interpretadas ou emuladas;

● Java e PHP são exemplos de cenário de interpretação de

instruções;

● Exemplo de emular instruções (ou cenário) quando

aplicativos do Windows são executados no Linux (através do Wine);

Essas emulação é denominada Máquina Virtual de

(24)

Virtualização

Primeiro Modo

(25)

Virtualização

Segundo Modo

● Quando oferecemos uma interface completa do

hardware, possibilitamos que diversos

Sistemas operacionais (e aplicações) executem nessa plataforma

● Em geral, essa camada é denominada Monitor

de Máquina Virtual

(26)

Virtualização

Segundo Modo

● As vantagens são:

● Permite o isolamento completo do ambiente;

● Caso haja uma falha de segurança, não afeta o recurso de uma

máquina toda;

● Maior portabilidade das aplicações;

● Desacoplamento entre hardware e software;

● Permitindo mover um ambiente completo de uma máquina a

(27)

Virtualização

Segundo Modo

(28)

Cliente

● A principal função da versão cliente de um

sistema distribuído é disponibilizar uma maneira de interagir com servidor remoto;

● Existem duas maneiras:

● Utilizar protocolos específicos de comunicação (ex.

Sincronização de agenda ou relógio);

● Cliente ser um terminal burro, onde todo o

gerenciamento do sistema é feito no servidor remoto;

(29)
(30)

Cliente

X Window

● Exemplo de Interface em Rede: X Window

● É uma das mais antigas e utilizadas ainda hoje

● Possui dois componentes:

● Núcleo X: oferece uma interface de nível relativamente baixo para controlar a

tela e também para capturar eventos do teclado e do mouse

● Xlib: Interface disponibilizada para as aplicações é definida pela biblioteca Xlib

● A comunicação entre esses dois componentes é feita através do

(31)

Cliente

X Window

(32)

Cliente

X Window

● Núcleo X e as aplicações X não precisam necessariamente

residir na mesma máquina

● O protocolo X é um protocolo de comunicação de camada

de aplicação pelo qual uma instância de Xlib pode trocar dados e eventos com o núcleo X

● Ex.: Xlib pode enviar requisições ao núcleo X para criar ou

encerrar uma janela, estabelecer cores e definir o tipo de

cursor. O núcleo X reagirá a eventos locais como entrada de teclado e mouse devolvendo pacotes de eventos a Xlib

(33)

Cliente

X Window

● Núcleo X recebe requisições para manipular o

visor e que recebe essas requisições de aplicações

● O Núcleo X age como um servidor, enquanto

as aplicações desempenham o papel de clientes

(34)

Cliente

Transparência

● Além de fornece um modo de comunicação com o

servidor, a versão cliente da aplicação pode tratar de algumas transparências de distribuição

● Essas transparências servem para o cliente não fique

ciente que está trabalhando com processos remotos

● Existem diversos tipos de transparências, cada uma

(35)

Cliente

Transparência

● Transparência de:

Acesso: esconde se o recurso é local ou remoto;

Localização: o cliente não precisa saber onde está o servidor

para poder se comunicar com ele;

Replica: requisita a todas as replicas e escolhe apenas uma

requisição (ex. a que chegar primeiro);

Falha: quando houver uma falha na comunicação com algum

servidor, a aplicação poderá tentar restabelecer a conexão com outros servidores;

(36)

Servidor

● Um servidor é um processo que implementa

um serviço especifico;

● Cada servidor é organizado do mesmo modo:

● Espera por uma requisição ● Processa-a

(37)

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?

(38)

Servidor

1° como os cliente irão acessar o servidor?

1° como os cliente irão acessar o servidor?

1° 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 – 21);

● Existem duas maneiras de manipular portas:

Utilizar um daemon, ou

(39)

Servidor

1° 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;

(40)

Servidor

1° 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

(41)

Servidor

2° 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

(42)

Servidor

3° Servidor deve guardar o estado dos clientes?

● Existem três tipos de servidor:

● Sem estado

● Estado Flexível ● Com estado

(43)

Servidor

3° Servidor deve guardar o estado dos clientes?

● 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

(44)

Servidor

3° Servidor deve guardar o estado dos clientes?

● 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

(45)

Servidor

3° Servidor deve guardar o estado dos clientes?

● 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 mantem uma tabela, com entradas (cliente, arquivo). Permite monitorar as permissões sobre um arquivo, etc.

(46)

Servidor

Cluster

● Uma forma de tornar o serviço mais disponível é

agrupar computadores e forma 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.

(47)

Servidor

(48)

Servidor

Cluster

● 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

(49)

Servidor

(50)

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

(51)

Migração de Código

● Ex. 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,

(52)

Migração de Código

Servidor Cliente

1. conectar com o servidor

2. pegar código!

Problema: a segurança na lado do cliente! Tem como garantir que esse código migrado não está executando outra coisa? Ex.

(53)

A migração de código só serve para migrar um processo inteiro?

Não, migração de código é algo muito mais amplo: podemos também migrar status de um programa ou outras partes do ambiente.

(54)

Migração de Código

● Processo 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)

(55)

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

(56)

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;

Iniciada pelo destinatário: Iniciativa da migração

de código é tomada pela máquina-alvo (cliente);

(57)
(58)

Migração de Código

Recurso

● 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,

(59)

Migração de Código

Recurso

● 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)

(60)

Migração de Código

Recurso

● 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)

(61)

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

(62)

Migração de Código

heterogêneos

● Na realidade, sistemas distribuído é construído 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;

(63)

Migração de Código

heterogêneos

● Existem duas alternativas:

● Utilizar linguagens de programação alta

portabilidade (ex. Baseadas em interpretadores – 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

Referências

Documentos relacionados

Atender às exigências quanto a forma de registro das situações acima descritas: nome e o respectivo número de inscrição no CPF ou no CNPJ, conforme o caso, do

Continuar a ler...(pdf) Reunião do CCT (Comité consultatif de thermométrie) Esta Reunião tem como objectivo partilhar informação científica entre peritos mundiais da metrologia

Produto com controle de lote: após salvar o produto com a quantidade solicitada, selecionar o item em questão e clicar no vinculado Requisição – Lotes de Produtos Consumo.. Clicar

e máquinas, permitindo que cada aplicação seja executada na sua própria máquina virtual com bibliotecas e sistema operacional.. 3 Processos – 3.2 Virtualização.. 3.2.2

CodigoRequisicao Código da requisição Texto N/A Não considerar este campo para o serviço. Data Data da requisição Datetime N/A Não

1.1 O presente processo de aquisição tem por objeto a contratação de empresa, sob o regime de empreitada por preço global, para prestação de serviços e disponibilização

– Lista dos prontos: conjunto de processos residentes na memória principal, prontos e esperando para serem executados;. – Lista de E/S: conjunto de processos esperando por

Quando se tratar de intervenção provocada por requisição, hipótese em que o Judiciário faz a requisição ao Chefe do Executivo, após provimento do pedido feito pelo