Você está na página 1de 38

Chapter 4: Threads

Silberschatz, Galvin and Gagne 2009


Operating System Cncepts ! "
th
#ditin
Sbre a apresenta$% &'b(t the slides)
Os slides e figuras dessa apresentao foram criados por
Silberschatz, Galvin e Gagne em 2009. sse apresentao foi
modificada por !ristiano !osta "cac#unisinos.br$. %asicamente, os
slides originais foram traduzidos para o &ortugu's do %rasil.
( poss)vel acessar os slides originais em http*++,,,.os-boo..com
ssa verso pode ser obtida em http*++,,,.inf.unisinos.br+/cac
4*2
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
0he slides and figures in this presentation are cop1right Silberschatz,
Galvin and Gagne, 2009. 0his presentation has been modified b1
!ristiano !osta "cac#unisinos.br$. %asicall1 it ,as translated to
%razilian &ortuguese.
2ou can access the original slides at http*++,,,.os-boo..com
0his version could be do,nloaded at http*++,,,.inf.unisinos.br+/cac
Cap+t(l 4: Threads
3iso Geral
4odelos de 45ltiplas 0hreads
%ibliotecas de 0hreads
6uest7es sobre 0hreads
8emplos de Sistemas Operacionais
0hreads no 9indo,s :&
4*,
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
0hreads no ;inu8
Ob-etivs
<ntroduzir a noo de uma thread =uma unidade fundamental de
utilizao de !&> ?ue forma a base de sistemas computacionais com
m5ltiplas threads "multithreaded$
@iscutir as A&<s de &threads, 9inB2, e Cava
8aminar ?uest7es relacionadas a programao com m5ltiplas
4*4
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
8aminar ?uest7es relacionadas a programao com m5ltiplas
threads "multithreaded programming$
.rcesss cm (ma e m/ltiplas Threads
4*0
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
1ene2+cis
Desponsividade
!ompartilhamento de Decursos
conomia
scalabilidade
4*3
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
scalabilidade
>tilizao de ar?uiteturas multiprocessadas "4&$ ou multicore
.rgrama$% 4(lticre
Sistemas 4ulticore tem pressionado programadores, desafios incluem*
5ividir atividades
1alanceament
Separa$% de dads &Data splitting)
5epend6ncia de dads
Teste e dep(ra$%
4*7
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
'r8(itet(ra de Servidr 4(ltithreaded
4*"
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
#9ec($% cncrrente em (m
Sistema cm (m /nic cre
4*9
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
#9ec($% paralela em
Sistemas 4(lticre
4*:0
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
Threads em ;+vel <s(=ri
Ger'ncia de 0hreads E feito por bibliotecas em n)vel de usuFrio
0r's bibliotecas de threads principais*
&OS<: &threads
9inB2 threads
Cava threads
4*::
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
Threads em ;+vel >ernel
Suportada pelo Gernel
8emplos
9indo,s :&+2000
Solaris
;inu8
0ruHI >J<:
4*:2
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
0ruHI >J<:
4ac OS :
4dels de 4/ltiplas Threads
4uitos-para->m
>m-para->m
4uitos-para-4uitos
4*:,
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
4del 4(its?para?<m
4uitas threads em n)vel usuFrio so mapeadas para uma 5nica thread no
.ernel
8emplos*
Solaris Green 0hreads
GJ> &ortable 0hreads
4*:4
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
4del 4(its?para?<m &cnt*)
4*:0
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
4del <m?para?<m
!ada thread em n)vel usuFrio E mapeada para uma thread em n)vel .ernel
8emplos
9indo,s J0+:&+2000
;inu8
Solaris 9 e posteriores
4*:3
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
4del <m?para?<m &cnt*)
4*:7
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
4del 4(its?para?4(its
&ermite ?ue muitas threads em n)vel usuFrio seKam mapeadas
para muitas threads em n)vel .ernel
&ermite ?ue o sistema operacional crie um n5mero suficiente
de threads no .ernel
Solaris verso anterior a 9
9indo,s J0+2000 com o pacote ThreadFiber
4*:"
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
9indo,s J0+2000 com o pacote ThreadFiber
4del 4(its?para?4(its &cnt*)
4*:9
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
4del de 5is ;+veis
Similar ao 4*4, e8ceto ?ue ele permite ?ue uma thread do
usuFrio seKa amarrada "bind$ a uma thread no .ernel
8emplos
<D<:
L&->:
0ruHI >J<:
4*20
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
0ruHI >J<:
Solaris M e anterior
4del de 5is ;+veis &cnt*)
4*2:
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
1iblitecas de Thread
1iblitecas de Thread &Thread library) fornecem ao programador
uma A& para criar e gerenciar threads
@uas formas principais de implementao
%iblioteca totalmente em espao de usuFrio
%iblioteca em n)vel de .ernel suportada pelo SO
4*22
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
.threads
&ode ser oferecida tanto em n)vel de usuFrio como de
.ernel
>ma A&< padro &OS<: "< N00B.Nc$ para criao e
sincronizao de threads
A A&< especifica o comportamento da biblioteca de
threads, a implementao estF a cargo do
desenvolvedor da biblioteca.
4*2,
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
desenvolvedor da biblioteca.
!omum nos sistemas operacionais >J<: "Solaris,
;inu8, 4ac OS :$
Threads em @ava
Cava threads so gerenciadas pela C34
0ipicamente implementadas usando o modelo de threads fornecido
pelo SO em ?ue e8ecuta
Cava threads podem ser criadas*
4*24
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
stendendo a classe Thread
<mplementando a interface Runnable
#stads das Threads em @ava
4*20
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
A(estBes sbre Threads
SemOntica das chamadas de sistemas 2rC&) e e9ec&)
!ancelamento de 0hread de uma thread alvo
Ass)ncrono ou delegado
4anipulao de Sinais
!onKunto de 0hread "0hread &ools$
@ados spec)ficos de 0hread
4*23
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
@ados spec)ficos de 0hread
Ativa7es de scalonamento
SemDntica de 2rC&) e e9ec&)
O 2rC&) duplica somente a thread chamadora ou todas as threadsP
4*27
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
Cancelament de Thread
0erminao de uma thread antes dela ter finalizado
@uas abordagens*
Cancelament 'ss+ncrn termina a thread alvo
imediatamente
Cancelament 5elegad permite ?ue a thread alvo
seKa periodicamente verificada se deve ser cancelada
4*2"
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
4anip(la$% de Sinais
Sinais so usados nos sistemas >J<: para notificar um
processo ?ue um evento particular ocorreu
>m manip(ladr de sinais "signal handler$ E usado para
processar sinaliza7es
N. Sinal E gerado por um evento particular
2. Sinal E enviado a um processo
4*29
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
B. Sinal E manipulado
Op7es*
nviar o sinal para a thread para ?ual ele se aplica
nviar o sinal para cada thread no processo
nviar o sinal para determinadas threads no processo
Associar uma thread espec)fica para receber todos os
sinais enviados para o processo
Cn-(nt de Threads
!ria um n5mero de threads ?ue formam um conKunto para
espera de trabalho
3antagens*
>sualmente torna um pouco mais rFpido o atendimento a
uma re?uisio com uma thread e8istente do ?ue criar
uma nova
&ermite ?ue o n5mero de threads na aplicao seKa
4*,0
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
&ermite ?ue o n5mero de threads na aplicao seKa
limitado pelo tamanho do conKunto
5ads #spec+2ics de Thread
&ermite ?ue cada thread tenha seu prQprio conKunto de
dados
Rtil ?uando no se tem controle sobre o processo de
criao de threads "e8. ?uando se usa um conKunto de
threads$
4*,:
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
'tiva$Bes de #scalnament
0anto o modelo 4*4 ?uanto em dois n)veis re?uer
comunicao para manter o n5mero apropriado de threads
no .ernel alocado para a aplicao
Ativa7es de escalonamento fornecem upcalls - um
mecanismo de comunicao do .ernel para a biblioteca de
threads
ssa comunicao permite uma aplicao manter o n5mero
4*,2
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
ssa comunicao permite uma aplicao manter o n5mero
correto de threads no .ernel
#9empls de Sistemas Operacinais
9indo,s :& 0hreads
;inu8 0hread
4*,,
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
EindFs G. Threads
4*,4
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
Hin(9 Threads
4*,0
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
Threads n EindFs G.
<mplementa o mapeamento um-para-um em n)vel de .ernel
!ada thread contEm
>m identificador de thread "id$
!onKunto de registrados
&ilhas separadas para .ernel e usuFrio
Srea privada de armazenamento de dados
4*,3
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
Srea privada de armazenamento de dados
O conKunto de registradores, pilhas e Frea de
armazenamento privado so denominados cnte9t da
thread
As principais estruturas de dados de uma thread so*
0LDA@ "executive thread block$
G0LDA@ "kernel thread block$
0% "thread environment block$
Threads n Hin(9
Jo ;inu8 so denominadas de tarefas "tasks) ao invs
de threads
!riao de threads E feita atravEs da chamada de
sistemas clne&)
clne&) possibilita ?ue uma tarefa filha compartilha o
espao de endereamento com a tarefa pai "processo$
4*,7
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin
Iim d Cap+t(l 4
Silberschatz, Galvin and Gagne 2009
Operating System Cncepts ! "
th
#ditin

Você também pode gostar