Professional Documents
Culture Documents
1. Introduo Threads
2. Ambiente Monothread
3. Ambiente Multithread
4. Arquitetura e Implementao
5. Modelos de Programao
Thread
At o final da dcada de 1970, SOs suportavam apenas
processos com um nico thread
um processo com apenas um nico programa fazendo parte do
seu contexto
Thread
A partir do conceito de mltiplos threads possvel projetar e
implementar aplicaes concorrentes de forma eficiente, pois um
processo pode ter partes diferentes do seu cdigo sendo
executadas em paralelo, com um menor overhead do que
utilizando mltiplos processos.
Thread
A programao multithread no simples. A presena do
paralelismo introduz um novo conjunto de problemas como a
comunicao e sincronizao de threads.
O conceito de multithread pode ser encontrado em diversos
sistemas operacionais, como no Sun Solaris e Microsoft Windows
2000.
A utilizao comercial de SOs multithread crescente em
funo do aumento da popularidade dos sistemas com mltiplos
processadores, do modelo cliente-servidor e dos sistemas
distribudos.
AMBIENTE MONOTHREAD
Um programa uma seqncia de instrues, composta por
desvios, repeties e chamadas a procedimentos e funes.
Em um ambiente monothread, um processo suporta apenas um
programa no seu espao de endereamento.
6 Thread
Subprocessos e Processos Independentes
Subprocessos
Processos Independentes
6/1
AMBIENTE MONOTHREAD
Ao usar mltiplos processos, tm-se um problema de utilizar
processos de desenvolvimento de aplicaes concorrentes, que
demanda consumo de diversos recursos do sistema.
Sempre que um novo processo criado, o sistema deve alocar
recursos para cada processo, consumindo tempo de processador
neste trabalho.
No caso do trmino do processo, o sistema dispensa tempo para
desalocar recursos previamente alocados.
Outro problema que cada processo possui seu prprio espao
de endereamento, a comunicao entre processos torna-se
difcil e lenta, pois utiliza mecanismos como pipes, sinais,
semforos, memria compartilhada ou troca de mensagens. O
compartilhamento entre processos concorrentes no simples.
6 Thread
Ambiente Monothread
Thread
Thread
Thread
AMBIENTE MULTITHREAD
6 Thread
Ambiente Multithread
Contexto
de hardware
Contexto
de hardware
Thread 1
Thread 2
Thread 3
Contexto de
software
Contexto
de hardware
Espao de
endereamento
6/3
AMBIENTE MULTITHREAD
Programas no so associados a processos, mas sim, a threads;
Um processo tem pelo menos uma thread em execuo,
todavia, pode compartilhar seu espao de endereamento com
inmeras threads;
Aplicao Multithread
6 Thread
Processo
Variveis
Programa Principal
Thread_1
PC
SP
Contexto de
Hardware
...
Espao de
endereamento
Os 3 threads so
executados
concorrentemente.
Call Sub_1
Thread_2
Sub_1
Ret
PC
SP
Thread_3
Sub_2
PC
SP
Contexto de
Hardware
Fim
Contexto de
Hardware
Call Sub_2
...
Ret
6/4
AMBIENTE MULTITHREAD
Threads so implementadas atravs de uma estrutura de dados
denominada Thread Control Block ( TCB );
Como todas as threads de um processo acessam um mesmo
espao de endereamento, no h qualquer proteo memria,
permitindo que uma thread altere dados de outras. Para que
threads trabalhem de forma cooperativa, fundamental que a
aplicao implemente mecanismos de comunicao e
sincronizao entre threads, a fim de garantir o acesso seguro
aos dados compartilhados na memria;
A utilizao de threads pode melhorar o desempenho da
aplicao executando tarefas em background enquanto
operaes E/S esto sendo processadas;
6 Thread
Aplicao Multithread
Thread de
entr ada
Buffer
Thread de
exibio
Thread de
gravao
6/5
AMBIENTE MULTITHREAD
Em ambientes cliente-servidor, threads so essenciais para
solicitaes de servios remotos, pois no Monothread uma
solicitao de servio pode esperar indefinidamente , enquanto
aguarda o resultado; No multithreads, mltiplos threads
permitem que diversos pedidos sejam atendidos
simultaneamente.
O prprio ncleo do sistema operacional pode fazer uso do
multithreading. Por exemplo, na arquitetura microkernel.
6 Thread
Aplicao Multithread
Processo servidor
Solicitaes
Thread
Thread
Thread
Processo cliente
Processo cliente
Processo cliente
6/6
AMBIENTE MULTITHREAD
O uso de multithreads proporciona uma srie de benefcios.
Programas concorrentes com mltiplos threads so mais rpidos
do que programas concorrentes implementados com mltiplos
processos, pois operaes de criao, troca de contexto e
eliminao dos threads geram menor overhead.
Como os threads dentro de um processo dividem o mesmo
espao de endereamento, a comunicao entre eles pode ser
realizada de forma rpida e eficiente.
Alm disso, threads em um mesmo processo podem
compartilhar facilmente outros recursos, como descritores de
arquivos, temporizadores, sinais, atributos de segurana, etc.
AMBIENTE MULTITHREAD
Latncia de Processos e Threads (Vahalia, 1996)
ARQUITETURA E IMPLEMENTAO
Pacote de threads o conjunto de rotinas disponveis para que
uma aplicao utilize as facilidades dos threads;
Um pacote de threads pode ser implementado sob diversas
abordagens em um SO, o que influi diretamente no desempenho,
na concorrncia e na modularidade das aplicaes multithread;
Threads podem ser oferecidas por uma biblioteca de rotinas
fora do ncleo do SO ( modo usurio ), pelo prprio ncleo do
sistema ( modo Kernel ), por uma combinao de ambos ( modo
hbrido ) ou por um modelo conhecido como Scheduler
Activations;
ARQUITETURA E IMPLEMENTAO
Diversas arquiteturas para diferentes ambientes operacionais:
ARQUITETURA E IMPLEMENTAO
Uma das grandes dificuldades para a utilizao de threads foi a
ausncia de um padro.
Em 1995, o padro POSIX P1003.1c foi aprovado e
posteriormente atualizado para a verso P1003.4a. Com este
padro, tambm conhecido como Pthreads, aplicaes
comerciais multithreading tornaram-se mais simples e de fcil
implementao.
O padro Pthreads largamente utilizado em ambientes Unix,
como o Sun Solaris Pthreads e o DECthreads para Digital OSF/1.
Thread 4
Thread 3
Thread 2
Modo
usurio
Biblioteca
Kernel
Thread 4
Thread 3
Thread 2
Thread 1
Modo
kernel
Kernel
Thread 0
Thread 1
Thread 0
Modo
usurio
Modo
kernel
6 Thread
THREADS EM MODO HBRIDO
Combina vantagens de threads implementadas em modo usurio ( TMU ) e threads
em modo Kernel ( TMK );
Um processo pode ter vrios TMK e, por sua vez, um TMK pode ter vrios TMU;
Um TMU pode ser executado em um TMK e, em um instante seguinte, ser executado
em outro;
VANTAGENS
Maior flexibilidade
6/7
6 Thread
THREADS EM MODO HBRIDO
DESVANTAGENS:
Apresenta problemas herdados de ambas implementaes. Por exemplo, uma
chamada de bloqueio de uma TMK bloqueia todos os TMU, que so colocados em
espera;
TMUs que precisam utilizar diferentes processadores precisam utilizar diferentes
TMK, o que reduz o desempenho.
6/7
6 Thread
SCHEDULER ACTIVATIONS
Os problemas apresentados no pacote de threads em modo hbrido existem devido
falta de comunicao entre os threads em modo usurio e modo kernel;
Usa o melhor do modo usurio e do modo kernel, atravs de uma estrutura de dados
chamada scheduler activations;
Alcana um melhor desempenho evitando mudanas de modos de acesso que no
sejam necessrias;
Caso uma thread utilize uma chamada ao sistema que o coloque no estado de espera,
no necessrio que o kernel seja ativado, basta que a prpria biblioteca escalone
outra thread;
Bibliotecas em modo usurio e kernel se comunicam, trabalhando de forma
cooperativa;
6/7
MODELOS DE PROGRAMAO
O desenvolvimento de aplicaes multithread no simples, pois exige que a
comunicao e o compartilhamento de recursos entre as diversas threads sejam feitos
de forma sincronizada para evitar inconsistncias e deadlock;
6/7
TMU 5
TMU 4
TMU 3
TMU 2
TMU 1
TMU 0
Modo
usurio
Biblioteca
TMK 1
TMK 2
TMK 3
Modo
kernel
Thread 4
Thread 3
Thread 2
Thread 1
Kernel
Thread 0
TMK 0
Modo
usurio
Biblioteca
Kernel
Modo
kernel
6/8