8 th Edition Um para um

Propaganda
Chapter 4: Threads
Operating System Concepts – 8th Edition
Silberschatz, Galvin and Gagne ©2009
Motivação
 Threads são processos leves

Diferentes tarefas da aplicação podem ser implementadas como
threads separados
 Aplicável
–
apenas às tarefas que possam ser paralelizadas
Exemplos:
»
Atualizar o display
»
Buscar dados
»
Verificar correção ortográfica
Operating System Concepts – 8th Edition
4.2
Silberschatz, Galvin and Gagne ©2009
Motivação
 A criação de processos é muito custosa

Criação de threads é mais simples
 Vantagens do uso de threads

Simplificação do código

Aumento da eficiência
Operating System Concepts – 8th Edition
4.3
Silberschatz, Galvin and Gagne ©2009
Processos mono e multithreads
Operating System Concepts – 8th Edition
4.4
Silberschatz, Galvin and Gagne ©2009
Benefícios
Melhora o tempo de resposta
• Programa continua executando mesmo
que algum thread seja bloqueado (thread no
espaço de kernel)
Compartilhamento por padrão dos
recursos do processo
• Não precisa de técnicas para criar uma
memória compartilhada
É mais simples criar um thread do
que um processo
• Não precisa alocar novos recursos e é fácil
trocar contexto entre threads
Aumenta o paralelismo
• Em máquinas com multiprocessamento
Operating System Concepts – 8th Edition
4.5
Silberschatz, Galvin and Gagne ©2009
Programação com múltiplos cores
 Sistemas com múltiplos cores impulsionam novas formas de
programar

Maior eficiência na execução de programas
 Contudo, existem algumas dificuldades
É possível paralelizar?
As tarefas paralelizáveis tem a
mesma importância?
Quais conjuntos de dados pertencem
a cada thread?
Se duas threads usam dados
dependentes, como sincronizar o
acesso?
Operating System Concepts – 8th
Como depurar o processo, se existem
múltiplos caminhos
de execução? Silberschatz, Galvin and Gagne ©2009
4.6
Edition
Arquitetura de Servidor Multithreaded
Operating System Concepts – 8th Edition
4.7
Silberschatz, Galvin and Gagne ©2009
Execução concorrente em um sistema
com único core
Operating System Concepts – 8th Edition
4.8
Silberschatz, Galvin and Gagne ©2009
Execução paralela em um sistema multicore
Operating System Concepts – 8th Edition
4.9
Silberschatz, Galvin and Gagne ©2009
Threads de usuários
 Gerenciamento de threads feito por bibliotecas em nível de usuário
•Não depende de chamadas ao
sistema para criar o thread ou para
mudar o contexto entre threads
•O bloqueio de um thread leva ao
bloqueio de todo o processo
•A troca de contextos entre threads é
feita mediante cooperação
Operating System Concepts – 8th Edition
4.10
Silberschatz, Galvin and Gagne ©2009
Threads de kernel
 Gerenciamento de threads feito pelo kernel
•Depende de chamadas ao sistema
para criar o thread ou para mudar o
contexto
•O bloqueio de um thread não leva ao
bloqueio de todo o processo
•A troca de contextos entre threads é
feita mediante cooperação e
preempção
Operating System Concepts – 8th Edition
4.11
Silberschatz, Galvin and Gagne ©2009
Modelos multithreads
 Muitos para um
 Um para um
 Muitos para muitos
Operating System Concepts – 8th Edition
4.12
Silberschatz, Galvin and Gagne ©2009
Muitos para um
 Diversos threads de usuário mapeados em um único thread de kernel
Operating System Concepts – 8th Edition
4.13
Silberschatz, Galvin and Gagne ©2009
Um para um
 Cada thread de usuário mapeado em um thread de kernel
Operating System Concepts – 8th Edition
4.14
Silberschatz, Galvin and Gagne ©2009
Modelo muitos para muitos
 Permite que muitos threads de usuário sejam mapeados em muitos
threads de kernel
 Sistema operacional pode criar um número suficiente de threads de
kernel
Operating System Concepts – 8th Edition
4.15
Silberschatz, Galvin and Gagne ©2009
Bibliotecas de threads
 Bibliotecas de thread dão ao programador uma interface para
criar e gerenciar threads
 Duas formas iniciais de implementação

Biblioteca inteiramente em espaço de usuário

Biblioteca em nível de kernel suportada pelo sistema
operacional
Operating System Concepts – 8th Edition
4.16
Silberschatz, Galvin and Gagne ©2009
Pthreads
 Biblioteca de threads que pode ser provida tanto em nível de
kernel como em nível de usuário
 Interface especificada pelo padrão POSIX (IEEE 1003.1c) para
criação e sincronização de threads

Define apenas a interface. A implementação fica a cargo da
biblioteca
 Amplamente utilizada em sistemas operacionais UNIX (Solaris,
Linux, Mac OS X)
Operating System Concepts – 8th Edition
4.17
Silberschatz, Galvin and Gagne ©2009
Algumas questões de threads….
 O fork() duplica apenas o thread que o chama ou todos os threads do
processo?
 Depende da implementação
 Cancelamento de threads
 Terminar um thread, chamado de thread alvo, antes que ele chegue
ao fim
 Ex: Vários threads de busca em paralelo. Quando um thread
encontra o dado, os outros podem ser finalizados.
Operating System Concepts – 8th Edition
4.18
Silberschatz, Galvin and Gagne ©2009
Algumas questões de threads….
 Tipos
 Cancelamento assíncrono – Thread alvo encerrado
imediatamente
 Cancelamento adiado – Thread alvo espera até um momento
oportuno para ser finalizado
 Possibilidade de liberar todos os recursos adequadamente
 Sistema operacional libera apenas os recursos do
sistema automaticamente
 Thread é terminada apenas após liberar os demais
recursos alocados
 Ponto do programa especificado por uma flag
Operating System Concepts – 8th Edition
4.19
Silberschatz, Galvin and Gagne ©2009
Algumas questões de threads….
 Tratamento de sinais

Sinais são usados no sistema UNIX para notificar um processo
que um evento ocorreu

Sinais devem ser entregues a processos

Mas se existem vários threads, para qual enviar?

Opções
–
Descobrir para qual thread o sinal é direcionado
–
Enviar o sinal para todos os threads
–
Enviar o sinal para um conjunto de threads
–
Criar um thread específico para receber sinais e notificar
aos outros threads
Operating System Concepts – 8th Edition
4.20
Silberschatz, Galvin and Gagne ©2009
Algumas questões de threads….
 Conjuntos de threads

Pré-criação de um conjunto de threads prontos para serem
usados

Vantagens
 Mais
rápido usar um thread pronto do que criar um novo
thread
 Garante
que a aplicação não tentará criar threads em
demasia, exaurindo os recursos do sistema operacional
Operating System Concepts – 8th Edition
4.21
Silberschatz, Galvin and Gagne ©2009
Threads
 Exemplos

Ex_sem_thread.py

Ex_sem_thread_processo.py

Ex_thread.py

Ex_threadv2.py

Ex_thread_mais_legal.py

Ex_thread_mais_legal_completo.py

Ex_legal_final.py
Operating System Concepts – 8th Edition
4.22
Silberschatz, Galvin and Gagne ©2009
Exercícios
 Lista 2 já disponível!
Operating System Concepts – 8th Edition
4.23
Silberschatz, Galvin and Gagne ©2009
End of Chapter 4
Operating System Concepts – 8th Edition
Silberschatz, Galvin and Gagne ©2009
Download