Buscar

Aula 10 Processos Threads

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1
Sistemas Operacionais Sistemas Operacionais –– Ciência da ComputaCiência da Computaççãoão
Gerência de ProcessosGerência de Processos
ThreadsThreads
Prof. Humberto Brandão
humberto@dcc.ufmg.br
aula disponível no site:
http://www.dcc.ufmg.br/~humberto/unifal/
Universidade Federal de Alfenas
Departamento de Ciências Exatas
versão da aula: 0.1
Threads
• O conceito de processo, define que somente o prdefine que somente o próóprio prio 
processo tem acesso ao seu espaprocesso tem acesso ao seu espaçço de endereo de endereççamentoamento;
• Esta questão é fundamental para seguransegurançça e a e 
consistência das aplicaconsistência das aplicaççõesões, de forma geral.
• Contudo, frequentemente existemexistem situasituaçções em que ões em que éé
desejdesejáável ter execuvel ter execuçções separadas acessando o mesmo ões separadas acessando o mesmo 
bloco de enderebloco de endereççosos na memória do computador.
• Por questões de eficiência no compartilhamento de 
informações, ou para aproveitar melhor a ociosidade do 
processador.
Threads
• Assim como os processos, os threads possuemthreads possuem:
– um contador de programacontador de programa que indicam qual é a 
próxima instrução a ser executada;
–– Pilha de execuPilha de execuççãoão, que traz a história da 
execução do thread, para indicar todas as 
chamadas que ainda não obtiveram retorno;
–– RegistradoresRegistradores, que indicam suas variáveis 
atuais de trabalho.
Threads
• Processos são utilizadas para agrupar recursos;
• Threads são entidades escalonadas, podendo 
compartilhar recursos com outros threads irmãos;
• As vezes, pelas características semelhantes, threads são 
denominados processos levesprocessos leves.
• Comumente, encontramos o termo multithreadmultithread para 
descrever um sistema que permite múltiplos threads 
no mesmo processos;
Threads
(a) 3 threads, 
mas habitando 3 processos distintos;
(b) 3 threads,
habitando o mesmo processo;
Threads
• Threads distintos em um processo não são tão 
independentes quanto threads em processos 
distintos;
• Compartilham as mesmas variáveis globais do 
processo, tendo “independência” apenas em suas 
variáveis armazenadas na sua própria pilha de 
execução;
2
Threads
• Além de compartilhar o 
mesmo espaço de 
endereçamento, os threads 
compartilham o mesmo 
conjunto de arquivos 
abertos, processos filhos, 
etc...
Estados do Thread
Threads
• Assim como um processo normal, um thread 
pode assumir vários estados distintos:
– Em execução;
– Bloqueado;
– Pronto;
– Finalizado;
Operações com Threads
Threads
• Os processos normalmente se iniciam em um 
único thread;
• Este por sua vez, pode criar quantos threads 
forem necessários, de acordo com a necessidade 
de sua aplicação;
• A criação é através de um procedimento de 
biblioteca: thread_createthread_create
Threads
• Quando o thread finaliza seu trabalho, ele pode 
invocar a chamada thread_exitthread_exit;
• Depois disso ele desaparece e não mais fará parte 
da fila dos processos escalonáveis, passando ao 
estado finalizado;
• O thread também pode se bloquear para esperar 
outro thread terminar sua execução, através da 
chamada thread_waitthread_wait;
3
Threads
• O thread pode desistir voluntariamente da 
utilização da CPU, para deixar outro thread 
executar. Este procedimento é feito através da 
chamada thread_yieldthread_yield;
O Uso dos Threads
O Uso dos Threads
• Mas afinal....
– Qual é(são) a(s) razão(ões) de utilizarmos threads?
O Uso dos Threads
• 1ª razão:
– Algumas vezes, a execução em paralelo de 
atividades, que poderiam ser implementadas 
sequencialmente, pode oferecer um ganho 
considerável de performance;
– Exemplo: Navegadores. Ao carregar as imagens 
de um site... 
O Uso dos Threads
• 2ª razão:
– É muito mais rápido criar um thread do que criar 
um processo;
– Em alguns sistemas, este procedimento chega a 
ser 100 vezes mais rápido;
O Uso dos Threads
• 3ª razão (talvez a principal delas):
– Em muitas aplicações, ocorrem múltiplas 
atividades ao mesmo tempo;
– O modelo de programação se torna bem mais 
simples quando decompomos o processo em 
vários threads para o gerenciamento de todas as 
atividades;
4
O Uso dos Threads – Um exemplo
Editor de textos simples
O Uso dos Threads – Um exemplo
Editor de textos simples
Um thread fica 
responsável por 
capturar a entrada do 
teclado
O Uso dos Threads – Um exemplo
Editor de textos simples
Outro fica responsável 
pela atualização visual 
da aplicação.
O Uso dos Threads – Um exemplo
Editor de textos simples
Outro pelo salvamento 
automático do 
documento.
O Uso dos Threads – Um exemplo
Editor de textos simples
É possível que 3 processos gerenciem este editor 
de textos?
O Uso dos Threads – Um exemplo
Editor de textos simples
É possível que 1 processo, com 1 thread gerencie 
este editor de textos?
5
O Uso dos Threads – Outro Exemplo
Um servidor web utilizando o conceito de cache
• Vamos imaginar um servidor web recebendo dezenas de 
requisições por segundo;
O Uso dos Threads – Outro Exemplo
Um servidor web utilizando o conceito de cache
O thread despachante 
recebe as requisições e 
encaminha cada uma 
para um thread 
operário...
O Uso dos Threads – Outro Exemplo
Um servidor web utilizando o conceito de cache
O thread operário 
consulta se a requisição 
está na cache das 
últimas páginas 
visitadas. Se não estiver, 
ela efetua acesso ao 
disco (mais lento).
O Uso dos Threads – Outro Exemplo
Um servidor web utilizando o conceito de cache
Faz sentido cada thread operário invocar a 
chamada thread_exitthread_exit sempre que retornar uma 
requisição? Sim? Não? Por que?
Implementação de Threads
Nível de Usuário vs Nível Núcleo
Implementação de Threads
• Implementação a nníível de usuvel de usuááriorio
Quais são as 
vantagens e as 
desvantagens?
6
Implementação de Threads
• Implementação a nível de 
usuário:
–– VantagensVantagens:
• Podemos utilizar o recurso de 
threads, mesmo se o S.O. não 
suportar;
• As operações são mais rápidas a 
nível de usuário, se comparadas 
com o nível de kernel;
• Cada processo pode ter seu 
próprio algoritmo de 
escalonamento (customizado);
Implementação de Threads
• Implementação a nível de 
usuário:
–– DesvantagensDesvantagens:
• O usuário precisa garantir o 
funcionamento do sistema;
• Cada thread precisa avisar o 
supervisor que está passando 
a sua vez.
Implementação de Threads
• Implementação a nníível de kernel (nvel de kernel (núúcleo)cleo)
Quais são as 
vantagens e as 
desvantagens?
Implementação de Threads
• Implementação a nível de 
núcleo:
–– VantagensVantagens:
• Uma vez validado o algoritmo 
dentro do S.O., todos os 
processos podem utiliza-lo;
• O tempo de ocupação na CPU 
fica melhor dividido se o kernel 
conhece todos os threads ativos;
Implementação de Threads
• Implementação a nível de 
núcleo:
–– DesvantagensDesvantagens:
• Operações são bem mais lentas a 
nível de kernel;
• Cada processo fica sujeito a 
política de escalonamento do 
próprio sistema operacional;
Implementação de Threads
Modelo Híbrido
7
Referencia
• Sistemas Operacionais Modernos. Tanenbaum, 
A. S. 2ª edição. 2003

Outros materiais