Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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.
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