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