Vous êtes sur la page 1sur 24

OPERACIONAIS

CAPTULO 3b: THREADS


Prof. Fabio Augusto Oliveira www.fabioliveira.com.br Curso de Sistemas de Informao
2

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 2 Espao de endereamento

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

...

Programa Principal Call Sub_1 Call Sub_2

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

Implementao Processo Processo Lightweight Thread

Tempo de Criao (s) 1700 350 52

Tempo de sincronizao (s) 200 390 66

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.

Vous aimerez peut-être aussi