Академический Документы
Профессиональный Документы
Культура Документы
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007
Capítulo 4: Threads
Visão geral
Modelos de multithreading
Questões de threading
Pthreads
Threads do Windows XP
Threads do Linux
Threads Java
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.2 Silberschatz, Galvin e Gagne ©2007
Processos de único e múltiplos threads
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.3 Silberschatz, Galvin e Gagne ©2007
Benefícios
Responsividade
Compartilhamento de recursos
Economia
Utilização de arquiteturas de MP
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.4 Silberschatz, Galvin e Gagne ©2007
Threads de usuário e kernel
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.5 Silberschatz, Galvin e Gagne ©2007
Threads de kernel
Exemplos
Windows XP/2000
Solaris
Linux
Tru64 UNIX
Mac OS X
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.6 Silberschatz, Galvin e Gagne ©2007
Modelos de multithreading
Muitos-para-um
Um-para-um
Muitos-para-muitos
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.7 Silberschatz, Galvin e Gagne ©2007
Muitos-para-um
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.8 Silberschatz, Galvin e Gagne ©2007
Modelo muitos-para-um
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.9 Silberschatz, Galvin e Gagne ©2007
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
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.10 Silberschatz, Galvin e Gagne ©2007
Modelo um-para-um
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.11 Silberschatz, Galvin e Gagne ©2007
Modelo muitos-para-muitos
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.12 Silberschatz, Galvin e Gagne ©2007
Modelo muitos-para-muitos
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.13 Silberschatz, Galvin e Gagne ©2007
Modelo de nível dois
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.14 Silberschatz, Galvin e Gagne ©2007
Modelo de nível dois
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.15 Silberschatz, Galvin e Gagne ©2007
Threads Java
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.16 Silberschatz, Galvin e Gagne ©2007
Threads Java - Programa de exemplo
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.17 Silberschatz, Galvin e Gagne ©2007
Threads Java - Programa de exemplo
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.18 Silberschatz, Galvin e Gagne ©2007
Estados de threads Java
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.19 Silberschatz, Galvin e Gagne ©2007
Threads Java – Produtor-Consumidor
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.20 Silberschatz, Galvin e Gagne ©2007
Threads Java - Produtor-Consumidor
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.21 Silberschatz, Galvin e Gagne ©2007
Threads Java - Produtor-Consumidor
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.22 Silberschatz, Galvin e Gagne ©2007
Questões de threading
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.23 Silberschatz, Galvin e Gagne ©2007
Semântica de fork() e exec()
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.24 Silberschatz, Galvin e Gagne ©2007
Cancelamento de thread
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.25 Silberschatz, Galvin e Gagne ©2007
Cancelamento de thread
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.26 Silberschatz, Galvin e Gagne ©2007
Cancelamento de thread
Cancelamento adiado em Java
Verificando status da interrupção
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.27 Silberschatz, Galvin e Gagne ©2007
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
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.28 Silberschatz, Galvin e Gagne ©2007
Pools de threads
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.29 Silberschatz, Galvin e Gagne ©2007
Pools de threads
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.30 Silberschatz, Galvin e Gagne ©2007
Pools de threads
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.31 Silberschatz, Galvin e Gagne ©2007
Pools de threads
Criando um pool de threads em Java
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.32 Silberschatz, Galvin e Gagne ©2007
Dados específicos do thread
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.33 Silberschatz, Galvin e Gagne ©2007
Dados específicos do thread
Dados específicos do thread em Java
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.34 Silberschatz, Galvin e Gagne ©2007
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
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.35 Silberschatz, Galvin e Gagne ©2007
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)
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.36 Silberschatz, Galvin e Gagne ©2007
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
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.37 Silberschatz, Galvin e Gagne ©2007
Threads do Windows XP
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.38 Silberschatz, Galvin e Gagne ©2007
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)
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 4.39 Silberschatz, Galvin e Gagne ©2007
Final do Capítulo 4
Conceitos de sistema operacional com Java – 7a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007