• Nenhum resultado encontrado

Sistemas Distribuídos - Cap 3_parte_1

N/A
N/A
Protected

Academic year: 2021

Share "Sistemas Distribuídos - Cap 3_parte_1"

Copied!
30
0
0

Texto

(1)

Processos

Capítulo 3 – Parte 1

(2)

Processos

Definição:

• Um processo é um programa em execução, ou melhor,um ambiente onde se executa um programa.

• Um mesmo programa pode produzir resultados diferentes, em função do processo no qual ele é executado.

• Exemplo: Se um programa necessitar abrir cinco arquivos

simultaneamente, e o processo onde será executado só permitir que se abram quatro, o programa será interrompido durante a execução.

(3)

Processos

• O sistema operacional

materializa o processo através de uma estrutura chamada

Bloco de Controle de Processo (BCP).

• No BCP, o SO mantém todas as informações sobre o processo.

• O processo pode ser divido em três elementos básicos:

contexto de hardware, contexto de software e espaço de

endereçamento. Lista de Arquivos Abertos

Limites de Memória Registradores Prioridade do Processo Nome do Processo Estado do Processo Ponteiros BCP

(4)

Processos

(5)

Processos

Contexto de Hardware:

• O contexto de hardware constitui-se, basicamente, do conteúdo de

registradores: program counter (PC), stack pointer (SP) e registrador de status.

O program counter (PC) é o registrador responsável pelo

armazenamento do endereço da próxima instrução que a CPU deverá executar. Toda vez que a CPU executa uma instrução, o PC é

atualizado com um novo endereço.

O stack pointer (SP) é o registrador que contém o endereço de

memória do topo da pilha, que é a estrutura de dados onde o sistema mantém informações sobre tarefas que estavam sendo processadas e que tiveram que ser interrompidas por algum motivo.

(6)

Processos

Contexto de Hardware (cont.):

O registrador de status é o responsável por armazenar informações sobre a execução do programa.

• Quando um processo está em execução, o seu contexto de hardware está armazenado nos registradores do processador. No momento em que o processo perde a utilização da CPU, o sistema salva suas

informações no seu contexto de hardware.

• O contexto de hardware é fundamental para a implementação dos

sistemas de tempo compartilhado (time-sharing), onde os processos se revezam na utilização do processador, podendo ser interrompidos e, posteriormente, restaurados.

(7)

Processos

• Quando um processo é interrompido para que outro processo utilize a CPU, é realizada a Troca de Contexto.

A Troca de Contexto consiste em salvar o conteúdo dos

registradores da CPU e carregá-los com os valores referentes ao processo que esteja ganhando a utilização da CPU.

(8)

Processos

Contexto de Software:

• O contexto de software especifica características do processo que vão influir na execução do programa, por exemplo, número máximo de

arquivos abertos simultaneamente.

• O contexto de software define basicamente três grupos de informações: identificação, quotas e privilégios.

Identificação

Cada processo tem identificação única (PID – process identification), representada por um número.

O processo também possui uma identificação (UID – user identification) do usuário ou processo que o criou (owner).

(9)

Processos

Quotas

• São os limites de cada recurso do sistema que um processo pode alocar.

• Alguns exemplos de quotas: número máximo de arquivos abertos, tamanho máximo de memória que o processo pode alocar, número máximo de operações de E/S pendentes.

Privilégios

• Definem o que o processo pode ou não fazer em relação ao sistema e aos outros processos.

• Existem privilégios associados à segurança que permitem a um usuário a eliminar processos de outros usuários e ter acesso a arquivos que não lhe pertencem.

(10)

Processos

Espaço de Endereçamento:

• É a área de memória do processo onde o programa será executado, além do espaço para os dados utilizados por ele.

• Cada processo possui seu próprio espaço de endereçamento, que deve ser protegido do acesso dos demais processos.

(11)

Mudanças de Estados de Processos

• Um processo muda de estado diversas vezes durante o seu

processamento, em função de eventos originados por ele próprio (eventos voluntários) ou pelo sistema operacional (eventos

involuntários).

• Basicamente existem 4 mudanças de estado que podem ocorrer a um processo:

• Pronto → Execução (a)

• Execução → Espera (b) • Espera → Pronto (c) • Execução → Pronto (d) Execução Espera Pronto (a) (b) (c) (d)

(12)

Mudanças de Estados de Processos

Pronto →→→→ Execução

