130 likes | 304 Views
Sistemas Distribuídos. Processos. Processos. S istemas Distribuídos. Introdução Processo, em sistemas operacionais é definido como um programa em execução. O Gerenciamento e o escalonamento são as questões mais importantes a discutir.
E N D
Sistemas Distribuídos Processos
Processos Sistemas Distribuídos Introdução • Processo, em sistemas operacionais é definido como um programa em execução. • O Gerenciamento e o escalonamento são as questões mais importantes a discutir. • Outro ponto é a virtualização, que ganhou popularidade. Ela permite que uma aplicação, incluindo seu ambiente completo e o SO execute concorrentemente com outras aplicações, mas com alto grau de independência em relação ao hardware.
Processos Sistemas Distribuídos Threads • Os processos formam um bloco de construção nos SD. • Múltiplos processos proporcionado pelo SO não são suficientes. • Ter múltiplos threads de controle por processo facilita a construção de aplicações Distribuídas e a obtenção de melhor desempenho. Introdução aos Threads Como processos e threads se relacionam? • Para executar um programa o SO cria vários processadores virtuais, cada um para executar um programa diferente; • Para gerenciar, o SO possui uma tabela de processos que contem entradas para armazenar valores de registradores de CPU, mapas de memória, arquivos abertos, informações, privilégios;
Processos Sistemas Distribuídos Introdução aos Threads (continuação ) • Um processo costuma ser definido como um programa em execução num dos processadores virtuais. • O SO deve tomar grande cuidado para assegurar que os processos não interfiram em um outro. • Vários processos podem compartilhar concorrentemente a mesma CPU e outros recursos de hardware, de forma transparente; • Esta transparência de concorrência tem preço relativamente alto; • Chavear a CPU entre dois processos pode ser é caro; • Se o SO suportar mais processos que a memória pode conter, ele pode efetuar troca dinâmica entre a memória e o disco;
Processos Sistemas Distribuídos Introdução aos Threads (continuação ) • Como no processo, um thread executa sua própria porção de código, independentemente de outros threads. • Nenhuma tentativa é feita para se obter um alto grau de transparência de concorrência se isto degradar o desempenho; • Um sistema de threads mantém a mínima informação que permita a CPU ser compartilhada por várias threads; • Informações que não são necessárias para gerenciar múltiplos threads são ignorados; • Proteger contra acessos inadequados ficam a cargo do desenvolvedor;
Processos Sistemas Distribuídos Utilização de threads em sistemas não distribuídos Benefícios por processos Multithread: • Em um processo mono thread, sempre que for executado uma chamada bloqueadora de sistema, o processo é bloqueado como um todo (indesejável). Exemplo: Uma aplicação - programa de planilha • Quando o usuário muda uma célula, dispara uma série de cálculos. • Se houver só um thread de controle, o cálculo não pode prosseguir, enquanto o programa estiver esperando uma entrada. • Também, não é possível fornecer uma entrada se o programa estiver calculando. • A solução seria dois threads de controle: um para manipular a entrada e outro para atualizar a planilha. • Poderia ter um terceiro thread para disparar o salvamento automático.
Processos Sistemas Distribuídos Benefícios por processos Multithread (continuação): • É possível explorar o paralelismo ao executar o programa em um sistema multiprocessador. • Quando usado corretamente, o paralelismo pode ser transparente; • Este paralelismo tem se tornado cada vez mais importante com as CPU´s de múltiplos núcleos. • O Multitreading é útil em grandes aplicações. Temos um conjunto de programas cooperativos, cada um com processo em separado. • Como exemplo temos os sistemas UNIX, LINUX • A comunicação entre programas se da por meios da comunicação entre processos - IPC ( Interprocess Communication ).
Processos Sistemas Distribuídos • A desvantagem do IPC é que a comunicação requer extensivo chaveamento de contexto . • Pode-se construir aplicações tal que as diferentes partes sejam executadas por threads separadas. A comunicação é feita com a utilização de dados compartilhados. • Muitas aplicações são simplesmente mais fáceis de estruturar como um conjunto de threads cooperativos.
Processos Sistemas Distribuídos Implementação de Thread • Threads são fornecidos como pacotes de de threads. Eles contem operações para criar e terminar threads, e outras funções. • Temos duas abordagens • Uma biblioteca executada em modo usuário; • O Núcleo fica ciente dos threads e os escalona; • A primeira tem várias vantagens: • Criar e terminar threads são baratos; • Chaveamento do contexto é feito com poucas instruções
Processos Sistemas Distribuídos Implementação de Thread ( continuação ) • Tem como desvantagem o seguinte: ao invocar uma chamada bloqueadora de sistema, bloqueará todo o processo e todas as threads deste processo; • Este problema é contornado pela segunda abordagem. • Só que a implementação de threads no núcleo tem um preço alto. O Beneficio da utilização de threads acaba desaparecendo. • Uma solução é uma forma híbrida de threads de nível de usuário e nível de núcleo, chamada processos leves (Lghtweight Process - LWP).
Processos Sistemas Distribuídos Implementação de Thread ( continuação ) • Um LWP executa no contexto de um único processo (pesado); • Pode haver vários LWP´s por processo; • Além de ter LWP´s, um sistema fornece um pacote de thread´s de nível de usuário, o qual oferece as aplicações as operações usuais de criação e encerramento de threads. • A questão importante é que o pacote de thread´s é implementado inteiramente em espaço de usuário;
Processos Sistemas Distribuídos Implementação de Thread ( continuação ) • Vantagens em utilizar LWP´s em combinação com threads de nível de usuário 1 - Criar, destruir e sincronizar threads é relativamente barato e não envolve intervenção do núcleo; 2 - Se tiver LWP´s suficientes, uma chamada bloqueadora não suspenderá o processo inteiro; 3 - Não há necessidade de que a aplicação ter conhecimento de LWP´s. Tudo que a aplicação vê são as threads de nível de usuário; 4 - Pode ser usado com facilidade em ambientes de multiprocessamento pela execução de diferentes LWP´s em diferentes CPU´s. Este multiprocessamento pode ser inteiramente oculta a aplicação
Processos Sistemas Distribuídos Implementação de Thread ( continuação ) • A Desvantagen em utilizar LWP´s é que criar e destruir LWP´s é extremamente caro, mas isto é feito só ocasionalmente; • Uma abordagem alternativa mas similar a LWP´s é utilizar ativações de escalonador. • A diferença para os LWP´s é que quando um therad bloqueia em uma chamada de sistema o núcleo faz uma upcall para o pacote de thread´s. Isto poupa gerenciamento de LWP, mas é considerada menos elegante por violar a estrutura de sistemas em camadas.