FACULDADE PITÁGORAS DE TECNOLOGIA
Conceitos de thread
Faculdade PITÁGORAS – Outubro de 2012
Prof. Robert Gans
[email protected]
Prof. Robert Gans
1
FACULDADE PITÁGORAS DE TECNOLOGIA
Introdução (Threads)
•
Partes de um processo que compartilham mesmo espaço de endereçamento;
•
Sub-rotina de um programa executado paralelamente ao programa chamador (execução
concorrente de sub-rotinas);
•
Mais uma definição:
– Enquanto processos permitem que o sistema operacional execute mais de uma
aplicação ao mesmo tempo, as threads permitem que a aplicação execute mais de
um método ao mesmo tempo.
Prof. Robert Gans
2
FACULDADE PITÁGORAS DE TECNOLOGIA
Definição de thread
 Thread
■
■
■
■
É às vezes chamado de processo leve (LWP - light-weight process).
Existem threads de instrução ou threads de controle.
Os threads compartilham espaço de endereço e outras
informações globais com seu próprio processo.
Registradores, pilha, máscaras de sinal e outros dados
específicos de thread são nativos a cada thread.
 Os threads devem ser gerenciados pelo sistema
operacional ou pela aplicação de usuário.
 Exemplos: threads Win32, C-threads, threads em
java, etc.
Prof. Robert Gans
3
FACULDADE PITÁGORAS DE TECNOLOGIA
Definição de thread
Figura 4.1 Relação entre thread e processo.
Prof. Robert Gans
4
FACULDADE PITÁGORAS DE TECNOLOGIA
Vantagens/Desvantagens de threads
•
Vantagens:
– Desempenho:
• não existe necessidade de comunicação entre processos;
• utilização de multiprocessadores para um mesmo processo;
• um programa pode continuar sendo executado mesmo se parte dele estiver
bloqueada (um navegador pode permitir a interação do usuário em um thread
enquanto uma imagem é carregada em outro thread);
•
Desvantagem: o desenvolvimento de aplicações não é simples;
Prof. Robert Gans
5
FACULDADE PITÁGORAS DE TECNOLOGIA
Threads
•
Mais exemplos:
– Navegador Web:
• um thread para exibir imagens
• um thread para recuperar dados da rede
– Processador de texto:
• um thread para seqüência de teclas
• um thread para verificação ortográfica e gramatical
•
Para obter benefícios do uso de threads, aplicação deve permitir que partes do seu código
sejam executadas em paralelo de forma independente;
Prof. Robert Gans
6
FACULDADE PITÁGORAS DE TECNOLOGIA
Threads
•
Por que não dividir em vários outros processos?
– A criação de um processo e a mudança de contexto consome muito mais
recurso do que a criação de uma thread;
– Como cada processo possui espaço de endereçamento
comunicação entre processos é difícil e lenta;
•
próprio,
a
Exemplos de sistemas monothreads:
– MS-DOS e primeiras versões do Windows;
Prof. Robert Gans
7
FACULDADE PITÁGORAS DE TECNOLOGIA
Ambiente Multithreads
• Cada processo possui pelo menos um thread;
• Exemplo:
programa
independentes
Prof. Robert Gans
com
duas
sub-rotinas
8
FACULDADE PITÁGORAS DE TECNOLOGIA
Ambiente Multithreads
• Processo fica responsável pela alocação de recursos, mas a
unidade escalonada é a thread;
• TCB: armazena contexto de hardware e informações sobre a
thread (prioridade, estado...)
• O TCB está para a thread assim como o PCB está para o
processo!
Prof. Robert Gans
9
FACULDADE PITÁGORAS DE TECNOLOGIA
Ambiente Multithreads
• Threads de um mesmo processo compartilham contexto de
software e espaço de endereçamento, mas não compartilham
contexto de hardware;
Contexto de
Hardware
Contexto
de hardware
Contexto
de hardware
Contexto
de hardware
Thread 1
Thread 2
Thread 3
Contexto de
software
Contexto de
Software
Programa
Espaço de
Endereçamento
Estrutura do processo
Prof. Robert Gans
Espaço de
endereçamento
Processo MULTITHREAD
10
FACULDADE PITÁGORAS DE TECNOLOGIA
Ambiente Multithreads
Processo
Variáveis
Programa Principal
Thread_1
PC
SP
Contexto de
Hardware
...
Espaço de
endereçamento
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
Prof. Robert Gans
11
FACULDADE PITÁGORAS DE TECNOLOGIA
Ambiente Multithreads
• Threads são extremamente
cliente/servidor. Ex: SGBD;
utilizadas
em
ambientes
• Um único processo no servidor gera uma thread para cada
solicitação de cliente;
Prof. Robert Gans
12
FACULDADE PITÁGORAS DE TECNOLOGIA
Ambiente Multithreads
Processo servidor
Solicitações
Prof. Robert Gans
Thread
Thread
Thread
Processo cliente
Processo cliente
Processo cliente
13
FACULDADE PITÁGORAS DE TECNOLOGIA
Motivação na criação de threads
 Os threads tornaram-se proeminentes por causa de
