conceitos de sistema operacional com java – 7 a edição, 15/11/2006 silberschatz, galvin e gagne...

40
eitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

Upload: internet

Post on 22-Apr-2015

171 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007

Capítulo 4: Threads

Page 2: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.2 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Capítulo 4: Threads

Visão geral Modelos de multithreading Questões de threading Pthreads Threads do Windows XP Threads do Linux Threads Java

Page 3: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.3 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Processos de único e múltiplos threads

Page 4: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.4 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Benefícios

Responsividade

Compartilhamento de recursos

Economia

Utilização de arquiteturas de MP

Page 5: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.5 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Threads de usuário e kernel

Threads do usuário – Gerenciamento de thread feito pela biblioteca de threads em nível de usuário.

Threads do kernel - Threads admitidos diretamente pelo kernel.

Page 6: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.6 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Threads de kernel

Exemplos Windows XP/2000 Solaris Linux Tru64 UNIX Mac OS X

Page 7: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.7 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Modelos de multithreading

Mapeamento entre threads do usuário e threads do kernel:

Muitos-para-um

Um-para-um

Muitos-para-muitos

Page 8: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.8 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Muitos-para-um

Muitos threads em nível de usuário mapeados para único thread do kernel

Exemplos: Solaris Green Threads GNU Portable Threads

Page 9: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.9 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Modelo muitos-para-um

Page 10: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.10 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Um-para-um

Cada thread em nível de usuário é mapeado para thread do kernel

Exemplos Windows NT/XP/2000 Linux Solaris 9 em diante

Page 11: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.11 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Modelo um-para-um

Page 12: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.12 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Modelo muitos-para-muitos

Permite que muitos threads em nível de usuário sejam mapeados para muitos threads do kernel

Permite que o sistema operacional crie um número suficiente de threads do kernel

Solaris antes da versão 9 Windows NT/2000 com o pacote ThreadFiber

Page 13: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.13 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Modelo muitos-para-muitos

Page 14: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.14 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Modelo de nível dois

Semelhante a M:M, exceto por permitir que um thread do usuário sejam ligado ao thread do kernel

Exemplos IRIX HP-UX Tru64 UNIX Solaris 8 e mais antigos

Page 15: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.15 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Modelo de nível dois

Page 16: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.16 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Threads Java

Threads Java são gerenciados pela JVM

Threads Java podem ser criados por: Implementando a interface Runnable

Page 17: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.17 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Threads Java - Programa de exemplo

Page 18: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.18 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Threads Java - Programa de exemplo

Page 19: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.19 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Estados de threads Java

Page 20: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.20 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Threads Java – Produtor-Consumidor

Page 21: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.21 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Threads Java - Produtor-Consumidor

Page 22: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.22 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Threads Java - Produtor-Consumidor

Page 23: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.23 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Questões de threading

Semântica das chamadas do sistema fork() e exec()

Cancelamento de thread Tratamento de sinal Pools de thread Dados específicos do thread Ativações do escalonador

Page 24: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.24 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Semântica de fork() e exec()

fork() duplica apenas o thread que chama ou todos os threads?

Page 25: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.25 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Cancelamento de thread

Terminando um thread antes que ele tenha terminado

Duas técnicas gerais: Cancelamento assíncrono termina o

thread de destino imediatamente Cancelamento adiado permite que o

thread de destino verifique periodicamente se ele deve ser cancelado

Page 26: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.26 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Cancelamento de thread

Cancelamento adiado em JavaInterrompendo um thread

Page 27: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.27 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Cancelamento de thread

Cancelamento adiado em JavaVerificando status da interrupção

Page 28: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.28 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Tratamento de sinal

Sinais são usados em sistemas UNIX para notificar um processo de que ocorreu um evento em particular

Um manipulador de sinal é usado para processar sinais Um manipulador de sinal é usado para processar sinais

1. Sinal é gerado por evento em particular

2. Sinal é entregue a um processo

3. Sinal é tratado Opções:

Entregar o sinal ao thread ao qual o sinal se aplica Entregar o sinal a cada thread no processo Entregar o sinal a certos threads no processo Atribuir uma área específica para receber todos os

sinais para o processo

Page 29: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.29 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Pools de threads

Criam uma série de threads em um pool onde esperam trabalho

Vantagens: Em geral, ligeiramente mais rápido para

atender ma solicitação com um thread existente do que criar um novo thread

Permite que uma série de threads nas aplicações seja vinculada ao tamanho do pool

Page 30: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.30 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Pools de threads

Java oferece 3 arquiteturas de pool de threads:

1. Executor de único thread - pool de tamanho 1.

2. Executor de thread fixo - pool de tamanho fixo.

3. Pool de threads em cache - pool de tamanho ilimitado

Page 31: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.31 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Pools de threads

Uma tarefa a ser atendida em um pool de threads

Page 32: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.32 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Pools de threads

Criando um pool de threads em Java

Page 33: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.33 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Dados específicos do thread

Permite que cada thread tenha sua própria cópia dos dados

Útil quando você não tem controle sobre o processo de criação de thread (ou seja, ao usar um pool de threads)

Page 34: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.34 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Dados específicos do thread

Dados específicos do thread em Java

Page 35: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.35 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Ativações do escalonador

Os modelos M:M e de dois níveis exigem comunicação para manter o número apropriado de threads de kernel alocados à aplicação

Ativações do escalonador oferece upcalls – um mecanismo de comunicação do kernel para a biblioteca de threads

Essa comunicação permite que uma aplicação mantenha o número correto de threads do kernel

Page 36: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.36 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Pthreads

Uma API padrão POSIX (IEEE 1003.1c) para criação e sincronismo de thread

A API especifica o comportamento da biblioteca de threads, a implementação fica para o desenvolvimento da biblioteca

Comum em sistemas operacionais UNIX (Solaris, Linux, Mac OS X)

Page 37: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.37 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Threads do Windows XP

Implementa o mapeamento um-para-um Cada thread contém

Uma id de thread Conjunto de registradores Pilhas de usuário e kernel separadas Área privativa de armazenamento de

dados O conjunto de registradores, pilhas e área de

armazenamento privativa são conhecidos como o contexto dos threads

Page 38: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.38 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Threads do Windows XP

Page 39: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

4.39 Silberschatz, Galvin e Gagne ©2007Conceitos de sistema operacional com Java – 7a edição, 15/11/2006

Threads do Linux

Linux se refere a eles como tarefas ao invés de threads

A criação de thread é feita por meio da chamada do sistema clone()

clone() permite que uma tarefa filha compartilhe o espaço de endereços da tarefa pai (processo)

Page 40: Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 4: Threads

Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007

Final do Capítulo 4