• Quando um processo é criado, o sistema o coloca em uma lista de processos no estado de pronto, onde aguarda a oportunidade de ser executado.

Execução →→→→ Espera

• Um processo em execução passa para o estado de espera por eventos gerados pelo próprio processo, como, por exemplo, uma operação de entrada e saída.

Espera →→→→ Pronto

• Um processo no estado de espera passa para o estado de pronto quando a operação solicitada é atendida ou o recurso esperado é liberado. Um processo no estado de espera sempre precisa passar pelo estado de pronto antes de ser selecionado para execução.

Execução →→→→ Pronto

• Um processo em execução passa para o estado de pronto por eventos gerados pelo sistema, como, por exemplo, o fim da fatia de tempo que o processo possui para sua

(13)

Tipos de Processos

CPU-bound

• Um processo é dito CPU-bound quando passa a maior parte do tempo no estado de execução, ou seja, utilizando o

processador.

I/O-bound

• Um processo é dito I/O-bound quando passa a maior parte do tempo no estado de espera, pois realiza um elevado

número de operações de entrada/saída.

• Os processos podem ser classificados de acordo com o tipo de processamento: CPU-bound, I/O bound.

(14)

Subprocesso e Thread

• Um processo pode criar outros processo de maneira hierárquica.

• Quando um processo cria outro, chamamos o processo criado de subprocesso. O

subprocesso por sua vez, pode criar outros subprocesso.

• Caso um processo deixe de existir, os subprocessos subordinados são

eliminados.

• A utilização de subprocessos permite dividir uma aplicação em partes que podem

trabalhar de forma concorrente.

Processo A

Processo B Processo C

(15)

Subprocessos e Thread

• O uso de subprocessos no desenvolvimento de aplicações

concorrentes demanda consumo de diversos recursos de sistema.

• Sempre que um novo processo é criado, o sistema deve alocar recursos (contexto de HW, contexto de SW e espaço de

endereçamento).

• Na tentativa de diminuir o tempo gasto na criação/eliminação de processos, bem como economizar recursos do sistema como um todo, foi introduzido o conceito de thread.

(16)

Subprocessos e Thread

• A grande diferença entre

subprocessos e threads é em

relação ao espaço de endereçamento.

• Enquanto subprocessos

possuem, cada um espaços independentes e protegidos,

threads compartilham o mesmo espaço de

endereçamento de processo,

sem nenhuma proteção,

permitindo assim que um thread possa alterar dados de outro

(17)

Clientes Multithread

• Sistemas distribuídos que operam em redes de longa distancia precisam esconder longos tempos de propagação de mensagens entre processos para estabelecer um alto grau de transparência de distribuição.

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

comunicação e imediatamente prosseguir com outra atividade.

• Exemplo: Página da Web: consiste em texto, imagens, sons...

A cada elemento, browser estabelece uma conexão TCP/IP, para ler os dados e passar ao monitor do usuário.

Enquanto o texto esta sendo disponibilizado para o usuário, o browser continua buscando outros arquivos, como imagens.

Vantagem: usuário não precisa esperar até que todos os componentes sejam buscados.

(18)
(19)

Clientes Multithread

O browser está executando várias tarefas simultâneas, já que os

browsers em geral, são multithreads.

• Tão logo o principal arquivo HTML tenha sido buscado, threads separados são ativados para se encarregar de buscar as outras partes.

• Cada thread estabelece uma conexão com o servidor e traz os dados.

• Porém se a carga desse servidor estiver pesada, ou se ele for lento, nenhuma melhoria real de desempenho será notada.

(20)

Clientes Multithread

• Replicação de Servidores Web: localizados pelo mesmo site e fornece exatamente o mesmo conjunto de documentos.

• Quando entra uma requisição para uma página Web, ela é repassada para um dos servidores: normalmente utiliza-se uma estratégia de balanceamento de carga.

• Ao ser utilizado um cliente multithread, podem ser estabelecidas conexões com diferentes réplicas o que permite dados com

transferência em paralelo.

• Essa abordagem só é possível se o cliente puder manipular fluxos de dados de entradas paralelas. Threads são ideais para essa

Cliente Multithread

Servidores Web Replicados

(21)

Servidores Multithread

Embora clientes multithreads ofereçam benefícios importantes, a principal utilização de multithreading em sistemas distribuídos é encontrada do lado do servidor.

