A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

Apresentações semelhantes


Apresentação em tema: "1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação."— Transcrição da apresentação:

1 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação

2 Thread • Até o final da década de 1970, SOs suportavam apenas processos com um único thread • um processo com apenas um único programa fazendo parte do seu contexto • Em 1979, durante o desenvolvimento do SO Toth, foi introduzido o conceito de processos lightweight (peso leve), onde o espaço de endereçamento de um processo era compartilhado por vários programas. • Este conceito revolucionário só foi utilizado comercialmente em meados de 1980, com o desenvolvimento do sistema operacional Mach na Universidade de Carnegie Mellon, ficou clara a separação entre o conceito de processo e thread.

3 Thread • A partir do conceito de múltiplos threads é possível projetar e implementar aplicações concorrentes de forma eficiente, pois um processo pode ter partes diferentes do seu código sendo executadas em paralelo, com um menor overhead do que utilizando múltiplos processos. • Como os threads de um mesmo processo compartilham o mesmo espaço de endereçamento, a comunicação entre threads não envolve mecanismos lentos de intercomunicação entre processos, aumentando o desempenho da aplicação.

4 Thread • A programação multithread não é simples. A presença do paralelismo introduz um novo conjunto de problemas como a comunicação e sincronização de threads. • O conceito de multithread pode ser encontrado em diversos sistemas operacionais, como no Sun Solaris e Microsoft Windows • A utilização comercial de SOs multithread é crescente em função do aumento da popularidade dos sistemas com múltiplos processadores, do modelo cliente-servidor e dos sistemas distribuídos.

5 AMBIENTE MONOTHREAD • Um programa é uma seqüência de instruções, composta por desvios, repetições e chamadas a procedimentos e funções. • Em um ambiente monothread, um processo suporta apenas um programa no seu espaço de endereçamento. • Neste ambiente, aplicações concorrentes são implementadas apenas com o uso de múltiplos processos independentes ou subprocessos, que permitem dividir uma aplicação em partes que podem trabalhar de forma concorrente, como por exemplo, em um software de gerenciamento de s. • Com o uso de múltiplos processos, cada funcionalidade do software implicaria a criação de um novo processo para atendê- la, aumentando o desempenho da aplicação.

6 Arquitetura de Sistemas Operacionais – Machado/Maia 6 – Thread  Subprocessos e Processos Independentes 6/1

7 AMBIENTE MONOTHREAD • Ao usar múltiplos processos, têm-se um problema de utilizar processos de desenvolvimento de aplicações concorrentes, que demanda consumo de diversos recursos do sistema. • Sempre que um novo processo é criado, o sistema deve alocar recursos para cada processo, consumindo tempo de processador neste trabalho. • No caso do término do processo, o sistema dispensa tempo para desalocar recursos previamente alocados. • Outro problema é que cada processo possui seu próprio espaço de endereçamento, a comunicação entre processos torna-se difícil e lenta, pois utiliza mecanismos como pipes, sinais, semáforos, memória compartilhada ou troca de mensagens. O compartilhamento entre processos concorrentes não é simples.

8 Arquitetura de Sistemas Operacionais – Machado/Maia 6 – Thread  Ambiente Monothread 6/2 • São exemplos de sistemas monothread, o Microsoft MS-DOS, as primeiras versões do MS-Windows, VAX/VMS e Unix.

9 AMBIENTE MULTITHREAD • Em um ambiente multithread, ou seja, com múltiplos threads, não existe a idéia de programas associados a processos, mas, sim, a threads. • O processo, neste ambiente, tem pelo menos um thread de execução, mas pode compartilhar o seu espaço de endereçamento com inúmeros outros threads. • De forma simplificada, um thread pode ser definido como uma sub-rotina de um programa que pode ser executada de forma assíncrona, ou seja, executada paralelamente ao programa chamador. • O programador deve especificar os threads, associando-os às sub-rotinas assíncronas. Um ambiente multithread, possibilita a execução concorrente de sub-rotinas dentro de um mesmo processo.

10 Arquitetura de Sistemas Operacionais – Machado/Maia 6 – Thread  Ambiente Multithread 6/3

11 AMBIENTE MULTITHREAD • Programas não são associados a processos, mas sim, a threads; • Um processo tem pelo menos uma thread em execução, todavia, pode compartilhar seu espaço de endereçamento com inúmeras threads; • Uma thread pode ser definida como uma sub-rotina de um programa que pode ser executada de forma assíncrona, ou seja, executada paralelamente ao programa chamador; · Threads compartilham o processador da mesma forma que processos e passam pelas mesmas mudanças de estado; · Cada thread possui seu próprio contexto de hardware, porém, dentro de um mesmo processo, compartilham seus contextos de software e espaço de endereçamento.

