23 de jul. de 2015

Threads

THREADS

Esse período da Faculdade eu encontrei certas dificuldades em determinadas disciplinas e tópicos, uma delas foi sobre Threads em Sistemas Operacionais, portanto resolvi pesquisar para entender melhor. E por que não compartilhar tais pesquisas com as pessoas, né?
Então chega de papo e vamos ao que interessa!


Os processos possuem uma série de características tais como, 
Contexto de Software, contexto de Hardware, espaço de endereçamento, etc.
Além das características há associado a um processo um FLUXO DE EXECUÇÃO,
que este é conhecido como THREADS. Os primeiros Sistemas Operacionais eram

Monothread

Processos Monothreads
São exemplos: MS-DOS, MS-Windows,Mesmo em ambientes
multiprogramáveis e multiusuário,encontramos exemplos de implementações
monothread, como nas versões mais antigas dos sistemas VAX/VMS e Unix. Nesses sistemas cada processo tinha o seu espaço de endereçamento
individual e era associado a um único fluxo de execução.

Pode-se dizer que Thread é uma maneira do processo dividir a si mesmo em duas
ou mais tarefas simultâneas.Esta utilização permite dividir uma aplicação 
em partes que podem trabalhar de forma concorrente.
Com o uso de múltiplos processos, cada funcionalidade do software implicaria a
criação de um novo processo ou subprocesso para atendê-la, aumentando o 
desempenho da aplicação.

Mas nem tudo é alegria, essa divisão dos processos podem causar alguns problemas:


O uso de processos no desenvolvimento de aplicações concorrentes 
demanda consumo de diversos recursos do sistema.
Sempre que um novo processo é criado, o sistema deve alocar recursos para cada
processo.
Quanto ao compartilhamento do espaço de
endereçamento. Cada processo possui seu próprio espaço de endereçamento
(como visto acima), a comunicação entre processos torna-se difícil e lenta, 
pois utiliza mecanismos como pipes, sinais, semáforos, memória compartilhada 
ou troca de mensagem. (farei uma matéria separada para tais mecanismos)


MultiThreading

MultiThreading
Em Sistemas MultiThreading, um único processo pode estar associado a vários 
Threads. Como as Threads existem no interior do processo, todas compartilham o mesmo espaço de endereçamento(código e dados).Com esse  compartilhamento o gerenciamento de processos das aplicações concorrentes fiquem mais eficientes devido a drástica diminuição de tempo gasto com a criação, eliminação e troca de contextos destes processos.A troca de um thread por outro
dentro de um mesmo processo é muito mais rápida que a troca entre dois processos.
Um exemplo dessa utilização de threads pode ser dado através da execução de um
vídeo com som em inglês e legendas em português, assim você terá um Thread para 
tratar da execução da imagem, um para execução do som e um para legenda.

Exemplo de um Processo MultiThreading

A grande diferença entre aplicações Monothread e Multithread está no uso do
espaço de endereçamento. Processos independentes e subprocessos
possuem espaços de endereçamento individuais e protegidos, enquanto threads
compartilham o espaço dentro de um mesmo processo.



Nenhum comentário:

Postar um comentário