Está en la página 1de 7

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 tornase 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 escalonlas
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:

También podría gustarte