Você está na página 1de 7

Uma das palavras mais misteriosas nesse sentido a thread.

No que
se refere a hardware, essa palavra apareceu no Brasil quando
surgiram os primeiros modelos de processador com mltiplos ncleos.
A princpio era fcil compreender que um dual-core tinha dois ncleos.
Entretanto, com a evoluo das arquiteturas nas CPUs, surgiu o
suporte para mltiplos threads (multithreading). E a que muitas
pessoas se perguntaram o que realmente mudava. Afinal, o que
essa palavra? Faz diferena um processador trabalhar com o dobro de
threads? Isso o que vamos explicar agora!

A execuo de um programa
Antes de falarmos exatamente sobre os threads, precisamos entender
como os processadores e os sistemas operacionais trabalham com os
aplicativos. Basicamente, a execuo de um programa d-se, em um
primeiro instante, em uma ao do sistema operacional. Quando o
usurio abre um aplicativo, o sistema operacional interpreta a ao e
requisita que os arquivos relacionados a esse software sejam
executados.
Claro que qualquer atividade do sistema operacional est sujeita
operao do processador. Todavia, antes que um programa esteja
aberto e realmente requisite o trabalho em massa da CPU, ele
apenas carregado na memria RAM, o que no exige uma atividade
do processador.

Ao efetuar o carregamento de um programa, o sistema operacional


trabalha com processos. Cada software possui um processo (alguns
utilizam rvores de processos), cada qual com respectivas instrues
para o processador saber como proceder na hora de efetuar os
clculos.

Os processos e as threads
Os chamados processos so mdulos executveis, os quais contm
linhas de cdigo para que a execuo do programa seja realizada
apropriadamente. Isso quer dizer que o processo uma lista de
instrues, a qual informa ao processador que passos devem ser
executados e em quais momentos isso acontece.
Os processadores trabalham muito bem com os processos, mas a
execuo de muitos processos simultaneamente acarreta na lentido
da CPU. Isso ocorre porque, mesmo um processador tendo dois ou
mais ncleos, existe um limite para ele.
Uma CPU com dois ncleos, por exemplo, pode trabalhar com dois
processos simultaneamente. No entanto, se voc pressionar as teclas
Ctrl + Shift + Esc, vai verificar que o sistema operacional trabalha
com dezenas de processos ao mesmo tempo. No entanto, tudo parece
rodar perfeitamente na sua tela.

Explicar isso bem simples. Suponha que estamos tratando de uma


CPU com dois ncleos. Em teoria, ela capaz de executar dois
programas ao mesmo tempo. Contudo, voc est com seis programas
abertos e todos respondendo em tempo real.
O processador consegue trabalhar com todos os aplicativos e
apresentar resultados satisfatrios devido velocidade de
processamento. Sendo assim, parece que os processos so
executados simultaneamente.
A princpio, a presena de mltiplos ncleos era suficiente para a
maioria dos usurios. Todavia, a evoluo dos softwares e dos
componentes de hardware requisitou uma diviso ainda melhor das
tarefas. As linhas de instrues dos processos adquiriram
caractersticas nicas, que possibilitaram separ-las para execues
em diferentes ncleos.

Essas linhas de instrues ficaram conhecidas como threads, mas


muita gente preferiu traduzir a palavra thread para tarefa. A questo
que o nome em si no faz diferena, visto que, de certa maneira,
uma linha de instruo uma tarefa que o processador dever
realizar. Entretanto, algumas coisas mudaram no processador.

As threads nos processadores


Enfim, chegamos ao ponto que interessa. Como j vimos, a thread
uma diviso do processo principal de um programa. Todavia, nem
todos os processos so divididos em mltiplas threads, assim como
nem todos os processadores so capazes de trabalhar
tranquilamente com uma enormidade de threads.
Os mais recentes processadores vm com especificaes quanto aos
ncleos e s threads. E como saber o que exatamente isso significa?
Vamos tomar como exemplo o processador Intel Core i7 2600.
Verificando no site da fabricante, temos a informao de que esse
modelo vem com quatro ncleos e tem suporte para trabalhar com at
oito threads.

