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

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

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: "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 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 2000. 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 6 – Thread Subprocessos e Processos Independentes
Arquitetura de Sistemas Operacionais – Machado/Maia 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 6 – Thread Ambiente Monothread
Arquitetura de Sistemas Operacionais – Machado/Maia São exemplos de sistemas monothread, o Microsoft MS-DOS, as primeiras versões do MS-Windows, VAX/VMS e Unix. 6/2

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 6 – Thread Ambiente Multithread
Arquitetura de Sistemas Operacionais – Machado/Maia 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
Os 3 threads são executados concorrentemente. 6/4

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 6 – Thread Aplicação Multithread
Arquitetura de Sistemas Operacionais – Machado/Maia 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 6 – Thread THREADS EM MODO HÍBRIDO
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 Arquitetura de Sistemas Operacionais – Machado/Maia 6/7

30 6 – Thread THREADS EM MODO HÍBRIDO
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. Arquitetura de Sistemas Operacionais – Machado/Maia 6/7

31 6 – Thread SCHEDULER ACTIVATIONS
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; Arquitetura de Sistemas Operacionais – Machado/Maia 6/7

32 MODELOS DE PROGRAMAÇÃO
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 Arquitetura de Sistemas Operacionais – Machado/Maia 6/7

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


Carregar ppt "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