tendências subseqüentes em relação:
■
Ao projeto de software
● Maior simplicidade para exprimir tarefas inerentemente paralelas.
■
Ao desempenho
● Maior escalonamento para sistemas com múltiplos processadores.
■
À cooperação
● O custo operacional do espaço de endereço compartilhado é menor
que o da IPC.
Prof. Robert Gans
14
FACULDADE PITÁGORAS DE TECNOLOGIA
Motivação na criação de threads
 Todo thread transita entre uma série de estados de
thread distintos.
 Os threads e os processos têm muitas operações em
comum (por exemplo, criar, sair, retomar e
suspender).
 A criação de thread não requer que o sistema
operacional inicialize recursos compartilhados entre
os processos-pai e os respectivos threads.
■
Prof. Robert Gans
Isso reduz o esforço de criação e término de threads, em
comparação à criação e ao término de processo.
15
FACULDADE PITÁGORAS DE TECNOLOGIA
Estados de thread: ciclo de vida de um thread
 Estados de thread
■
■
■
■
■
■
■
Estado
Estado
Estado
Estado
Estado
Estado
Estado
nascido
pronto (estado executável)
em execução
morto
bloqueado
de espera
adormecido
● O período de sono especifica por quanto tempo um thread ficará
adormecido.
Prof. Robert Gans
16
FACULDADE PITÁGORAS DE TECNOLOGIA
Estados de thread: ciclo de vida de um thread
Figura 4.2 Ciclo de vida do thread.
Em
sistemas
operacionais,
preemptividade ou
preempção é a
capacidade de alterar
a ordem de (ou tirar
de execução) um
processo
em
detrimento de outro
com uma prioridade
maior.
Prof. Robert Gans
17
FACULDADE PITÁGORAS DE TECNOLOGIA
Operações de thread
 As operações de thread não correspondem
precisamente às operações de processo.
■
Cancelar
● Indica que um thread deve ser terminado, mas não garante que o
thread será terminado.
● Os threads podem mascarar o sinal de cancelamento.
■
Associar
● Para que um thread primário aguarde até que todos os outros
threads terminem, ele se associa a esses threads.
● O thread que se associa é bloqueado até que o thread ao qual ele se
associou termine.
Prof. Robert Gans
18
FACULDADE PITÁGORAS DE TECNOLOGIA
Modelos de thread
 Três são os modelos de thread mais conhecidos:
■
■
■
Prof. Robert Gans
Threads de usuário
Threads de núcleo
Uma combinação de ambos
19
FACULDADE PITÁGORAS DE TECNOLOGIA
Threads de usuário
 Os threads de usuário executam operações de