Isso quer dizer que essa CPU pode trabalhar com quatro processos
indivisveis simultaneamente (um em cada ncleo) ou com at oito
linhas de execuo (threads) as quais podem ou no ser de um
mesmo processo. Saber como cada aplicativo executado dentro do
processador no to simples, mas o que importa ter noo de que
existem aplicativos que sero executados de uma maneira mais
satisfatria nas CPUs mais novas.
Vale ressaltar que no garantido que um processador multithread
sempre apresente maior desempenho. Contudo, a chance de aumento
na eficincia grande, pois, tendo suporte para trabalhar com
mltiplas threads, mais provvel que a CPU execute mais
programas ao mesmo tempo.

E a evoluo continua
Agora que voc j sabe os conceitos bsicos sobre o que uma
thread e como ela influencia no desempenho do computador, talvez
fique fcil compreender como sero os prximos processadores, que
devero vir com mais ncleos e com suporte para a execuo de mais
threads.

Threads Mltipos processos.

So mecanismos que aumentam a eficincia do sistema operacional


reduzindo o overhead causado pela troca de contexto dos processos. Elas podem ser
vistas como a menor unidade de execuo do sistema e compartilham todos os recursos
com o processo que as criou. Cada thread possui seu prprio contexto de hardware,
mas compartilha o mesmo contexto de software e espao de endereamento com os
demais threads do processo.
Em sistemas com threads, um processo com exatamente uma thread
equivalente a um processo clssico. Cada thread pertence a exatamente um nico
processo. Sob o ponto de vista de threads, processos so estticos e apenas as threads
so escalonadas para execuo. Cada thread representa um fluxo de controle separado
com sua pilha e seu estado da mquina. Como todos os recursos, exceto o processador
so controlados pelo processo que cria a thread, o chaveamento da UCP entre threads
mais rpido e eficiente. Entretanto, o chaveamento entre threads de processos
diferentes gastam um tempo maior, pois envolve todo o processo de troca de contexto.
Threads so eficientes para a explorao de concorrncia dentro de uma
aplicao e podem se comunicar usando a memria comumente compartilhada. Deve
ser tomado muito cuidado no que diz respeito sincronizao a regies crticas.
Conforme visto na Seo 2.4.3, os primeiros sistemas operacionais
suportavam
apenas uma tarefa por processo. medida em que as aplicaes se
tornavam mais complexas, essa limitao se tornou um claro
inconveniente.
Por exemplo, um editor de textos geralmente executa tarefas
simultneas
de edio, formatao, paginao e verificao ortogrfica sobre a
mesma
massa de dados (o texto sob edio). Da mesma forma, processos
que
implementam servidores de rede (de arquivos, bancos de dados, etc.)
devem
gerenciar as conexes de vrios usurios simultaneamente, que
muitas
vezes requisitam as mesmas informaes. Essas demandas
evidenciaram a
necessidade de suportar mais de uma tarefa operando no mesmo
contexto,

ou seja, dentro do mesmo processo.


De forma geral, cada fluxo de execuo do sistema, seja associado a
um processo ou no interior do ncleo, denominado thread. Threads
executando dentro de um processo so chamados de threads de
usurio
(user-level threads ou simplesmente user threads). Cada thread de
usurio
corresponde a uma tarefa a ser executada dentro de um processo. Por
sua vez, os fluxos de execuo reconhecidos e gerenciados pelo
ncleo do
sistema operacional so chamados de threads de ncleo (kernellevel threads
ou kernel threads). Os threads de ncleo representam tarefas que o
ncleo
deve realizar. Essas tarefas podem corresponder execuo dos
processos
no espao de usurio, ou a atividades internas do prprio ncleo,
como
drivers de dispositivos ou tarefas de gerncia.
Os sistemas operacionais mais antigos no ofereciam suporte a
threads
para a construo de aplicaes. Sem poder contar com o sistema
operacional,
os desenvolvedores de aplicaes contornaram o problema
construindo
bibliotecas que permitiam criar e gerenciar threads dentro de cada
processo,
sem o envolvimento do ncleo do sistema. Usando essas bibliotecas,
uma
aplicao pode lanar vrios threads conforme sua necessidade, mas
o ncleo
do sistema ir sempre perceber (e gerenciar) apenas um fluxo de
execuo
dentro de cada processo. Por essa razo, esta forma de
implementao
de threads nomeada Modelo de Threads N:1: N threads no
processo,
mapeados em um nico thread de ncleo. A Figura 2.10 ilustra esse
modelo.