1 / 26

Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

Conceitos de thread. Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com. Introdução (Threads). Partes de um processo que compartilham mesmo espaço de endereçamento;

slade
Download Presentation

Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Conceitos de thread Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com

  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. 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. Definição de thread

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

  5. Vantagens/Desvantagens de threads • Vantagens: • 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. 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. Motivação na criação de threads

  15. 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. Motivação na criação de threads

  16. Estados de 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. Estados de thread: ciclo de vida de um thread

  17. Estados de thread: ciclo de vida de um thread Figura 4.2Ciclo 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. 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. Operações de thread

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

  20. 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. Threads de usuário

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

  22. 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. Threads de núcleo

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

  24. 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. Combinação de threads de usuário e de núcleo • 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.5Modelo 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. Término de threads

More Related