Académique Documents
Professionnel Documents
Culture Documents
SISTEMAS
email: fabioaugusto08@gmail.com
THREADS
Um
processo representa uma sequncia de instrues nica, executada paralelamente a outra seqncias de instrues. thread uma maneira de um programa dividir a si mesmo em duas ou mais tarefas simultneas.
Um
AMBIENTE MONOTHREAD
Um
programa uma seqncia de instrues, composta por desvios, repeties e chamadas a procedimentos e funes. Em ambiente monothread, um processo suporta apenas um programa no seu espao de endereamento.
AMBIENTE MONOTHREAD
Neste
ambiente, aplicaes concorrentes so implementadas apenas com o uso de mltiplos processos independentes ou subprocessos. Esta utilizao permite dividir uma aplicao em partes que podem trabalhar de forma concorrente.
AMBIENTE MONOTHREAD
Exemplo:
Uso de software de gerenciamento de e-mails. Neste ambiente, um usurio pode estar lendo suas mensagens antigas, ao mesmo tempo que pode estar enviando e-mails e recebendo novas mensagens.
Com
o uso de mltiplos processos, cada funcionalidade do software implicaria a criao de um novo processo para atend-la, aumentando o desempenho da aplicao.
AMBIENTE MONOTHREAD
Subprocessos
Processos Independentes
AMBIENTE MONOTHREAD
O
problema neste tipo de implementao que o uso de processos no desenvolvimento de aplicaes concorrentes demanda consumo de diversos recursos do sistema. Sempre que um novo processo criado, o sistema deve alocar recursos para cada processo.
AMBIENTE MONOTHREAD
Outro
problema a ser considerado quanto ao compartilhamento do espao de endereamento. Cada processo possui seu prprio espao de endereamento, a comunicao entre processos torna-se difcil e lenta, pois utiliza mecanismos como pipes, sinais, semforos, memria compartilhada ou troca de mensagem.
AMBIENTE MONOTHREAD
Na
figura abaixo existem trs processos monothreads, cada um com seu prprio contexto de hardware, contexto de software e espao de endereamento.
Thread
Thread
Thread
AMBIENTE MONOTHREAD
So
exemplos de sistemas monothread o Microsoft MS-DOS e as primeiras verses do MS-Windows. Mesmo em ambientes multiprogramveis e multiusurio, encontramos exemplos de implementaes monothread, como nas verses mais antigas dos sistemas VAX/VMS e Unix .
AMBIENTE MULTITHREAD
No
existe a idia de programas associados a processos , mas, sim, a threads. O processo, neste ambiente, tem pelo menos um thread de execuo, mas pode compartilhar o seu espao de endereamento com inmeros outros threads.
AMBIENTE MULTITHREAD
Contexto de hardware
Contexto de software
Contexto de hardware
Contexto de hardware
Thread 1
Thread 3
AMBIENTE MULTITHREAD
De
forma simplificada, um thread pode ser definido como uma sub-rotina de um programa que pode ser executada de forma assncrona, ou seja, executada paralelamente ao programa chamador. Desta forma um ambiente multithread possibilita a execuo concorrente de sub-rotinas dentro de um mesmo processo.
AMBIENTE MULTITHREAD
Na
figura abaixo existe um programa principal que realiza a chamada de duas sub-rotinas assncronas (Sub_1 e Sub_2). Inicialmente, o processo criado apenas com o Thread_1 para execuo do programa principal. Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, so criados os Thread_2 e Thread_3, respectivamente, e executados independentemente do programa principal. Neste processo, os trs threads so executados concorrentemente.
AMBIENTE MULTITHREAD
Processo Espao de endereamento
Variveis
...
PC SP
Sub_1
PC SP
Sub_2
PC SP
Ret
...
Contexto de Hardware
Ret
Thread_3
Contexto de Hardware
Fim
Thread_2
Contexto de Hardware
Thread_1
AMBIENTE MULTITHREAD
No
ambiente multithread, cada processo pode responder a vrias solicitaes concorrentemente ou mesmo simultaneamente, caso haja mais de um processador. Grande vantagem no uso de threads a possibilidade de minimizar a alocao de recursos do sistema, alm de diminuir o overhead na criao, troca e eliminao de processos.
AMBIENTE MULTITHREAD
Threads
compartilham o processador da mesma maneira que processos e passam pelas mesmas mudanas de estado. Exemplo:
Enquanto um thread espera por uma operao de E/S, outro thread pode ser executado.
AMBIENTE MULTITHREAD
A
grande diferena entre aplicaes monothread e multithread est no uso do espao de endereamento. Processos independentes e subprocessos possuem espaos de endereamento individuais e protegidos, enquanto threads compartilham o espao dentro de um mesmo processo.
AMBIENTE MULTITHREAD
Esta
caracterstica permite que o compartilhamento de dados entre threads de um mesmo processo seja mais simples e rpido, se comparado a ambientes monothreads. Como threads de um mesmo processo compartilham o mesmo espao de endereamento, no existe qualquer proteo no acesso memria, permitindo que um thread possa alterar facilmente dados de outros.
AMBIENTE MULTITHREAD
O
uso de multithreads proporciona uma srie de benefcios. Programas concorrentes com mltiplos threads so mais rpidos do que programas concorrentes implementados com mltiplos processos, pois operaes de criao, troca de contexto e eliminao dos threads geram menor overhead.
AMBIENTE MULTITHREAD
AMBIENTE MULTITHREAD
A
utilizao do processador, dos discos e de outros perifricos pode ser feita de forma concorrente pelos diversos threads, significando melhor utilizao dos recursos computacionais disponveis. Em algumas aplicaes, a utilizao de threads pode melhorar o desempenho da aplicao apenas executando tarefas em background enquanto operaes de E/S esto sendo processadas.
AMBIENTE MULTITHREAD
Aplicaes
como editores de texto, planilhas, aplicativos grficos e processadores de imagens so especialmente beneficiados quando desenvolvidos com base em threads. Em ambientes cliente-servidor, threads so essenciais para solicitaes de servios remotos.