Introduzir a noção de thread, uma unidade fundamental de utilização de CPU e que representa a base da maioria dos sistemas computacionais modernos
Questões relacionadas a criação de threads
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
Gerências de Processos: Threads
1. Gerências de Processos: Threads
Sistemas Operacionais I
Prof. Alexandre Duarte : http://alexandrend.com
Centro de Informática | Universidade Federal da Paraíba
Estes slides são baseados no material que acompanha o livro Operating
Systems Concepts de Silberschatz, Galvin and Gagne
2. Objetivos
Introduzir a noç ão de thread, uma unidade
fundamental de utilizaç ão de CPU e que
representa a base da maioria dos sistemas
computacionais modernos
Questões relacionadas a criaç ão de threads
5. Programação com múltiplos núcleos
Sistemas com múltiplos núcleos pressionam os
programadores
Os desafios incluem
Particionamento das atividades
Balanç o
Particionamento dos dados
Dependência dos dados
Teste e depuraç ão
9. Threads do usuário
Gerencia de threads feita por bibliotecas
carregadas no nível do usuário
Três principais bibliotecas de threads:
POSIX Pthreads
Win32 threads
Java threads
10. Threads do Núcleo
Gerenciadas pelo pró prio sistema operacional
Exemplos
Windows XP/2000
Solaris
Linux
Tru64 UNIX
Mac OS X
12. Muitos-para-um
Muitas threads do
usuário mapeadas
para uma única
thread do núcleo
Exemplos:
Solaris Green
Threads
GNU Portable
Threads
13. Um-para-um
Cada thread do usuário é mapeada uma uma thread
do núcleo
Exemplos
Windows NT/XP/2000
Linux
Solaris 9 e posterior
14. Muitos-para-muitos
Permite que muitas
threads do usuário
sejam mapeadas em
muitas threads do
núcleo
Exemplos
Solaris antes da
versão 9
Windows NT/2000
como o pacote
ThreadFiber
15. Modelo em dois níveis
Similar ao M:M
porém também
permite que uma
thread do usuário seja
associada a uma
thread do núcleo
Exemplos
IRIX
HP-UX
Tru64 UNIX
Solaris 8 e anteriores
16. Bibliotecas de threads
Bibliotecas de threads oferecem uma API para
criaç ão e manipulaç ão de threads
Duas formas primárias de implementaç ão
Biblioteca localizada inteiramente no espaç o do
usuário
Biblioteca localizada no núcleo com suporte do
SO
17. Pthreads
Pode ser fornecida tanto no nível do usuário
quanto no núcleo
API padrão POSIX (IEEE 1003.1c) para
criaç ão e sincronizaç ão de threads
A API especifica unicamente o comportamento
da biblioteca, a implementaç ão fica a cargo
dos desenvolvedores
Comum em sistemas operacionais UNIX
(Solaris, Linux, Mac OS X)
18. Java Threads
Threads em Java são gerenciados pela JVM
Tipicamente implementados de acordo com o
modelo de threads do sistema operacional
“hospedeiro”
Threads em Java podem ser criados
Estendendo a classe Thread
Implementando a interface Runnable
19. Questões relacionadas a criação de
threads
As chamadas de sistema fork() e
exec()
Cancelamento de threads
Assíncrono versus adiado
Manipulaç ão de sinais
Pools de Thread
Dados específicos de threads
Ativaç ões do escalonador
20. As chamadas de sistema fork() e exec()
O fork() duplica apenas o thread que invocou
a chamada ou todos os threads do
programa ?
O que acontece com o exec() ?
21. Cancelamento de threads
Cancelar uma thread antes de sua
conclusão
Duas abordagens
Cancelamento assíncrono: termina
a thread alvo imediatamente
Cancelamento adiado: permite que
a thread alvo verifique periodicamente
se ela deve ser cancelada
22. Manipulação de sinais
Sinais são utilizados no UNIX para notificar um processo de
que um determinado evento ocorreu
Todos os sinais seguem o mesmo padrão
São gerados por um evento particular
São entregues a um processo
São manipulados pelo processo
Opções:
Entregar o sinal para a thread a qual ele se aplica
Entregar o sinal para todas as threads do processo
Entregar o sinal para certas threads do processo
Escolher uma thread específica para receber todos os sinais do
processo
23. Pools de threads
Cria um número de threads em um pool onde
elas aguardam por trabalho
Vantagens:
Geralmente é um pouco mais rápido requisitar
uma thread jáexistente do que criar uma nova
thread
Permite que o número de threads na(s)
aplicaç ão(ões) seja limitado ao tamanho do pool
24. Dados específicos de threads
Permite que cada thread tenha sua pró pria
có pia dos dados
Útil quando não se tem controle sobre o
processo de criaç ão de threads (ex., quando
se usa um thread pool)
25. Ativações do escalonador
Tanto o modelo M:M quanto o de
dois níveis utilizam uma estrutura de
dados intermediária (LWP) entre as
threads do núcleo e do usuário
O LWP funciona como um
processador virtual para a aplicação
no qual a aplicação pode agendar a
execução de uma thread
O núcleo, em seguida, atribui uma de
suas threads para executar a thread
do usuário associada a um LWP
26. Ativações do escalonador
Para esse esquema funciona, o núcleo precisa
notificar a aplicaç ão sobre certos eventos de
escalonamento de threads
Essa notificaç ão é feita através de um
procedimento chamado upcall e a esse
esquema de comunicaç ão é conhecido com
ativação do escalonador