12 6 – Thread  Aplicação Multithread 6/4 • Os 3 threads são executados concorrentemente.

13 AMBIENTE MULTITHREAD · Threads são implementadas através de uma estrutura de dados denominada Thread Control Block ( TCB ); • Como todas as threads de um processo acessam um mesmo espaço de endereçamento, não há qualquer proteção à memória, permitindo que uma thread altere dados de outras. Para que threads trabalhem de forma cooperativa, é fundamental que a aplicação implemente mecanismos de comunicação e sincronização entre threads, a fim de garantir o acesso seguro aos dados compartilhados na memória; • A utilização de threads pode melhorar o desempenho da aplicação executando tarefas em background enquanto operações E/S estão sendo processadas;

14 Arquitetura de Sistemas Operacionais – Machado/Maia 6 – Thread  Aplicação Multithread 6/5

15 AMBIENTE MULTITHREAD • Em ambientes cliente-servidor, threads são essenciais para solicitações de serviços remotos, pois no Monothread uma solicitação de serviço pode esperar indefinidamente, enquanto aguarda o resultado; No multithreads, múltiplos threads permitem que diversos pedidos sejam atendidos simultaneamente. · O próprio núcleo do sistema operacional pode fazer uso do multithreading. Por exemplo, na arquitetura microkernel.

16 6 – Thread  Aplicação Multithread 6/6

17 AMBIENTE MULTITHREAD • O uso de multithreads proporciona uma série de benefícios. • Programas concorrentes com múltiplos threads são mais rápidos do que programas concorrentes implementados com múltiplos processos, pois operações de criação, troca de contexto e eliminação dos threads geram menor overhead. • Como os threads dentro de um processo dividem o mesmo espaço de endereçamento, a comunicação entre eles pode ser realizada de forma rápida e eficiente. • Além disso, threads em um mesmo processo podem compartilhar facilmente outros recursos, como descritores de arquivos, temporizadores, sinais, atributos de segurança, etc.

18 AMBIENTE MULTITHREAD • Latência de Processos e Threads – (Vahalia, 1996)

19 ARQUITETURA E IMPLEMENTAÇÃO • Pacote de threads é o conjunto de rotinas disponíveis para que uma aplicação utilize as facilidades dos threads; · Um pacote de threads pode ser implementado sob diversas abordagens em um SO, o que influi diretamente no desempenho, na concorrência e na modularidade das aplicações multithread; · Threads podem ser oferecidas por uma biblioteca de rotinas fora do núcleo do SO ( modo usuário ), pelo próprio núcleo do sistema ( modo Kernel ), por uma combinação de ambos ( modo híbrido ) ou por um modelo conhecido como Scheduler Activations;

20 ARQUITETURA E IMPLEMENTAÇÃO • Diversas arquiteturas para diferentes ambientes operacionais:

21 ARQUITETURA E IMPLEMENTAÇÃO • Uma das grandes dificuldades para a utilização de threads foi a ausência de um padrão. • Em 1995, o padrão POSIX P1003.1c foi aprovado e posteriormente atualizado para a versão P1003.4a. Com este padrão, também conhecido como Pthreads, aplicações comerciais multithreading tornaram-se mais simples e de fácil implementação. • O padrão Pthreads é largamente utilizado em ambientes Unix, como o Sun Solaris Pthreads e o DECthreads para Digital OSF/1.

22 THREADS EM MODO USUÁRIO ( TMU ) • São implementadas pela aplicação e não pelo sistema operacional; • Deve existir uma biblioteca de rotinas que possibilite à aplicação realizar tarefas como criação/eliminação de threads, troca de mensagens entre threads e uma política de escalonamento. • O sistema operacional não sabe da existência de múltiplas threads, sendo responsabilidade exclusiva da aplicação gerenciar e sincronizar os diversos threads existentes. • A vantagem deste modelo é a possibilidade de implementar aplicações multithreads mesmo em sistemas operacionais que não suportam threads. Utilizando a biblioteca, múltiplos threads podem ser criados, compartilhando o mesmo espaço de endereçamento do processo, além de outros recursos.

23 THREADS EM MODO USUÁRIO ( TMU ) • TMU são rápidos e eficientes por dispensarem acessos ao kernel do sistema operacional, evitando assim a mudança do modo de acesso.

