Вы находитесь на странице: 1из 21

Threads

esther.brasileiro@gmail.com
O modelo de threads

O processo agrupa todas as informaes


relacionadas ao programa em execuo
arquivos abertos, processos filhos, prxima instruo
a ser executada, estado, etc.

Threads permitem que haja mais de um fluxo de


execuo associado ao mesmo programa em
execuo
Threads compartilham mesmo espao de
endereamento
Processo versus thread
Uso de threads

Threads foram inventadas para permitir


que o paralelismo seja combinado com
execuo sequencial e chamadas de
sistema bloqueantes
Ex. de servidor Web com mltiplas threads

Paralelismo => melhora desempenho

Chamadas de sistema bloqueantes=>


simplifica
Servidor Web multithread
Cdigos do despachante e operrios
Como seria se threads no
existissem?

Um nico fluxo de excuo


Quando o processo bloqueasse em um read
a mquina ficaria ociosa
Continua com modelo de fluxos sequenciais

Chamadas ao sistema no bloqueantes


Perde-se o conceito de fluxos sequenciais
Mais complicado
Implementao de threads

Duas formas:
Threads de usurio
Threads de ncleo
Threads de usurios

O pacote de threads est totalmente


dentro do espao de endereamento do
usurio
O ncleo gerencia todos os processos da
mesma forma, independente de serem mono
ou multithreads

Vantagem 1: o SO no precisa dar


suporte a threads
Ilustrao de threads de usurio
Threads de usurio

Sistema supervisor = coleo de


procedimentos que permitem a gerncia
das threads
Ex. criar, destruir, escalonar, etc.

Cada processo multithreaded tem seu


prprio sistema supervisor
Gerencia uma tabela de threads

Chamadas bloqueantes so solicitadas


ao sistema supervisor
Algumas vantagens de threads de
usurios

O SO no precisa dar suporte a threads

Alternar entre threads , em termos de


performance, melhor do que alternar entre
processos
Menos informaes a serem guardadas e
recuperadas

Cada processo multithreaded pode ter seu


prprio algoritmo de escalonamento
Dificuldades de implementao de
threads de usurios

Como implementar as chamadas ao


sistema com bloqueio?
Se uma thread estiver espera de dados do
teclado e o sistema supervisor fizer um scanf
em seu nome, ento todas os threads sero
bloqueadas at que o dado seja digitado
O SO vai achar que o processo bloqueou e
vai escalonar outro processo
Um thread bloqueado no pode afetar os
outros
Dificuldades de implementao de
threads de usurios

Soluo 1: criar chamadas no


bloqueantes?
No aceitvel

Soluo 2: antever se a chamada ir ou


no bloquear
SELECT
Chamadas ao sistema s so realizadas se
for seguro (no vai bloquear)
Dificuldades de implementao de
threads de usurios

Faltas de pgina podem bloquear todo o
processo

Se uma thread ganhar a CPU e nunca
precisar realizar operaes que a iro
fazer esperar, nenhuma outra thread ser
escalonada
Exemplos de java
Pacote de threads

Conjunto de primitivas disponveis para


usurios (programadores) que queiram
usar threads

Gerncia do ciclo de vida


Threads podem fazer um exit e terminar ou
podem ser mortas por entidades externas
Pacote de threads

Sincronizao
Problema: acessam a mesma rea de
memria

Ex. cache de pginas Web
Pacote precisa oferecer meios de sincronizar
o acesso a esses dados

Mutex especial: LOCK, UNLOCK, RYLOCK

Variveis condicionais

Java: synchronized
Pacotes de threads

O usurio pode especificar o algoritmo de


escaloamento e a prioridade das threads

E se muitas threads estiverem esperando


dados do teclado?
Quem receber a digitao? Quem ser
desbloquado?

Gerenciamento da pilha
Se o SO no conhecer as threads, como aumentar
as pilhas de execuo?
Threads de ncleo

O ncleo do SO tem conhecimento das


threads e as gerencia
No h necessidade do sistema supervisor
No h tabelas de threads em cada
processo

O ncleo tem uma tabela de threads

Informaes sobre as threads (subconjunto de
informaes sobre processos)

O escalonador do SO escalona as threads
Ilustrao de threads de ncleo
Vantagens e desvantagens

SO precisa dar suporte a threads


Manter a tabela de threads
Escalonar threads

mais simples

menos eficiente
Mudana de contexto que chama o ncleo
mais lenta que alternncia de threads

Вам также может понравиться