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

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

Conceitos de thread Faculdade PITÁGORAS – Outubro de 2012

Apresentações semelhantes


Apresentação em tema: "Conceitos de thread Faculdade PITÁGORAS – Outubro de 2012"— Transcrição da apresentação:

1 Conceitos de thread Faculdade PITÁGORAS – Outubro de 2012
Prof. Robert Gans

2 Introdução (Threads) Partes de um processo que compartilham mesmo espaço de endereçamento; Sub-rotina de um programa executado paralelamente ao programa chamador (execução concorrente de sub-rotinas); Mais uma definição: Enquanto processos permitem que o sistema operacional execute mais de uma aplicação ao mesmo tempo, as threads permitem que a aplicação execute mais de um método ao mesmo tempo.

3 Definição de thread Thread
É às vezes chamado de processo leve (LWP - light-weight process). Existem threads de instrução ou threads de controle. Os threads compartilham espaço de endereço e outras informações globais com seu próprio processo. Registradores, pilha, máscaras de sinal e outros dados específicos de thread são nativos a cada thread. Os threads devem ser gerenciados pelo sistema operacional ou pela aplicação de usuário. Exemplos: threads Win32, C-threads, threads em java, etc.

4 Definição de thread Figura 4.1 Relação entre thread e processo.

5 Vantagens/Desvantagens de threads
Desempenho: não existe necessidade de comunicação entre processos; utilização de multiprocessadores para um mesmo processo; um programa pode continuar sendo executado mesmo se parte dele estiver bloqueada (um navegador pode permitir a interação do usuário em um thread enquanto uma imagem é carregada em outro thread); Desvantagem: o desenvolvimento de aplicações não é simples;

6 Threads Mais exemplos: Navegador Web: um thread para exibir imagens
um thread para recuperar dados da rede Processador de texto: um thread para seqüência de teclas um thread para verificação ortográfica e gramatical Para obter benefícios do uso de threads, aplicação deve permitir que partes do seu código sejam executadas em paralelo de forma independente;

7 Threads Por que não dividir em vários outros processos?
A criação de um processo e a mudança de contexto consome muito mais recurso do que a criação de uma thread; Como cada processo possui espaço de endereçamento próprio, a comunicação entre processos é difícil e lenta; Exemplos de sistemas monothreads: MS-DOS e primeiras versões do Windows;

8 Ambiente Multithreads
Cada processo possui pelo menos um thread; Exemplo: programa com duas sub-rotinas independentes

9 Ambiente Multithreads
Processo fica responsável pela alocação de recursos, mas a unidade escalonada é a thread; TCB: armazena contexto de hardware e informações sobre a thread (prioridade, estado...) O TCB está para a thread assim como o PCB está para o processo!

10 Ambiente Multithreads
Threads de um mesmo processo compartilham contexto de software e espaço de endereçamento, mas não compartilham contexto de hardware; Estrutura do processo Processo MULTITHREAD

11 Ambiente Multithreads

12 Ambiente Multithreads
Threads são extremamente utilizadas em ambientes cliente/servidor. Ex: SGBD; Um único processo no servidor gera uma thread para cada solicitação de cliente;

13 Ambiente Multithreads

14 Motivação na criação de threads
Os threads tornaram-se proeminentes por causa de tendências subseqüentes em relação: Ao projeto de software Maior simplicidade para exprimir tarefas inerentemente paralelas. Ao desempenho Maior escalonamento para sistemas com múltiplos processadores. À cooperação O custo operacional do espaço de endereço compartilhado é menor que o da IPC.

15 Motivação na criação de threads
Todo thread transita entre uma série de estados de thread distintos. Os threads e os processos têm muitas operações em comum (por exemplo, criar, sair, retomar e suspender). A criação de thread não requer que o sistema operacional inicialize recursos compartilhados entre os processos-pai e os respectivos threads. Isso reduz o esforço de criação e término de threads, em comparação à criação e ao término de processo.

16 Estados de thread: ciclo de vida de um thread
Estado nascido Estado pronto (estado executável) Estado em execução Estado morto Estado bloqueado Estado de espera Estado adormecido O período de sono especifica por quanto tempo um thread ficará adormecido.

17 Estados de thread: ciclo de vida de um thread
Figura 4.2 Ciclo de vida do thread. Em sistemas operacionais, preemptividade ou preempção é a capacidade de alterar a ordem de (ou tirar de execução) um processo em detrimento de outro com uma prioridade maior.

18 Operações de thread As operações de thread não correspondem precisamente às operações de processo. Cancelar Indica que um thread deve ser terminado, mas não garante que o thread será terminado. Os threads podem mascarar o sinal de cancelamento. Associar Para que um thread primário aguarde até que todos os outros threads terminem, ele se associa a esses threads. O thread que se associa é bloqueado até que o thread ao qual ele se associou termine.

19 Modelos de thread Três são os modelos de thread mais conhecidos:
Threads de usuário Threads de núcleo Uma combinação de ambos

20 Implementação de thread de usuário
Threads de usuário Os threads de usuário executam operações de suporte a threads no espaço do usuário. Isso significa que os threads são criados por bibliotecas em tempo de execução que não podem executar instruções privilegiadas nem acessar as primitivas do núcleo diretamente. Implementação de thread de usuário Mapeamentos de thread muitos-para-um O sistema operacional mapeia todos os threads de um processo multithread para um único contexto de execução. Vantagens As bibliotecas de usuário podem escalonar seus threads para otimizar o desempenho. A sincronização é realizada fora do núcleo, e isso evita chaveamento de contexto. É mais portável. Desvantagens O núcleo considera o processo multithread como um único thread de controle. Isso pode fazer com que o desempenho fique abaixo do ideal se um thread requisitar uma operação E/S. Não pode ser escalonado para executar em múltiplos processadores ao mesmo tempo.empo.

21 Threads de usuário Figura 4.3 Threads de usuário.

22 Threads de núcleo Os threads de núcleo tentam resolver as limitações dos threads de usuário mapeando cada thread para o seu próprio contexto de execução. O thread de núcleo oferece mapeamento de thread um-para-um. Vantagens: maior escalabilidade, interatividade e rendimento. Desvantagens: sobrecarga decorrente do chaveamento de contexto e menor portabilidade em virtude de as APIs serem específicas ao sistema operacional. Os threads de núcleo nem sempre são a solução ideal para as aplicações.

23 Threads de núcleo Figura 4.4 Threads de núcleo.

24 Combinação de threads de usuário e de núcleo
Implementação da combinação de threads de usuário (TMU) e de núcleo (TMK) Mapeamento de threads muitos-para-muitos (mapeamento de threads m-to-n) Em comparação com os mapeamentos de threads um-para-um, esse mapeamento consegue reduzir a sobrecarga implementando o reservatório de threads. Um processo pode ter vários TMKs, e por sua vez, um TMK pode ter vários TMUs. O núcleo do SO reconhece os TMKs e pode escalona-los individualmente. Um TMU pode ser executado em um TMK,em um determinado momento, e no instante seguinte ser executado em outro.

25 Combinação de threads de usuário e de núcleo
Figura 4.5 Modelo de operação de thread híbrido.

26 Término de threads (cancelamento)
É diferente de implementação de threads. Se for terminado prematuramente, o thread pode provocar erros sutis nos processos, porque vários threads compartilham o mesmo espaço de endereço. Determinadas implementações de thread permitem que um thread determine quando ele pode ser terminado, a fim de evitar que o processo entre em um estado inconsistente.


Carregar ppt "Conceitos de thread Faculdade PITÁGORAS – Outubro de 2012"

Apresentações semelhantes


Anúncios Google