Você está na página 1de 26

Threads

Prof. Dr. Eduardo Feitosa


efeitosa@icomp.ufam.edu.br

Agenda
Threads
Modelo de Threads
Exemplos
2
Threads
Contextualizao
Os antigos S.O. suportavam apenas uma
tarefa por processo.
Fator limitante devido a complexidade das
novas aplicaes.

Surge a necessidade de suportar mais de
uma tarefa operando no mesmo contexto,
ou seja, dentro do mesmo processo
4
Threads
Cada tarefa associado a um processo ou
ao interior do ncleo denominada
thread.

Threads de usurio so executadas
dentro de um processo.
Cada thread de usurio corresponde a uma
tarefa a ser executada dentro de um
processo.
5
Threads
Threads de usurio
6
Threads
Threads de usurio so gerenciadas
atravs de bibliotecas no nvel de
usurio.

Vantagem: rapidez

Limitaes
Bloqueio nas chamadas ao sistema
No tira proveito de multiprocessadores
7
Threads
Threads de ncleo representam as
tarefas em execuo pelo ncleo do
sistema
Essas tarefas podem corresponder
execuo dos processos no espao de
usurio ou a atividades internas do prprio
ncleo, como drivers de dispositivos ou
tarefas de gerncia.
8
Threads
Threads de ncleo
9
Threads
Threads de ncleo tem como vantagens
Bloqueio apenas da thread que faz a
chamada
Tira proveito dos multiprocessadores

Inconvenientes
lentido (entrada no sistema)
10
Modelos de Thread
Modelo de Thread
SOs antigos no tinham threads.

Desenvolvedores usavam bibliotecas
para criar e gerenciar threads dentro de
cada processo, sem usar o ncleo.

Assim, uma aplicao podia lanar vrias
threads, mas o ncleo do sistema sempre
percebia apenas um fluxo de execuo
dentro de cada processo.
12
Modelo de Thread
Esta forma de implementao de threads
nomeada Modelo de Threads N:1

N threads no processo correspondem a
uma nica thread de ncleo.

Usado em sistemas que no suportam
kernel threads.

13
Modelo de Thread
Modelo de Threads N:1
14
Modelo de Thread
O modelo de threads N:1 muito
utilizado (leve e fcil de implementar)
Carga de gerncia do ncleo mnima

til na construo de aplicaes que
exijam muitos threads
Jogos, simulaes de grandes sistemas

Exemplo: biblioteca GNU Portable
Threads.
15
Modelo de Thread
A principal desvantagem do modelo N:1
diz respeito a operaes de E/S.
Suspenso do ncleo at a concluso

Outro problema diviso de recursos.
Tempo do processador divido entre os
processos que gerencia.
Aplicao com 100 threads de usurio = 1
tempo de processador.
16
Modelo de Thread
Necessidade de suporte a aplicaes
multithreaded.

Cada thread de usurio tem uma thread
dentro do ncleo.
Operaes de E/S suspendem apenas o
respectivo thread de ncleo

Essa forma de implementao,
denominada Modelo de Threads 1:1
17
Modelo de Thread
Modelo de Threads 1:1
18
Modelo de Thread
Exemplos
Windows 95/98/NT/2000
Pthreads sobre LinuxThreads

O modelo 1:1 adequado para a maioria
da situaes

Desvantagem:
Pouco escalvel
19
Modelo de Thread
O Modelo de Threads N:M, onde N
threads de usurio so mapeados em M
N threads de ncleo.

um modelo hibrido que agrega
caractersticas dos outros modelos
usando uma biblioteca de usurio.

Exemplos
Solaris 2 e Windows NT/2000 com o pacote
ThreadFiber

20
Modelo de Thread
Modelo N:M
21
Exemplos de Threads em SO
22
Threads no Linux
Os kernel threads no Linux so
conhecidos por tasks.

A criao de tasks feita pela chamada
ao sistema clone().

Clone() permite que a task filha partilhe
recursos com task me ( por exemplo o
espao de endereamento)
Threads no Windows 2000
Mapping 1 : 1 (kernel threads).

Cada thread
thread id
Registros
stacks utilizador e kernel
rea privativa de dados
24
Atividade
25
Atividade
Descrever as chamadas a API do Linux
relativa a threads (pthreads)

Descobrir o comportamento (modelo) de
threads em sistemas operacionais de
dispositivos mveis
26