• Servidores de arquivos normalmente esperam pela entrada de uma requisição para uma operação, executam a requisição e então

devolvem a resposta.

Como aumentar o desempenho?

(22)

Servidores Multithread

Funcionamento de servidores multithreads:

• Requisições são enviadas por clientes para uma porta no servidor.

Thread despachante lê requisições que entram para uma operação de arquivo.

Servidor escolhe um thread operário.

• Se o thread escolhido estiver suspenso, outro thread é selecionado para ser executado. Requisição despachada para um thread operário Thread despachante Thread operários

(23)

Servidores Multithread

Característica Importante:

• Se os processos forem inteiramente CPU-bound, não existe necessidade de diversos threads.

• Motivo: Como os processos tem pouca entrada e saída, e muita execução essa implementação traz aumento de complexidade sem

ganho de desempenho, já que poucas janelas de utilização da CPU

(24)

Servidores Multithread

Thread 1 Thread 1 Thread 2 Thread 2 Thread 3

Thread 1 Thread 2 Thread 3 Thread 4

Thread 1 Thread 2 Thread 3 Thread 5

Thread 1

Thread 1 Thread 2 Thread 3 Thread 4

Thread 1 Thread 2 Thread 5

Thread 1 Thread 2 CPU E/S Prontos Tempo

Threads criados por processos I/O Bound

CPU E/S

Prontos

Threads criados por processos CPU Bound

Thread 3

Thread 4

Thread 4

Thread 5

(25)

Virtualização

• Threads e processos podem ser vistos como um modo de fazer diversas tarefas ao mesmo tempo.

• Permitem construir (porções de) programas que parecem ser executados simultaneamente.

• Em computadores monoprocessadores, execução simultânea é uma ilusão: única CPU, somente uma instrução de um único thread ou processo será executada por vez.

Virtualização de recursos: “fingir” que um determinado recurso está

(26)

Virtualização

• Todo sistema distribuído de computadores oferece uma interface de programação usando software de alto nível.

• Estende ou substitui uma interface existente de modo a imitar o comportamento de um outro sistema.

(27)

Virtualização

• Softwares em nível mais alto (middleware) são mais estáveis que o hardware e sistemas de software de baixo nível: mudam mais rápido.

• A virtualização pode ajudar transportando as interfaces de softwares para novas plataformas.

• Novas plataformas são capazes de executar softwares existentes anteriormente.

(28)

Virtualização

• Em geral, sistemas de computadores oferecem 4 tipos diferentes de interfaces em 4 níveis diferentes.

3) Uma interface entre o sistema operacional e bibliotecas que consiste em chamadas de sistema operacional.

4) Uma interface entre as bibliotecas e a aplicação que consiste em chamadas de

1) Uma interface entre o hardware e a aplicação, o qual consiste em instruções de máquina.

2) Uma interface entre o hardware e o sistema

operacional, o qual consiste em instruções de máquina privilegiadas.

(29)

Modos de Virtualização: Máquina Virtual de Processo

• Aplicações desenvolvidas para um SO são executadas em outro SO.

• Possui um conjunto de instruções abstratas que deve ser utilizado para executar aplicações.

• Virtualização feita somente para um único processo.

• Uso de emuladores para imitar chamadas de sistema.

(30)

Modos de Virtualização: Monitor de Máquina Virtual

• Possui uma camada que protege o hardware completamente, mas

que fornece o conjunto de

instruções completo do hardware

• Vários sistemas operacionais diferentes executando

independente e concorrentemente na mesma plataforma.

Referências

Documentos relacionados

Estaca de concreto moldada in loco, executada mediante a introdução no terreno, por rotação, de um trado helicoidal contínuo. A injeção de concreto é feita pela haste

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

O emprego de um estimador robusto em variável que apresente valores discrepantes produz resultados adequados à avaliação e medição da variabilidade espacial de atributos de uma

Este trabalho buscou, através de pesquisa de campo, estudar o efeito de diferentes alternativas de adubações de cobertura, quanto ao tipo de adubo e época de

O objetivo do curso foi oportunizar aos participantes, um contato direto com as plantas nativas do Cerrado para identificação de espécies com potencial

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Essa revista é organizada pela Sociedade Brasileira de Planejamento Energético (SBPE) e por isso foram selecionados trabalhos que tinham como objetivo tratar a

servidores, software, equipamento de rede, etc, clientes da IaaS essencialmente alugam estes recursos como um serviço terceirizado completo...