Você está na página 1de 5

CAPTULO VI THREADS 6.

.1 INTRODUO At o final de dcada de 70, os sistemas operacionais suportavam apenas processos com um nico thread; O sistema operacional Toth, em 1979, foi o primeiro a implementar o conceito de thread. Porm, comercialmente, o primeiro sistema operacional a suportar threads foi o Mach, em 1980; O conceito de mltiplos threads ( multithread ) permitiu projetar e implementar aplicaes concorrentes de forma eficiente, pois um processo pode ter partes diferentes do seu cdigo sendo executadas em paralelo; Threads aumentam o desempenho da aplicao pois no envolvem mecanismos lentos de intercomunicao, j que compartilham o mesmo espao de endereamento.

6.2 AMBIENTE MONOTHREAD Um processo suporta apenas um programa no seu espao de endereamento; Implementa aplicaes concorrentes com o uso de mltiplos processos independentes ou subprocessos. O problema deste tipo de implementao que o uso de processos no desenvolvimento de aplicaes concorrentes demanda consumo de diversos recursos do sistema; Outro problema o compartilhamento do espao de endereamento. Como cada processo possui o seu prprio espao, a comunicao entre processos torna-se lenta e difcil, pois utiliza mecanismos como pipes, sinais, semforos, memria compartilhada ou troca de mensagem. O compartilhamento de recursos comuns aos processos concorrentes, como memria e arquivos abertos, tambm no simples. Exemplos de sistemas operacionais monothread: MS-DOS, primeiras verses do Microsoft Windows e verses antigas do UNIX.

6.3 AMBIENTE MULTITHREAD Programas no so associados a processos, mas sim, a threads; Um processo tem pelo menos uma thread em execuo, todavia, pode compartilhar seu espao de endereamento com inmeras threads;

Uma thread pode ser definida como uma sub-rotina de um programa que pode ser executada de forma assncrona, ou seja, executada paralelamente ao programa chamador; Threads compartilham o processador da mesma forma que processos e passam pelas mesmas mudanas de estado; Cada thread possui seu prprio contexto de hardware, porm, dentro de um mesmo processo, compartilham seus contextos de software e espao de endereamento. Threads so implementadas atravs de uma estrutura de dados denominada Thread Control Block ( TCB ); Como todas as threads de um processo acessam um mesmo espao de endereamento, no h qualquer proteo memria, permitindo que uma thread altere dados de outras. Para que threads trabalhem de forma cooperativa, fundamental que a aplicao implemente mecanismos de comunicao e sincronizao entre threads, a fim de garantir o acesso seguro aos dados compartilhados na memria; A utilizao de threads pode melhorar o desempenho da aplicao executando tarefas em background enquanto operaes E/S esto sendo processadas; Em ambientes cliente-servidor, threads so essenciais para solicitaes de servios remotos; O prprio ncleo do sistema operacional pode fazer uso do multithreading. Por exemplo, na arquitetura microkernel.

6.4 ARQUITETURA E IMPLEMENTAO Pacote de threads o conjunto de rotinas disponveis para que uma aplicao utilize as facilidades dos threads; Um pacote de threads pode ser implementado sob diversas abordagens em um sistema operacional, o que influi diretamente no desempenho, na concorrncia e na modularidade das aplicaes multithread; Threads podem ser oferecidas por uma biblioteca de rotinas fora do ncleo do sistema operacional ( modo usurio ), pelo prprio ncleo do sistema ( modo Kernel ), por uma combinao de ambos ( modo hbrido ) ou por um modelo conhecido como Scheduler Activations;

6.4.1 THREADS EM MODO USURIO ( TMU ) So implementadas pela aplicao e no pelo sistema operacional;

O sistema operacional no sabe da existncia de mltiplas threads, sendo responsabilidade exclusiva da aplicao gerenciar e sincronizar os diversos threads existentes. VANTAGENS: Permitem a implementao de threads mesmo em sistemas operacionais que no suportam threads; So rpidos e eficientes por dispensarem o acesso ao kernel do sistema;

DESVANTAGENS O sistema operacional gerencia o processo como se houvesse uma nica thread. Quando uma thread chama uma rotina do sistema que o coloca em estado de espera, todo o processo colocado em estado de espera, mesmo havendo outras threads prontas para execuo; Tratamento individual de sinais. Como o sistema operacional reconhece apenas processos e no threads, os sinais enviados para um processo devem ser reconhecidos e encaminhados a cada thread para tratamento; Reduo do grau de paralelismo. No possvel que mltiplos threads possam ser executados em diferentes UCPs simultaneamente. O sistema seleciona apenas processos para execuo e threads de um processo podem ser executadas somente em um processador de cada vez.

6.4.2 THREADS EM MODO KERNEL ( TMK ) So implementadas diretamente pelo ncleo do sistema operacional;

VANTAGENS: O sistema operacional sabe da existncia de cada thread e pode escalon-las individualmente; Caso haja mltiplos processadores, threads de um mesmo processo podem ser executadas simultaneamente;

DESVANTAGENS: Baixo desempenho. Enquanto nos pacotes em modo usurio todo o tratamento feito sem a ajuda no sistema operacional, no modo kernel so utilizadas chamadas a rotinas do sistema e, conseqentemente, h vrias mudanas no modo de acesso;

6.4.3 THREADS EM MODO HBRIDO Combina vantagens de threads implementadas em modo usurio ( TMU ) e threads em modo Kernel ( TMK ); Um processo pode ter vrios TMK e, por sua vez, um TMK pode ter vrios TMU;

Um TMU pode ser executado em um TMK e, em um instante seguinte, ser executado em outro;

VANTAGENS Maior flexibilidade

DESVANTAGENS: Apresenta problemas herdados de ambas implementaes. Por exemplo, uma chamada de bloqueio de uma TMK bloqueia todos os TMU, que so colocados em espera; TMUs que precisam utilizar diferentes processadores precisam utilizar diferentes TMK, o que reduz o desempenho.

6.4.4 SCHEDULER ACTIVATIONS Os problemas apresentados no pacote de threads em modo hbrido existem devido falta de comunicao entre os threads em modo usurio e modo kernel; Usa o melhor do modo usurio e do modo kernel, atravs de uma estrutura de dados chamada scheduler activations; Alcana um melhor desempenho evitando mudanas de modos de acesso que no sejam necessrias; Caso uma thread utilize uma chamada ao sistema que o coloque no estado de espera, no necessrio que o kernel seja ativado, basta que a prpria biblioteca escalone outra thread; Bibliotecas em modo usurio e kernel se comunicam, trabalhando de forma cooperativa;

6.5 MODELOS DE PROGRAMAO O desenvolvimento de aplicaes multithread no simples, pois exige que a comunicao e o compartilhamento de recursos entre as diversas threads sejam feitos de forma sincronizada para evitar inconsistncias e deadlock; O nmero mximo de threads um fator importante. Caso um nmero muito grande seja criado, poder haver um overhead no sistema, ocasionando uma queda de desempenho; O nmero de threads pode ser dinmico ou esttico; Para permitir a implementao de threads, uma aplicao deve permitir que partes diferentes do seu cdigo sejam executadas em paralelo, de forma independente. Exemplos de aplicaes de multithreading:

o o

SGBDs Servidores de arquivos ou impresso

Você também pode gostar