suporte a threads no espaço do usuário.
■
Isso significa que os threads são criados por bibliotecas em
tempo de execução que não podem executar instruções
privilegiadas nem acessar as primitivas do núcleo diretamente.
 Implementação de thread de usuário
■
Mapeamentos de thread muitos-para-um
● O sistema operacional mapeia todos os threads de um processo
multithread para um único contexto de execução.
● Vantagens
→ As bibliotecas de usuário podem escalonar seus threads para otimizar
o desempenho.
→ A sincronização é realizada fora do núcleo, e isso evita chaveamento
de contexto.
→ É mais portável.
Thread 4
Thread 3
Thread 2
Thread 1
Thread 0
● Desvantagens
→ O núcleo considera o processo multithread como um único thread de
controle.
▪ Isso pode fazer com que o desempenho fique abaixo do ideal
se um thread requisitar uma operação E/S.
▪ Não pode ser escalonado para executar em múltiplos
processadores ao mesmo tempo.empo.
Modo
usuário
Biblioteca
Kernel
Prof. Robert Gans
Modo
kernel
20
FACULDADE PITÁGORAS DE TECNOLOGIA
Threads de usuário
Figura 4.3 Threads de usuário.
Prof. Robert Gans
21
FACULDADE PITÁGORAS DE TECNOLOGIA
Threads de núcleo
 Os threads de núcleo tentam resolver as limitações
dos threads de usuário mapeando cada thread para o
seu próprio contexto de execução.
■
O thread de núcleo oferece mapeamento de thread um-paraum.
● Vantagens: maior escalabilidade, interatividade e rendimento.
● Desvantagens: sobrecarga decorrente do chaveamento de contexto e
menor portabilidade em virtude de as APIs serem específicas ao
sistema operacional.
Kernel
Prof. Robert Gans
Thread 4
Thread 3
Thread 2
Thread 1
Thread 0
 Os threads de núcleo nem sempre são a solução ideal
para as aplicações.
Modo
usuário
Modo
kernel
22
FACULDADE PITÁGORAS DE TECNOLOGIA
Threads de núcleo
Figura 4.4 Threads de núcleo.
Prof. Robert Gans
23
FACULDADE PITÁGORAS DE TECNOLOGIA
Combinação de threads de usuário e de núcleo
 Implementação da combinação de threads de
usuário (TMU) e de núcleo (TMK)
■ Mapeamento de threads muitos-para-muitos (mapeamento
de threads m-to-n)
TMU 5
TMU 4
TMU 3
TMU 2
TMU 1
TMU 0
● Em comparação com os mapeamentos de threads um-para-um,
esse mapeamento consegue reduzir a sobrecarga implementando o
reservatório de threads.
Modo
usuário
Biblioteca
TMK 0
TMK 1
TMK 2
TMK 3
Modo
kernel
Kernel
Prof. Robert Gans
Um processo pode ter
vários TMKs, e por sua
vez, um TMK pode ter
vários TMUs. O núcleo do
SO reconhece os TMKs e
pode
escalona-los
individualmente. Um TMU
pode ser executado em
um
TMK,em
um
determinado momento, e
no instante seguinte ser
executado em outro.
24
FACULDADE PITÁGORAS DE TECNOLOGIA
Combinação de threads de usuário e de núcleo
Figura 4.5 Modelo de operação de thread híbrido.
Prof. Robert Gans
25
FACULDADE PITÁGORAS DE TECNOLOGIA
Término de threads
 Término de threads (cancelamento)
■
■
■
Prof. Robert Gans
É diferente de implementação de threads.
Se for terminado prematuramente, o thread pode provocar
erros sutis nos processos, porque vários threads compartilham
o mesmo espaço de endereço.
Determinadas implementações de thread permitem que um
thread determine quando ele pode ser terminado, a fim de
evitar que o processo entre em um estado inconsistente.
26
Download

faculdade pitágoras de tecnologia