Upload
internet
View
113
Download
2
Embed Size (px)
Citation preview
1Prof. Robert Gans
FACULDADE PITÁGORAS DE TECNOLOGIA
Faculdade PITÁGORAS – Outubro de 2012Prof. Robert Gans
Conceitos de thread
2Prof. Robert Gans
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.
3Prof. Robert Gans
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.
4Prof. Robert Gans
FACULDADE PITÁGORAS DE TECNOLOGIA
Figura 4.1 Relação entre thread e processo.
Definição de thread
5Prof. Robert Gans
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;
6Prof. Robert Gans
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;
7Prof. Robert Gans
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 próprio, a comunicação entre processos é difícil e lenta;
• Exemplos de sistemas monothreads:– MS-DOS e primeiras versões do Windows;
8Prof. Robert Gans
FACULDADE PITÁGORAS DE TECNOLOGIA
Ambiente Multithreads
• Cada processo possui pelo menos um thread;
• Exemplo: programa com duas sub-rotinas independentes
9Prof. Robert Gans
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!
10Prof. Robert Gans
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;
Pro gra m a
C o n texto d eSo ftw a re
C o n texto d eH a rdw are
Esp aço deEn dereça m en to
Estrutura do processo
C on textode hardw a re
C on textode hardw a re
C ontextode hardw a re
Espaço deendereça mento
Co
nte
xto
de
soft
wa
re
Th rea d 3Th rea d 2Th rea d 1
Processo MULTITHREAD
11Prof. Robert Gans
FACULDADE PITÁGORAS DE TECNOLOGIA
Ambiente Multithreads
Esp aço d een dereça m en to
Processo
Program a Pr in cipa l
Co
nte
xto
de
Ha
rdw
are
Co
nte
xto
de
Ha
rdw
are
Co
nte
xto
de
Ha
rdw
are
C a l l Su b_1
C a ll Su b_2
Th rea d_1
Th rea d_2
Th rea d_3
PCSP
PCSP
PCSP
Fim
Sub _2
Va riáve is
Ret
Sub _1
Ret
...
...
12Prof. Robert Gans
FACULDADE PITÁGORAS DE TECNOLOGIA
Ambiente Multithreads
• Threads são extremamente utilizadas em ambientes cliente/servidor. Ex: SGBD;
• Um único processo no servidor gera uma thread para cada solicitação de cliente;
13Prof. Robert Gans
FACULDADE PITÁGORAS DE TECNOLOGIA
Ambiente Multithreads
So licitações
Processo se rvido r
Th rea dTh rea d
Processo clienteProcesso cliente Processo cliente
Th rea d
14Prof. Robert Gans
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.
15Prof. Robert Gans
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.
■ Isso reduz o esforço de criação e término de threads, em comparação à criação e ao término de processo.
16Prof. Robert Gans
FACULDADE PITÁGORAS DE TECNOLOGIA
Estados de thread: ciclo de vida de um thread
Estados de thread■ Estado nascido■ Estado pronto (estado executável)■ Estado em execução■ Estado morto■ Estado bloqueado■ Estado de espera■ Estado adormecido
● O período de sono especifica por quanto tempo um thread ficará adormecido.
17Prof. Robert Gans
FACULDADE PITÁGORAS DE TECNOLOGIA
Figura 4.2 Ciclo de vida do thread.
Estados de thread: ciclo de vida de um 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.
18Prof. Robert Gans
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.
19Prof. Robert Gans
FACULDADE PITÁGORAS DE TECNOLOGIA
Modelos de thread
Três são os modelos de thread mais conhecidos:■ Threads de usuário■ Threads de núcleo■ Uma combinação de ambos
20Prof. Robert Gans
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.
● 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.M odou suá rio
M odokernel
Kernel
Bib lio teca
Thre
ad
0
Thre
ad
4
Thre
ad
3
Thre
ad
2
Thre
ad
1
21Prof. Robert Gans
FACULDADE PITÁGORAS DE TECNOLOGIA
Figura 4.3 Threads de usuário.
Threads de usuário
22Prof. Robert Gans
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-para-um.
● 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.
Os threads de núcleo nem sempre são a solução ideal para as aplicações.
M odou suá rio
M odokernelKernel
Thre
ad
0
Thre
ad
4
Thre
ad
3
Thre
ad
2
Thre
ad
1
23Prof. Robert Gans
FACULDADE PITÁGORAS DE TECNOLOGIA
Figura 4.4 Threads de núcleo.
Threads de núcleo
24Prof. Robert Gans
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)
● Em comparação com os mapeamentos de threads um-para-um, esse mapeamento consegue reduzir a sobrecarga implementando o reservatório de threads.
M odou suá rio
M odokernel
Kernel
TM K 0 TM K 3TM K 2TM K 1
Bib lio teca
TMU
0
TMU
4
TMU
5
TMU
3
TMU
2
TMU
1
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.
25Prof. Robert Gans
FACULDADE PITÁGORAS DE TECNOLOGIA
Figura 4.5 Modelo de operação de thread híbrido.
Combinação de threads de usuário e de núcleo
26Prof. Robert Gans
FACULDADE PITÁGORAS DE TECNOLOGIA
Término de threads
Término de threads (cancelamento)■ É 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.