Você está na página 1de 2

Sntese: Multithreads

Multihread a tcnica de programao que se d s aplicaes que utilizam mais de um ncleo de processamento
ao mesmo tempo, partes da mesma aplicao so executadas simultaneamente.
Sua implementao complexa, pois envolve problemas quanto comunicao e sincronizao de threads.
Existem modelos de implementao diversos, devem ser levados em considerao, fatores como desempenho,
flexibilidade e custo.
A tcnica de multithread teve como base o conceito de multiprogramao e time-sharing, que simulava processos
simultneos em um nico ncleo, alternando a execuo de cada processo.
Os processos podem ser exemplificados de forma simples como sendo o programa em execuo. No conceito de
multiprogramao, o processador possui registradores responsveis por armazenar informaes de cada processo, e
realizar a alternncia de cada um sem perder as informaes de contexto dos que ainda esto na fila de execuo,
com essa alternncia, o usurio tinha a sensao de que havia um processador trabalhando exclusivamente para ele.
Esse tipo de processamento sem threads se deu at o final da dcada de 70, em 1979 foi introduzido o conceito de
processos lightweigh, onde o espao de endereamento dos processos poderia sem compartilhado por vrios
programas, porm a ideia no foi bem aceita, somente no prximo ano o conceito foi melhor entendido e utilizado
at hoje.
Anteriormente ao ambiente multithread, um programa era projetado como uma sequncia de instrues, composto
por desvios e iteraes, os processos eram executados um por vez, assim como as suas instrues, esse ambiente
chamado de monothread, caso fosse necessrio criar aplicaes concorrentes e paralelas seriam implementados
mltiplos processos independentes ou subprocessos, porm esse tipo de ambiente trazia dois problemas: demanda
de diversos recursos do sistema e consumo de tempo de UCP, deixando o sistema sobrecarregado e lento, alm dos
problemas com comunicao entre processos e subprocessos que aumentavam o tempo de resposta.
Visto a necessidade de reduzir o consumo dos recursos e tempo de resposta do sistema, alm de executar aplicaes
simultneas, foi estudado, desenvolvido e aplicado o conceito e ambiente de multithreads.
Nesse ambiente, cada processo pode responder a vrias solicitaes concorrentemente ou at simultaneamente se
houver mais de um processador, cada processo pode ter vrios threads em execuo, os threads so como linhas
que podem ser executadas concorrente ou simultaneamente, tendo comportamento parecido com o de um
processo no que se diz respeito alternncia de execuo e mudana de estados, pois cada um possui seus prprios
contextos, porm compartilhando de um mesmo espao de endereamento, temporizadores e arquivos de forma
natural e eficiente e podendo alterar dados de outros threads e trabalharem em conjunto de forma muito mais
eficiente que processos e subprocessos.
As vantagens desse ambiente so principalmente a rapidez e utilizao dos recursos optimizada, gerando um ganho
de desempenho. O escalonamento dos threads em ambientes com mltiplos processadores realizado de acordo
com a prioridade de cada thread, dispensando a necessidade dos desenvolvedores de programar esse
escalonamento, devendo esse, somente determinar a prioridade de cada um de acordo com a sua importncia,
como ordenao e pesquisa.
Em solicitaes de servios remotos, ambientes distribudos tambm tem uma enorme vantagem sobre os
monothread, pois a aplicao continua realizando outras tarefas enquanto aguarda o retorno da sua silicitao.
Sistemas operacionais tambm podem fazer uso dos multithreads quando o kernel do sistema multitarefa.
As chamadas dos threads so chamadas de threads package, ele possui diversas formas de implementao, que
influenciar em pontos diversos do sistema.
Threads podem ser providos de diversas formas:
pelo ncleo do sistema, por uma biblioteca de rotinas fora desse ncleo, por uma combinao de ambos, entre
outras arquiteturas para diferentes SOs.

O modelo que utiliza as bibliotecas de rotinas, conhecido como thread em modo usurio, essas rotinas so linkadas e
carregadas em tempo de execuo. Os threads so gerenciados por essas rotinas. Alm de serem rpidos e eficientes
por dispensarem o acesso ao kernel, a biblioteca tambm oference todo o sporte ao usurio, sem a necessidade de
chamadas ao sistema.
Apesar das vantagens, threads em modo usurios so difceis de implementar.

Threads em modo kernel so implementadas diretamente pelo ncleo do sistema, por chamadas ao sistema (system
calls)
que oferecem todas as funes de gerenciamento e sincronizao (Fig. 6). O sistema operacional (escalonador) sabe
da
existncia de cada thread e pode escalona-los individualmente. No caso de mltiplos processadores, os threads de
um
mesmo processo podem ser executados simultaneamente.
Fig. 6 Threads em modo kernel
Os problemas apresentados para a implementao de pacotes em modo usurio no so encontrados neste modelo,
como
compartilhamento de variveis, tratamento de sinais, chamadas sncronas, escalonamento em mltiplos
processadores etc.
O grande problema para pacotes em modo kernel o seu desempenho, sendo da ordem de dez vezes mais lento
que o modo
usurio. Enquanto que pacotes em modo usurio todo tratamento feito sem a ajuda do sistema operacional, ou
seja, sem a
mudana do modo de acesso (usurio-kernel-usurio), pacotes em modo kernel utilizam chamadas ao sistema e
conseqente
mudana de modo de acesso