24 THREADS EM MODO USUÁRIO ( TMU ) • TMU possuem uma grande limitação, pois o SO gerencia cada processo como se existisse apenas um único thread. • No momento em que um thread chama uma rotina do sistema que o coloca em estado de espera (rotina bloqueante), todo o processo é colocado no estado de espera, mesmo havendo outros threads prontos para execução. • Um dos maiores problemas na implementação de TMU seja o tratamento individual de sinais. • Como o sistema reconhece apenas processos e não threads, os sinais enviados para um processo devem ser reconhecidos e encaminhados a cada thread para tratamento.

25 THREADS EM MODO USUÁRIO ( TMU ) VANTAGENS: · Permitem a implementação de threads mesmo em sistemas operacionais que não suportam threads; · São rápidos e eficientes por dispensarem o acesso ao kernel do sistema;

26 THREADS EM MODO USUÁRIO ( TMU ) DESVANTAGENS • O SO gerencia o processo como se houvesse uma única thread. • Quando uma thread chama uma rotina do sistema que o coloca em estado de espera, todo o processo é colocado em estado de espera, mesmo havendo outras threads prontas para execução; · Tratamento individual de sinais. Como o SO reconhece apenas processos e não threads, os sinais enviados para um processo devem ser reconhecidos e encaminhados a cada thread para tratamento; · Redução do grau de paralelismo. Não é possível que múltiplos threads possam ser executados em diferentes UCP’s simultaneamente. O sistema seleciona apenas processos para execução e threads de um processo podem ser executadas somente em um processador de cada vez.

27 THREADS EM MODO KERNEL ( TMK ) · São implementadas diretamente pelo núcleo do sistema operacional; VANTAGENS: · O sistema operacional sabe da existência de cada thread e pode escaloná-las individualmente; · Caso haja múltiplos processadores, threads de um mesmo processo podem ser executadas simultaneamente;

28 THREADS EM MODO KERNEL ( TMK ) DESVANTAGENS: · Baixo desempenho. Enquanto nos pacotes em modo usuário todo o tratamento é feito sem a ajuda no SO, no modo kernel são utilizadas chamadas a rotinas do sistema e, conseqüentemente, há várias mudanças no modo de acesso;

29 Arquitetura de Sistemas Operacionais – Machado/Maia 6 – Thread  THREADS EM MODO HÍBRIDO 6/7 • Combina vantagens de threads implementadas em modo usuário ( TMU ) e threads em modo Kernel ( TMK ); • Um processo pode ter vários TMK e, por sua vez, um TMK pode ter vários TMU; • Um TMU pode ser executado em um TMK e, em um instante seguinte, ser executado em outro; VANTAGENS · Maior flexibilidade

30 Arquitetura de Sistemas Operacionais – Machado/Maia 6 – Thread  THREADS EM MODO HÍBRIDO 6/7 DESVANTAGENS: · Apresenta problemas herdados de ambas implementações. Por exemplo, uma chamada de bloqueio de uma TMK bloqueia todos os TMU, que são colocados em espera; · TMU’s que precisam utilizar diferentes processadores precisam utilizar diferentes TMK, o que reduz o desempenho.

31 Arquitetura de Sistemas Operacionais – Machado/Maia 6 – Thread  SCHEDULER ACTIVATIONS 6/7 • Os problemas apresentados no pacote de threads em modo híbrido existem devido à falta de comunicação entre os threads em modo usuário e modo kernel; · Usa o melhor do modo usuário e do modo kernel, através de uma estrutura de dados chamada scheduler activations; · Alcança um melhor desempenho evitando mudanças de modos de acesso que não sejam necessárias; · Caso uma thread utilize uma chamada ao sistema que o coloque no estado de espera, não é necessário que o kernel seja ativado, basta que a própria biblioteca escalone outra thread; · Bibliotecas em modo usuário e kernel se comunicam, trabalhando de forma cooperativa;

32 Arquitetura de Sistemas Operacionais – Machado/Maia  MODELOS DE PROGRAMAÇÃO 6/7 • O desenvolvimento de aplicações multithread não é simples, pois exige que a comunicação e o compartilhamento de recursos entre as diversas threads sejam feitos de forma sincronizada para evitar inconsistências e deadlock; · O número máximo de threads é um fator importante. Caso um número muito grande seja criado, poderá haver um overhead no sistema, ocasionando uma queda de desempenho; · O número de threads pode ser dinâmico ou estático; · Para permitir a implementação de threads, uma aplicação deve permitir que partes diferentes do seu código sejam executadas em paralelo, de forma independente. · Exemplos de aplicações de multithreading: o SGBDs o Servidores de arquivos ou impressão

33  Threads em Modo Híbrido e Scheduler Activations 6/8


Carregar ppt "1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação."

Apresentações semelhantes


Anúncios Google