(Aula 15) Threads e Threads em Java
Um fluxo computacional. A programa maioria de execução, dos seqüencial programas o qual simples consiste realiza tem uma de essa um certa único tarefa Grande característica: só possuem um único fluxo de execução. Profa. Patrícia D. escrito Por conseguinte, não executam dois trechos de código simultaneamente. CostaLPRM/DI/UFES execução. hoje parte em do dia software faz uso de maior complexidade 2 de mais de Sistemas uma Operacionais linha 2008/1 Fluxos de Execução
Navegador Consegue mesmo tempo, (browser) fazer gerenciando o downloadde diferentes vários arquivos velocidades ao Editor de cada servidor e, ainda assim, permitindo que o Permite usuário enquanto continue arquivos interagindo, estão sendo mudando carregados. de página Profa. Patrícia D. Processamento CostaLPRM/DI/UFES ainda de está que textos sendo o usuário assíncrono carregado edite o arquivo enquanto ele 3(salvamento do disco. periódico) Sistemas Operacionais 2008/1 Exemplos de Programas
Threads= linha, fluxos de fio. execução que rodam dentro de um processo. Threadé Seqüência de instruções a serem executadas dentro de aplicação um programa. Profa. Patrícia D. (ex: = lightweight process Processos uma abstração que permite que uma CostaLPRM/DI/UFES aplicação mais execute de ao permitem um mesmo método) mais ao tempo. S.O. de um trecho de código 4simultaneamente. executar mais Sistemas de uma Operacionais 2008/1 Threads
Existem usualmente duas tratadas características de forma fundamentais independente que pelo são Propriedade S.O.: Propriedadede Escalonamento( scheduling/ Trata recursos( resourceownership ); necessários dispatching ). Profa. Patrícia D. CostaLPRM/DI/UFES Ex: de recursos: memória, dos De de recursos controlar tempos para a em sua arquivos, alocadosaos tempos, execução. processos, e que são 5requerer o processo dispositivos pode Sistemas requerer de Operacionais E/S, mais etc. 2008/1 Threads e Processos (1)
Escalonamento: Tradicionalmente Relacionado à unidade de despachodo S.O. processo Determina o fluxo de execução (trecho código) que é executado pela CPU. um programa conjunto está de associado em recursos o execução a: Profa. Patrícia D. CostaLPRM/DI/UFES 6 Sistemas Operacionais 2008/1 Threads e Processos (2)
Em Processos recursos, (3) threadsconstituem um S.O. e estão threadsàs multi-threads associados unidades atividades somenteà de de despacho). execução propriedade (i.e., de Threads e Processos Profa. Patrícia D. CostaLPRM/DI/UFES 7 Sistemas Operacionais 2008/1
Multithreadingrefere-se múltiplas threadsde DOSexecução àhabilidade em um do mesmo S.O. em processo. suportar JVM UNIX Vários Sys Windows, Solaris, Linux Profa. Patrícia D. CostaLPRM/DI/UFES 8 Sistemas Operacionais 2008/1 Threads e Processos (4)
S.O.s MS-DOS: multithreading permitem múltiplas threads Unix de execução uma em única um thread. único processo. Profa. Patrícia Windows Suporta standard : D. Suportam processo. múltiplos processos mas apenas uma thread CostaLPRM/DI/UFES2000, múltiplas Linux, threads Solaris,OS/2, 9 por processo. Mach: Sistemas Operacionais 2008/1 Multithreading (1)
10 é a unidade de alocação e proteção de tem recursos; mantém Profa. Patrícia D. CostaLPRM/DI/UFES arquivos um acesso espaço a e imagem outros controlado de recursos. endereçamento processo; virtual que 10a outros processos, Sistemas Operacionais 2008/1 Multithreading (2) Em um ambiente multithreaded, um processo:
11 uma estado de execução (pronta, bloqueada,...). executando. contexto salvo quando não estiver Profa. Patrícia D. acesso CostaLPRM/DI/UFES processo pilha compartilhado a variáveis aos de recursos execução. locais próprias. 11com do mesmo. outras threadsdo Sistemas Operacionais 2008/1 Multithreading (3) Já uma thread apresenta:
12 Multithreading (4) Profa. Patrícia D. CostaLPRM/DI/UFES 12 Sistemas Operacionais 2008/1
13 Mono Processos Mono e Multithreaded-Exemplo Multi serv2 Profa. Patrícia D. CostaLPRM/DI/UFES 13 Sistemas Operacionais 2008/1 thread A processo 1 (processo 1) thread B HTTP request HTTP request HTTP request serv1 serv1 HTTP request serv2 tempo executando bloqueado(a) HTTP req. bloqueado(a) - processador
14 criar uma threaddo um É terminar uma threadque Threadspodem processo. mais rápido chavear entre threadsde um Profa. Patrícia Permite mesmo D. núcleo processo do que entre processos. organização CostaLPRM/DI/UFES já paralelismo que do compartilham programa. se comunicar de sem invocar o 14 atividades memória e melhor e Sistemas arquivos. Operacionais 2008/1 Benefícios das Threads
15 Estados fundamentais: executando, (1) pronta e bloqueada de uma Thread Profa. Patrícia D. CostaLPRM/DI/UFES 15 Sistemas Operacionais 2008/1
16 Thread Suspenderum mesmo threadsdeste pode processo? bloquear processo sem (considerando implica bloquear em suspender as que outras todas threads todas as do O endereçamento)? compartilham o mesmo espaço Profa. Patrícia D. threadsdo Swapping término CostaLPRM/DI/UFESprocesso. um processo implica no término de todas as 16 Sistemas Operacionais 2008/1 Estados de uma Thread (2)
17 Nível Apenas de usuário: kernel: em S.O.s kernel-levelthreads user-levelthreads(ults) c/ suporte a multithreading (KLTs) Profa. Patrícia D. CostaLPRM/DI/UFES 17 Sistemas Operacionais 2008/1 Tipos de Threads A implementação de threads pode ser feita em um dos seguintes níveis:
18 O aplicação gerenciamento núcleo desconhece das a threadsé existência feito de pela threads. O privilégio Isso chaveamento entre threadsnão requer Profa. Patrícia D. Um modo kernel CostaLPRM/DI/UFES escalonamento processo elimina o pode gasto entre é aplicar feito de threads dois pela chaveamentos aplicaçãode modo. 18sua própria política Sistemas de Operacionais 2008/1 User-level Threads (1)
19 São Chamada implementadas através de bibliotecas Não (executam ao sistema qualquer bloqueia S.O.). todas threadsde Exemplos: um multiprocessamento. processo. Profa. Patrícia D. POSIX aproveita CostaLPRM/DI/UFES Pthreads, os Mach benefícios C-threads do 19 esolaris Sistemas threads. Operacionais 2008/1 User-level Threads (2)
20 User-level Threads (3) biblioteca Profa. Patrícia D. CostaLPRM/DI/UFES de threads P espaço do 20 Sistemas Operacionais 2008/1 P thread nível usuário usuário espaço do núcleo P Processo
21 gerenciamento das threadsé feito pelo kernel. O processo kernelmantém a informação de contexto para (escalonamento e threads. O chaveamento das threadsé feito pelo kernel Profa. Patrícia D. As CostaLPRM/DI/UFES outras thread-basis ). multiprocessamento bloqueio threadspodem threadsdo de uma processo aproveitar threadnão implica no bloqueio das 21 a capacidade Sistemas de Operacionais 2008/1 Kernel-level Threads (1)
22 O usuário enxerga uma API para threadsdo... núcleo Não aplicação há código de gerenciamento de na área da Profa. Patrícia Windows de modo porém a transferência de controle entre threads abordagem. um kernel. mesmo processo requer chaveamento para D. CostaLPRM/DI/UFES 2K, Linux, e OS/2 22são exemplos Sistemas desta Operacionais 2008/1 Kernel-level Threads (2)
23 API-threads Profa. Patrícia D. CostaLPRM/DI/UFES Kernel-level Threads (3) P thread nível usuário thread nível núcleo Processo espaço do usuário 23 Sistemas Operacionais 2008/1 P espaço do núcleo
24 API-threads Profa. Patrícia D. CostaLPRM/DI/UFES P Combinando Modos (Solaris) thread nível usuário thread nível núcleo Processo biblioteca de threads P espaço do usuário 24 Sistemas Operacionais 2008/1 P espaço do núcleo
User-levele Kernel-levelThreads 25 Profa. Patrícia D. CostaLPRM/DI/UFES 25 Sistemas Operacionais 2008/1
26 Muitasuser-level threads Modelousado mapeadasem umaúnica kernel emsistemasque nãosuportam thread. kernel threads. Profa. Patrícia D. CostaLPRM/DI/UFES Modelo Muitos-para-Um 26 Sistemas Operacionais 2008/1
27 Cadauser-level Exemplos: únicakernel Windows thread. threadé 95/98/NT/2000 mapeadaemuma e OS/2 Modelo Um-para-Um Profa. Patrícia D. CostaLPRM/DI/UFES 27 Sistemas Operacionais 2008/1
28 Permite diferentes threadsde que user-level um Permite threadsdistintas. processo mapeadas possam em kernel Profa. Exemplos: um de número ao S.O. suficiente criar Patrícia Tru64UNIX'sWindows NT/2000com kernelthreads. ThreadFiberpackage. D. CostaLPRM/DI/UFES Solaris2, o Modelo Muitos-para-Muitos 28 Sistemas Operacionais 2008/1
29 API e sincronizaçãode padrão POSIX (IEEE threads(user-level 1003.1c) paraa threads). criação ComumemsistemasoperacionaisUNIX. API especificao comportamentodabiblioteca Ex: threads (a implementaçãoé tarefado Profa. Patrícia D. padrãopthreadshttp://pauillac.inria.fr/~xleroy/linuxthreads/ pacotelinuxthreads, queimplementao desenvolvedordabiblioteca). CostaLPRM/DI/UFES 29 Sistemas Operacionais 2008/1 Pthreads
30 Windows Implementao Cadathreadcontém: um. 2000 Threads modelode mapeamentoum-para- -um -áreasseparadasparauser id -áreaparaarmazenamentode register set stacke dados kernel privados. stack Profa. Patrícia D. CostaLPRM/DI/UFES 30 Sistemas Operacionais 2008/1
31 No Implementao A (tarefas). Linux as threadssãoreferenciadascomotasks Clone()permiteà sistema) modelode mapeamentoum-para-um. espaçode criaçãode threads é feitaatravésdasvc (chamadaao Na clone(). tarefafilhacompartilharo mesmo Profa. Patrícia D. O CostaLPRM/DI/UFES cópia, novo verdade, comono processoapontap/ endereçamentoquea é criadoum fork(); novo as processo, tarefapai(processo). masnãoé feitauma 31estruturasde dados Sistemas do Operacionais 2008/1 Linux Threads
32 Difícil As Threads thread threads de emjava classificar sãogerenciadaspelajvm. podemser com user criadasdas thread ou kernel Profa. Patrícia A seguintesmaneiras: Fazendo extend Implementandoa D. Criarum CostaLPRM/DI/UFES JVM daclassethread. nova sósuportaum JVM novo p/ rodaro processoemjava interface novo Runnable. 32processo implicaemcriaruma Sistemas Operacionais 2008/1 Java Threads
33 Especificação API JVM: Java MáquinaVirtual da linguagem Javade programação Java Componentes: Profa. Patrícia JVM: D. CostaLPRM/DI/UFES 33 Sistemas Operacionais 2008/1
34 Programas A independentes JVM Java compilados são bytecodes Carregador plataforma de execução da Verificador Interpretador JVM consiste de runtime classes de: (Class (Runtime verifier) loader) interpreter) Profa. Patrícia D. CostaLPRM/DI/UFES 34 Sistemas Operacionais 2008/1 JVM
35 Toda Do thread aplicação (sem considerar Java tem o pelo system menos thread) uma A começa thread. main ponto thread com de vista uma cria thread, do novas desenvolvedor, threads. chamada de o main programa Profa. Patrícia D. CostaLPRM/DI/UFES 35 Sistemas Operacionais 2008/1 Java Threads
36 Cada Duas classe thread: thread é associada com uma instância da Instanciando Thread. Delegando estratégicas possíveis para criar uma executor (high-level criação/gerência a classe Thread; concurrency da thread objects) para Profa. Patrícia D. CostaLPRM/DI/UFES 36 Sistemas Operacionais 2008/1 Java Threads (2)
37 A Passando fornecer aplicação o um código que objeto cria a ser instância Runnable executado de para Thread na o thread. construtor deve Exemplo de criação de Thread em Java da classe Thread: public class HelloRunnable implements Runnable { Profa. Patrícia D. CostaLPRM/DI/UFES 37 Sistemas Operacionais 2008/1 System.out.println("Hello from a thread!"); public void run() { } } } public static void main(string args[]) { (new Thread(new HelloRunnable())).start();
38 Fazendo subclass de Thread (que também Exemplo de criação de em Java (2) implementa Runnable) public class HelloThread extends Thread { Profa. Patrícia D. CostaLPRM/DI/UFES System.out.println("Hello 38 from a thread!"); Sistemas Operacionais 2008/1 } public void run() { } public static void main(string args[]) { } (new HelloThread()).start();
39 Thread.sleep(t) Thread.interrupted() Faz com que a thread suspenda a execução por um período. t.join() Interrompe Faz terminar a execução corrente da thread (para para com que ou a thread para fazer que t execute esteja outra (até coisa) executando terminar). suspenda Profa. Patrícia D. CostaLPRM/DI/UFES 39 Sistemas Operacionais 2008/1 Manipulando Threads em Java
40 Sincronização Segundo trabalho de threads de programação em Java Próxima aula Profa. Patrícia D. CostaLPRM/DI/UFES 40 Sistemas Operacionais 2008/1