Vous êtes sur la page 1sur 35

Multiprocessamento Simtrico Sistema Distribudo Multincleo Thread Multitarefa

Sumrio Multiprocessamento Simtrico ......................................................................... 4 Funcionamento ........................................................................................... 4 Gerenciamento ........................................................................................... 5 Vantagens ................................................................................................. 5 Tecnologias ................................................................................................ 5 Sistema de processamento distribudo.............................................................. 6 Desenvolvimento ........................................................................................ 6 Arquitetura ................................................................................................ 7 Solues .................................................................................................... 7 Multincleo ................................................................................................... 7 Descrio ................................................................................................... 8 Surgimento ................................................................................................ 8 Incentivos Comerciais ................................................................................. 9 Vantagens ................................................................................................. 9 Desvantagens ............................................................................................ 9 Arquitetura ...............................................................................................10 Exemplos de Hardware ...............................................................................10 Futuro da Tecnologia Multicore ....................................................................11 Thread ........................................................................................................12 Exemplo ...................................................................................................12 Particularidades .........................................................................................12 Estados de uma linha de execuo ...............................................................13 ULT e KLT .................................................................................................13 Criar (thread creation) .............................................................................14 Terminar (thread termination) ..................................................................15 Sincronizar(Thread Join) ..........................................................................15 Thread Yield (Rendimento da thread) ........................................................15 Escalonamento ..........................................................................................16 Linha de execuo ao nvel do usurio .......................................................16 Linha de execuo ao nvel do ncleo ........................................................16 Comparao entre linha de execuo e Processo ............................................17 Modelo de Gerao de Multithreads ..............................................................18 Modelo Muitos-Para-Um ...........................................................................18 Modelo Um-Para-Um ...............................................................................18 Modelo Muitos-Para-Muitos .......................................................................18

Cancelamento ...........................................................................................18 Exemplos ..................................................................................................18 Java ......................................................................................................18 Java, exemplo simples em portugus ........................................................20 C ..........................................................................................................22 C++ ......................................................................................................22 Ruby .....................................................................................................23 Delphi....................................................................................................23 Multitarefa ...................................................................................................26 Histria ....................................................................................................26 Tarefas .....................................................................................................27 Alternncia de tarefas ................................................................................27 No Mundo das Placas-me para PCs ................................................................27 As melhores marcas ...................................................................................29 Placas-me multi CPUs ...............................................................................29 Placas-me multi CPUs/GPUs ......................................................................30 Componentes integrados nas placas-me .....................................................30 Os tipos de placas-me ..............................................................................31 Os Fabricantes e Marcas de placas-me ........................................................31 As melhores marcas Quais so elas? .........................................................31 Os fabricantes de placas-me Quais so? ...................................................32 Os fabricantes de hardware Quais so? ......................................................32 Tecnologia SMP (Symmetric Mult Processing) ................................................32 Alguns termos tcnicos usados ....................................................................33

Multiprocessamento Simtrico
O multiprocessamento simtrico ou SMP (Symmetric Multi-Processing) ocorre em um sistema computacional com vrios processadores com memria compartilhada sob controle de um nico sistema operacional. Em contraste o multiprocessamento assimtrico emprega sistemas diferentes. O multiprocessamento simtrico oferece um aumento linear na capacidade de processamento a cada processador adicionado. No h necessariamente um hardware que controle este recurso, cabe ao prprio sistema operacional suportlo. Este mtodo tambm chamado de "processamento paralelo".

Funcionamento
Os processadores trabalham sozinhos compartilhando os recursos de hardware, geralmente so processadores iguais, similares ou com capacidades parecidas. Todos tem os mesmos privilgios de acesso ao hardware, ao contrrio do que acontece em sistemas multiprocessados assimtricos, onde um processador encarregado de gerenciar e coordenar as tarefas e aes dos demais, o que pode proporcionar melhor controle sobre a sobrecarga ou a ociosidade dos processadores subordinados. Por tratar todos os processadores de forma igualitria, no multiprocessamento simtrico, qualquer processador pode assumir as tarefas realizadas por qualquer outro processador, as tarefas so divididas e tambm podem ser executadas de modo concorrente em qualquer processador que esteja disponvel. Os acessos dos processadores aos dispositivos de entrada e sada e a memria so feitos por um mecanismo de intercomunicao constitudo por um barramento nico. A memria principal da mquina compartilhada por todos os processadores atravs de um nico barramento que os interliga, de modo que esse acesso a memria nativo, no existe a necessidade de um mascaramento da memria real a nvel de aplicao. Por todo acesso memria principal ser realizado atravs de um nico barramento, aqui temos um ponto de gargalo do sistema, pois o acesso serial, ou seja, o sistema fica limitado a passagem de apenas uma instruo de cada vez pelo barramento, abrindo uma lacuna de tempo entre uma instruo e outra. Memrias caches junto aos processadores diminuem o tempo de latncia entre um acesso e outro memria principal e ajudam tambm a diminuir o trfego no barramento. Como estamos falando em mais de um processador, cada um com sua memria cache imprescindvel garantir que os processadores sempre acessem a cpia mais recente da memria cache, isso se chama coerncia de cache geralmente implementada diretamente por hardware. Um dos mtodos de coerncia de cache mais conhecido o snooping, quando um dado compartilhado nas caches dos processadores alterado, todas as cpias das caches so consideradas invlidas e logo aps atualizadas mantendo assim a integridade do dado.

Gerenciamento
O sistema operacional quem se encarrega de realizar a interao entre os processadores e as aplicaes do sistema. Deixando a existncia de mltiplos processadores transparente para os usurios, pois o prprio sincroniza os processos com os processadores. Mesmo as arquiteturas de SMP j existirem h muitos anos no mercado, at pouco tempo os sistemas no tinham uma padronizao para as funes bsicas de operao, cada sistema implementava suas prprias funes. O que tornava impossvel que os sistemas operacionais fossem portveis. A partir dessa necessidade foi criada a MPS (Especficaes da Intel para Multiprocessadores ou do ingls - Intel's Multiprocessor Specification), com o objetivo de padronizar o desenvolvimento de SOs que suportassem essas arquiteturas. A criao da MPS fez com que a Intel sasse na frente no desenvolvimento da tecnologia multicore.

Vantagens
Sistemas de multiprocessamento simtrico so considerados mais poderosos em relao aos de multiprocessamento assimtricos, abaixo alguns descritivos de comparao entre eles. No multiprocessamento simtrico muitos processos podem ser executados ao mesmo tempo sem queda no desempenho, pois o sistema operacional delega as instrues a cada processador; Se um processador falhar o sistema no tranca pois qualquer outro processador pode assumir as tarefas daquele que falhou, j no assimtrico por exemplo, se o processador mestre falhar o sistema trava; No SMP o usurio pode melhorar o desempenho da mquina simplesmente adicionando um processador.

Tecnologias
Antigamente para utilizar SMP era necessrio hardware especfico, placas-me com dois ou mais soquetes de CPU, grandes estruturas de servidores clusterizados. Hoje em dia com a tecnologia multi-core, as fabricantes j integram tudo isso em apenas um dispositivo fsico, tambm conhecidos como processadores multi-core. Alguns exemplos de processadores multi-core: Intel Xeon; Intel Core (2,2 Duo,i3,i5,i7) Intel Pentium D; Intel Itanium; AMD Athlon 64 ou X2; Opteron 200 e 2000 processadores da srie; UltraSPARC da Sun Microsystems; Fujitsu SPARC64 III; Hewlett Packard PA-RISC; 5

IBM POWER; PowerPC Apple Computer(G4 e sries G5);

Sistema de processamento distribudo


Um sistema de processamento distribudo ou paralelo um sistema que interliga vrios ns de processamento (computadores individuais, no necessariamente homogneos) de maneira que um processo de grande consumo seja executado no n "mais disponvel", ou mesmo subdividido por vrios ns. Conseguindo-se, portanto, ganhos bvios nestas solues: uma tarefa qualquer, se divisvel em vrias subtarefas pode ser realizada em paralelo. A nomenclatura geralmente utilizada neste contexto HPC (High Performance Computing) e/ou DPC (Distributed/Parallel Computing).

Desenvolvimento
Este um assunto muito vasto e, embora com alguma idade, s em 2001 se comeou a falar em padres para estas solues, que so utilizadas (em larga escala) geralmente nos meios cientficos e outros de clculo intensivo pela sua extensibilidade. So bastante flexveis, j que permitem a coexistncia de sistemas desenhados especificamente para isso (por exemplo, a arquitectura NUMA), de sistemas desktop, e mesmo de sistemas considerados obsoletos, mas no o suficiente para permitir a coexistncia de solues semelhantes.

Antes de avanar, ser necessrio distinguir um sistema de multiprocessamento paralelo (SMP) de um sistema distribudo. Para um sistema ser de processamento distribudo, uma ou vrias unidades de processamento (CPU) estar separada fisicamente da(s) outra(s), enquanto que num sistema SMP todas as unidades de processamento se encontram na mesma mquina. Ambos sistemas so capazes de processamento paralelo, e qualquer um deles pode ser visto como elemento de um sistema distribudo! Com os desenvolvimentos nesta rea, surgiram solues por software que fazem, geralmente (mas no necessariamente), alteraes no ncleo do sistema operativo e que, na maioria dos casos, no so compatveis entre elas, e dificilmente entre verses diferentes da mesma soluo. Assentam, no entanto, em arquitecturas de comunicao padro, como o caso da Parallel Virtual Machine e Message Passing Interface. Resumidamente, estas arquitecturas conseguem transportar um processo (tarefa) e o seu contexto (ficheiros abertos, etc.) pela rede at outro n. O n que originou o processo passa, assim, a ser apenas um receptor dos resultados desse processo. Atualmente, a principal barreira destes sistemas implementar mecanismos de Inter-Process Communication (IPC), os Distributed IPC, dada a sua extrema complexidade.

Arquitetura
A Figura 1 ilustra as vrias camadas de interoperabilidade de um sistema distribudo. Atravs do gateway a rede pblica tem acesso a um supercomputador, sem ter conhecimento disso, dado que s conhece o gateway. Qualquer aplicao executada no gateway (preparada para ser paralelizada) pode ser distribuda por vrios ns, entregando os resultados mais rpido do que se fosse processada por apenas um n.

Solues
Software Scyld (Beowulf) openMosix openSSI Open Source Cluster Application Resources (OSCAR)

Multincleo
Multincleo (mltiplos ncleos, do ingls multicore) consiste em colocar dois ou mais ncleos de processamento (cores) no interior de um nico chip. Estes dois ou mais ncleos so responsveis por dividir as tarefas entre si, ou seja, permitem trabalhar em um ambiente multitarefa. Em processadores de um s ncleo, as funes de multitarefa podem ultrapassar a capacidade da CPU, o que resulta em queda no desempenho enquanto as operaes aguardam para serem processadas. Em processadores de mltiplos ncleos o sistema operacional trata cada um desses ncleos como um processador diferente. Na maioria dos casos, cada unidade possui seu prprio cache e pode processar vrias instrues simultaneamente. Adicionar 7

novos ncleos de processamento a um processador (nico encapsulamento) possibilita que as instrues das aplicaes sejam executadas em paralelo, como se fossem 2 ou mais processadores distintos. Os dois ncleos no somam a capacidade de processamento, mas dividem as tarefas entre si. Por exemplo, um processador de dois ncleos com clock de 1.8 GHz no equivale a um processador de um ncleo funcionando com clock de 3.6 Ghz, e sim dois ncleos 1,8GHZ operando em paralelo. O termo multincleo ou multicore (como popularmente conhecido), so por vezes utilizados para descrever arquiteturas multicore com um nmero particularmente elevado de ncleos (dezenas ou centenas). O surgimento dos processadores multicore, tornou-se necessrio principalmente devido a misso cada vez mais difcil de resfriar processadores singlecore (processadores de apenas um ncleo) com clocks cada vez mais altos; devido a concentrao cada vez maior de transistores cada vez menores em um mesmo circuito integrado. E alm dessa e outras limitaes dos processadores singlecore, existe a grande diferena entre a velocidade da memria e do processador, aliada estreita banda de dados, que faz com que aproximadamente 75 por cento do uso do microprocessador seja gasto na espera por resultados dos acessos memria.

Descrio
Na maioria dos processadores de mais de um ncleo, cada ncleo pode possuir sua prpria cache e alguns casos realizam acesso direto e independente memria principal; possibilita-se, assim, que as instrues de aplicaes sejam executadas em paralelo, ou seja, cada processador realiza os clculos de que requisitado concorrentemente com o outro, ganhando desempenho. Este, porm, depende muito dos algoritmos de software utilizados e de suas implementaes. Outra vantagem do processamento em paralelo a capacidade de cada processador ficar responsvel pela execuo de um aplicativo, como por exemplo, quando o usurio est executando algum arquivo de som e ao mesmo tempo executando a varredura do antivrus. A diferena desse processamento paralelo e do at ento usado nos processadores singlecore pode ser visto nas figuras abaixo; observe o gargalo (bottleneck) criado pelos aplicativos executados simultaneamente no singlecore, e como ele desaparece na figura com os dois ncleos (cores).

Surgimento
Embora a tecnologia de fabricao tenha melhorado, reduzindo o tamanho de processadores individuais, limites fsicos de semicondutores baseados em microeletrnica haviam se tornado uma preocupao principal. Estas limitaes fsicas poderiam causar dissipao de calor significativa e problemas de sincronizao de dados. Vrios mtodos foram e esto sendo usados para melhorar o desempenho da CPU. Alguns paralelismos por nvel de instruo (ILP), mtodos como pipelining superescalares so adequados para muitas aplicaes, mas so ineficientes para os que so difceis de prever cdigo. Muitas aplicaes so mais adequadas para paralelismo por nvel de thread (TLP), mtodos e mltiplas CPUs independentes so comumente usados para aumentar a TLP geral de um sistema. Uma combinao de espao disponvel aumentou (devido a processos de fabricao 8

refinados) e a demanda por TLP aumento e levou ao desenvolvimento de CPUs multi-core.

Incentivos Comerciais
Vrios negcios impulsionaram o desenvolvimento da arquitetura multicore. Durante dcadas, foi possvel melhorar o desempenho de uma CPU, reduzindo a rea do circuito integrado, que diminuiu o custo por dispositivo. Como alternativa, mais transistores poderiam ser utilizados no projeto, o que aumentou a funcionalidade, especialmente para as arquiteturas CISC. Eventualmente, estas tcnicas atingiram o seu limite e no puderam continuar a melhorar o desempenho da CPU. Mltiplos processadores tiveram que ser empregados para ganhar velocidade no processamento. Vrios ncleos foram usados no mesmo chip para melhorar o desempenho, o que poderia ento levar a melhores vendas de CPUs que tinham dois ou mais ncleos.

Vantagens
Uma das principais vantagens dos processadores multicore tambm um dos principais motivos da sua inveno. Essa vantagem a sua maior capacidade comparado aos singlecores - de resfriamento; o que ainda possibilitou e ainda possibilita o aumento do poder de processamento dos processadores. Economia no preo de licenciamento de softwares proprietrios, passando a ter um maior poder de processamento sem necessitar de uma nova mquina. Processadores multicore tambm permitem maior desempenho com menor energia. Isso pode ser um fator importante em dispositivos mveis que funcionam com baterias. Uma vez que cada ncleo em multicore geralmente mais eficiente em termos energticos, o chip se torna mais eficiente do que ter um grande ncleo nico e monoltico. As outras vantagens quase que por completo relacionam-se com a capacidade de processamento, principalmente quando se trata da execuo de mais de um aplicativo ao mesmo tempo ou mesmo e aplicativos capazes de realizar o seu processamento paralelamente, conseguindo assim trabalhar com dois ou mais ncleos concomitantemente. Nos processadores mais recentemente desenvolvidos existe tambm uma melhora no acesso a memria e na troca de dados entre os prprios ncleos. Porm, importante destacar tambm que para que a qualidade de processamento paralelo dos multicores seja utilizada na sua totalidade os softwares instalados na mquina devem ser escritos para aproveitar esse recurso; para isso as aplicaes devem ser escritas utilizando e armazenando os conceitos de threads, assim uma nica aplicao utilizar o poder de processamentos dos dois ou mais processadores.

Desvantagens
Processadores multicore possuem um bom desempenho, performance, disponibilidade e segurana a um menor custo. Por outro lado, esta tecnologia possui algumas desvantagens, entre as principais podemos destacar:

O aumento da utilizao dos recursos computacionais fornecidos por processadores multicore requerem ajustes, tanto para o sistema operacional de apoio quanto para o software aplicativo j existente. A capacidade dos processadores multicore depende da utilizao de vrios segmentos dentro das aplicaes para aumentar o desempenho da aplicao.

Arquitetura
Com o surgimento dos multicores tornou-se necessrio algumas adaptaes a nvel de arquitetura para o melhor aproveitamento dos seus ncleos, e as primeiras a serem feitas tem como objetivo melhorar o paralelismo a nvel de threads e assim criar uma arquitetura que propicie o chamado paralelismo ao nvel do chip. Algumas vantagens da arquitetura so: a melhor localizao dos dados em se comparando com outras arquiteturas de multiprocessamento; a melhor comunicao entre as unidades e o nmero reduzido de quantidade de espao e energia necessrios. A arquitetura geralmente um SMP, ou seja, um multiprocessamento simtrico; implementado em um circuito VLSI - Very Large Scale Integration. Essa uma arquitetura onde dois ou mais processadores idnticos so ligados a uma nica memria principal. Porm ao SMP existem outras alternativas de se criar uma arquitetura com variantes para o tratamento da memria ou at mesmo a comunicao entre os diversos ncleos presentes no processador. Algumas dessas variantes podem ser observadas nos artigos abaixo: Arquitetura Intel Core2 Arquitetura AMD Athlon 64 X2

Exemplos de Hardware
Segue abaixo alguns exemplos de hardware que utilizam a tecnologia multi-core. Comercial AMD Athlon 64, Athlon 64 FX e Athlon 64 X2, processadores AMD Athlon para desktops. Athlon II, processador AMD Athlon II Dual -Core para desktops. Phenom, processador AMD Phenom X4 de quatro ncleos e AMD Phenom X3 de trs ncleos para desktops. Phenom II, processador multi-core. Oferece uma melhor experincia visual para entretenimento de alta definio, desempenho avanado em multitarefa e inovaes de economia de energia, proporcionando mquinas menores e mais refrigeradas, com uso eficiente da energia. Sempron, processador AMD Sempron para desktops. Turion 64 X2, processador dual-core para laptop. Opteron, processador para servidores.

IBM

POWER5, processador dual-core, lanado em 2004. 10

Intel Nvidia

POWER6, processador dual-core, lanado em 2007. POWER7, processadores 4,6,8-core, lanados em 2010. PowerPC 970MP, processador dual-core usado na Apple Power Mac G5. Xenon, processador triple-core, usado pela Microsoft no Xbox 360.

Celeron Dual-Core, primeiro processador dual-core comercializado. Core Duo, processador dual-core. Core 2 Duo, processador dual-core. Core 2 Quad, 2 processadores dual-core embutido em um multi-chip. Core i3, Core i5 e Core i7, famlia de processadores multi-core. So os sucessores do Core 2 Duo e do Core 2 Quad. Itanium 2, processador dual-core. Pentium D, 2 single-core embutido em um multi-chip. Pentium Extreme Edition, 2 single-core embutido em um multi-chip. Pentium Dual-Core, processador dual-core. Xeon processadores dual-, quad-, hexa-, octo- e 12-core.

GeForce 9 Series multi-core, a Unidade de processamento grfico possui 8 cores e 16 Scalar processor/Stream processing por core. GeForce 200 Series multi-core, a Unidade de processamento grfico possui 10 cores e 24 Scalar processor/Stream processing por core. Tesla multi-core, a GPGPU possui 10 cores e 24 Scalar processor/Stream processing por core.

Free OpenSPARC

Futuro da Tecnologia Multicore


O MIT, Instituto de Tecnologia de Massachusetts, anunciou um processador com 64 ncleos, cujo design difere drasticamente dos processadores existentes hoje1 . O novo chip, chamado Tile64, evita o que hoje o maior gargalo no desempenho dos processadores multicores e ele consome menos energia. Nos processadores multicores existentes hoje, cada ncleo se comunica com o outro atravs de um barramento comum. Se pensarmos em dois ou quatro ncleos dividindo um barramento, a performance no muito afetada. Quando pensamos em 16 ou mais ncleos sendo usados ao mesmo tempo, a historia completamente diferente. Este o maior gargalo no desempenho dos processadores multicores. O Tile64 no possui um barramento central. Ao invs disso, os ncleos esto diretamente conectados. Cada ncleo possui todas as caracterstica de um processador e memria. O novo conceito aplicado nesses processadores a estrutura de malha na conexo entre os ncleos. Essa estrutura similar encontrada na Internet, uma rede que possui vrios ns descentralizados. Uma razo que faz a Internet capaz de transmitir dado to rapidamente que os pacotes de informao so enviados atravs de uma vasta rede interligada, evitando assim o congestionamento desses pacotes. Essa nova arquitetura abre 11

portas para que novos processadores recebam nmeros cada vez maiores de ncleos. A existncia de um nmero to grande de cores, comea a requerer a utilizao de um esquema de manipulao prximo a grades computacionais.

Thread
Linha ou Encadeamento de execuo (em ingls: Thread), uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente. O suporte thread fornecido pelo prprio sistema operacional, no caso da linha de execuo ao nvel do ncleo (em ingls: Kernel-Level Thread (KLT)), ou implementada atravs de uma biblioteca de uma determinada linguagem, no caso de uma User-Level Thread (ULT). Uma thread permite, por exemplo, que o usurio de um programa utilize uma funcionalidade do ambiente enquanto outras linhas de execuo realizam outros clculos e operaes. Em hardwares equipados com uma nica CPU, cada thread processada de forma aparentemente simultnea, pois a mudana entre uma thread e outra feita de forma to rpida que para o utilizador isso est acontecendo paralelamente. Em hardwares com mltiplos CPUs ou multi-cores, as threads so realizadas realmente de forma simultnea; Os sistemas que suportam apenas uma nica thread (em real execuo) so chamados de monothread enquanto que os sistemas que suportam mltiplas threads so chamados de multithread.

Exemplo
Um exemplo simples pode ser expressado atravs de um jogo onde o mesmo pode ser modelado com linhas de execuo diferentes, sendo uma para desenho de imagem e outra para udio; Neste caso, h um thread para tratar rotinas de desenho e outro thread para tratar udio; No ponto de vista do usurio, a imagem desenhada ao mesmo tempo em que o udio emitido pelos alto-falantes; Porm, para sistemas com uma nica CPU, cada linha de execuo processada por vez;

Particularidades
Cada thread tem o mesmo contexto de software e compartilha o mesmo espao de memria (endereado a um mesmo processo-pai), porm o contexto de hardware diferente. Sendo assim o overhead causado pelo escalonamento de uma thread muito menor do que o escalonamento de processos. Entretanto no h acesso protegido memria nativa (sua implementao fica a cargo do programador) devido ao compartilhamento do espao de memria. Um dos benefcios do uso das threads advm do facto do processo poder ser dividido em vrias threads; quando uma thread est espera de determinado dispositivo de entrada/sada ou qualquer outro recurso do sistema, o processo como um todo no fica parado, pois quando uma thread entra no estado de 'bloqueio', uma outra thread aguarda na fila de prontos para executar. 12

Uma thread possui um conjunto de comportamentos padro, normalmente encontrados em qualquer implementao ou sistema operativo. Uma thread pode: criar outra da mesma forma que um processo, atravs do mtodo threadcreate, onde a thread retorna um ID como primeiro argumento (resultado da funo de criao); esperar outra thread se sincronizar, atravs do mtodo join; voluntariamente "desistir" da CPU por no precisar mais do processamento proposto pela prpria ou por vontade do utilizador. Feito atravs do mtodo thread-yield; replicar-se sem a necessidade de duplicar todo o processo, economizando assim memria, processamento da CPU e aproveitando o contexto (variveis, descritores, dispositivos de I/O).

Estados de uma linha de execuo


Uma thread pode assumir os seguintes estados: Unstarted: logo aps ser criada (antes do Start()); Running: aps ser ativada (Start()) ou aps mtodo Resume(); Suspended: aps mtodo Suspended(); Stopped: aps mtodo Abort().

ULT e KLT
Usualmente as threads so divididas em duas categorias: thread ao nvel do utilizador (em ingls: User-Level Thread (ULT)), e thread ao nvel do ncleo (em ingls: Kernel-Level Thread (KLT)). Thread em modo usurio

Thread em modo kernel 13

As threads da primeira categoria (ULT) so suportadas pela aplicao, sem conhecimento do ncleo e geralmente so implementadas por pacotes de rotinas (cdigos para criar, terminar, escalonamento e armazenar contexto) fornecidas por uma determinada biblioteca de uma linguagem, como o caso da thread.h (biblioteca padro da linguagem C). Estas threads suportam as mesmas operaes que as threads KLT (criar, sincronizar, duplicar e abortar). Possuem como vantagens a possibilidade de implementao em sistemas operativos que no suportam nativamente este recurso, sendo geralmente mais rpidas e eficientes pois dispensam o acesso ao ncleo. Evita assim mudana no modo de acesso, e a estrutura de dados fica no espao do utilizador, levando a uma significativa queda de overhead, alm de poder escolher entre as diversas formas de escalonamento em que melhor se adequa. A gesto da thread (KLT) no realizada atravs do cdigo do prprio programa; todo o processo subsidiado pelo SO. Esse modelo tem a vantagem de permitir o suporte a multiprocessamento e o facto do bloqueio de uma linha de execuo no acarretar bloqueio de todo processo, no obstante, temos a desvantagem de ter que mudar o tipo de acesso sempre que o escalonamento for necessrio, aumentando assim o to temido overhead. H quatro operaes bsicas na gesto de threads: criar, terminar, thread join e thread yield.

Criar (thread creation)


Basicamente uma thread pode criar outra(s), sendo que depois essas mesmas threads so executas 'simultaneamente'. A thread criadora a thread-me e a thread criada a thread-filho. Threads includas na funo main quando executadas podem criar threads-filho. No diagrama a seguir h a thread A que executa inicialmente. Mais tarde criada a thread B indicada no ponto amarelo. Depois de criadas, a thread A e thread B executam simultaneamente. Em seguida a thread A pode criar uma ou mais threads (por exemplo uma thread C). Depois de criada a 14

thread C, h trs threads executando simultaneamente e todas disputam o uso da CPU. Entretanto, a thread que pode ser executada a qualquer momento no de conhecimento da CPU.

Terminar (thread termination)


Para maioria dos casos, as threads no so criadas e executadas eternamente. Depois de terminado o seu objectivo, a thread termina. No facto, a thread que criou estas duas threads-filho termina tambm, porque sua tarefa atribuda se completa. Na matrix de multiplicao (matrix multiplication), uma vez que o valor de C[i,j] computado, a thread correspondente termina. Em geral quando a tarefa atribuda a thread completa, a thread pode ser terminada. Alm disso, se a thread-me terminar, todas as threads filho terminam tambm. Porque isso importante? Isso importante porque as threads-filho compartilham recursos com a thread-me, incluindo variveis. Quando a thread-me termina, todas as variveis so perdidas e a thread-filho no poder aceder aos recursos que a thread-me possuia. Assim, se a thread-me terminar mais cedo que a thread-filho haver um problema! Uma thread pode terminar das seguintes maneiras: Retornando da sua rotina mais externa, a thread criadora. Quando termina a rotina em que foi comeada. Chamando pthread_exit, fornecendo um estado de sada. Terminando atravs da funo pthread_cancel

Sincronizar(Thread Join)
Imagine a seguinte situao: Voc est estudando para uma prova. Ento voc pede o seu irmo mais novo para comprar uma pizza. Neste caso voc a thread principal e seu irmo a thread-filho. Uma vez que voc deu a ordem, voc e seu irmo comeam a executar uma tarefa simultaneamente. Agora h dois casos a se considerar: Primeiro: Seu irmo traz a pizza e termina enquanto voc estuda. Nesse caso voc pode parar de estudar e comer a pizza. Segundo: Voc acaba de estudar mais cedo e dorme e depois a pizza chegar. A juno de threads (thread join) destinada para resolver este problema. A thread pode executar o thread join e aguardar at a outra thread terminar. No caso acima, voc a thread principal (thread main) e deve executar o thread joinaguardando o seu irmo (thread-filho) terminar. Em geral o thread join utilizado para a thread-me se sincronizar com uma das threads-filho.

Thread Yield (Rendimento da thread)


Suponha que voc executa um certo nmero de programas o tempo todo no computador. Isso possvel devido a CPU escalonar pouco a pouco outros ciclos da CPU, assim outros programas podem ser executados. Isso pode ser um problema de poltica de planeamento do Sistema Operativo. Entretanto, quando escrevemos programas com mltiplas threads, temos que fazer correctamente para que algumas threads no ocupem a CPU eternamente, ou por um tempo muito longo sem abandon-lo. Seno terminar na situao acima quando uma ou duas threads executam enquanto outras simplesmente esperam para retornar. Liberamos espao na memria graas a thread yield. Quando a thread executa o thread yield, a execuo da thread suspensa e a CPU passa para uma outra thread em execuo. Essa thread aguardar at a CPU tornar-se disponvel novamente.

15

Escalonamento
Da mesma forma que os processos sofrem escalonamento, as threads tambm tm a mesma necessidade. Quando vrios processos so executados em uma CPU, eles do a impresso que esto sendo executados simultaneamente. Com as threads ocorre o mesmo, elas esperam at serem executadas. Como esta alternncia muito rpida, h impresso de que todas as threads so executadas paralelamente.

Linha de execuo ao nvel do usurio


As ULT so escalonadas pelo programador, tendo a grande vantagem de cada processo usar um algoritmo de escalonamento que melhor se adapte a situao, o sistema operacional neste tipo de thread no faz o escalonamento, em geral ele no sabe que elas existem. Neste modo o programador responsvel por criar, executar, escalonar e destruir a thread. Um exemplo prtico de processo chamado P1 que contm tais threads: P1T1, P1T2 e P1T3, quando o sistema operacinal da a CPU para o processo P1 cabe a ele destinar qual thread ser executada, caso esta thread use todo processo do quantum, o sistema operacional chamar outro processo, e quando o processo P1 voltar a executar, P1T1 voltar a ser executada e continuar executando at seu trmino ou interveno de P1, este comportamento no afetar outros processos pois o sistema continua escalonando os processos normalmente.

Linha de execuo ao nvel do ncleo


As KLT so escalonadas diretamente pelo sistema operacional, comumente so mais lentas que as Threads ULT pois a cada chamada elas necessitam consultar o sistema, exigindo assim a mudana total de contexto do processador, memria e outros nveis necessrios para alternar um processo. Um exemplo prtico de processo chamado P2 que contm as threads P2T1, P2T2 e P2T3 e um processo chamado P3 que contm as threads P3T1, P3T2 E P3T3. O Sistema Operacional no entregar a CPU ao processo e sim a uma thread deste processo, note agora que o sistema responsvel por escalonar as threads e este sistema tem que suportar threads, a cada interrupo de thread necessrio mudar todo o contexto de CPU e memria, porm as threads so independentes dos processos, podendo ser executadas P3T2, P2T1, P2T2, P2T1, P3T1,P2T3,P3T3, ou seja a ordem em que o escalonador do sistema determinar. J com as threads em modo usurio no se consegue ter a mesma independncia, pois quando passamos o controle ao processo, enquanto seu quantum for vlido ele ir decidir que thread ir rodar. Um escalonamento tpico do sistema onde o escalonador sempre escolhe a thread de maior prioridade, que so divididas em duas classes: Real Time e Normal. Cada thread ganha uma prioridade ao ser criada que varia de 0 a 31(0 a menor e 31 maior), processos com prioridade 0 a 15(Real Time) tem prioridade ajustada no tempo de execuo como nos processos de E/S que tem a prioridade aumentada variando o perifrico, processos com prioridade 16 a 31 so executados at terminar e no tem prioridade alterada, mas somente uma thread recebe a prioridade zero que a responsvel por zerar pginas livres no sistema. Existe ainda uma outra classe chamada de idle, uma classe mais baixa ainda, s executada quando no existem threads aptas, threads dessa classe no interferem na performance.

16

Comparao entre linha de execuo e Processo


Um sistema baseado em linha de execuo diferente de um sistema operacional multi-tarefa tradicional, em que processos so tipicamente independentes, carregam considervel estado da informao, tem endereo de memria separado e interagem somente atravs de mecanismos de inter-processos de comunicao. As threads, por outro lado, compartilham o estado da informao de processos nicos, e compartilham memria e outros recursos diretamente. A troca de contexto atravs de linha de execuo num mesmo processo tipicamente mais rpida que a troca de contexto entre processos diferentes. Sistemas como o Windows NT e o OS/2 so feitos para ter linha de execuo "baratas" e processos "caros", enquanto em outros sistemas operacionais no h grandes diferenas. O multithreading um modelo de programao popular que permite a execuo de mltiplas linha de execuo dentro de um contexto simples, compartilhando recursos do processo, e capazes de executar de forma independente. O modelo de programao em linha de execuo fornece ao desenvolvedor uma execuo simultnea. Entretanto, a aplicao mais interessante da tecnologia ocorre quando ela utilizada em um processo simples permitindo uma execuo paralela em sistemas multi-processados. Um sistema multi-threaded possui um melhor desempenho que um sistema de computadores com mltiplas CPUs e com mltiplos ncleos, ou que um cluster de mquinas. Isto acontece porque a linha de execuo empresta a ela mesmo uma execuo simultnea. Em alguns casos, o programador precisa ter cuidado em evitar condies de concorrncia e outros comportamentos inesperados. Para um dado ser manipulado corretamente, as linhas de execuo freqentemente precisaro ser sincronizadas, para que os dados sejam processados na ordem correta. As linha de execuo podem tambm executar operaes atmicas (freqentemente implementadas usando semforos) com intuito de prevenir que dados comuns sejam simultaneamente modificados ou lidos enquanto o processo esta sendo modificado. Os sistemas operacionais implementam as linhas de execuo de duas formas: multithreading preemptiva ou multithreadingcooperativa. A multithreading preemptiva geralmente considerada uma implementao superior, porque permite ao sistema determinar quando uma troca de contexto pode acontecer. A multithreading cooperativa, por outro lado, confia nas threadspara ceder o controle, o que pode ser um problema caso uma tarefa monopolize o uso da CPU ou se houver espera pela disponibilidade de um recurso. A desvantagem da multithread preemptiva que o sistema pode fazer uma troca em um tempo inapropriado, causando uma inverso de prioridade ou outros efeitos ruins que podem ser evitados por uma multithreadingcooperativa. Em geral: Criar um processo pode ser caro em termos de tempo, memria, e sincronizao entre processos.

17

As linhas de execuo podem ser criadas sem a replicao do processo inteiro. O trabalho de criar uma linha de execuo pode ser feito no espao do usurio. Como as linhas de execuo partilham o espao de endereamento a comunicao entre elas mais rpida. O tempo gasto para troca de linha de execuo menor, em parte por que no h necessidade de troca de espao de endereamento.

Modelo de Gerao de Multithreads


Modelo Muitos-Para-Um
O modelo muitos-para-um mapeia muitos threads de nvel de usurio para threads do kernel. O gerenciamento dos threads realizado no espao do usurio e assim eficiente, mas o processo inteiro ficar bloqueado. Alm disso, como somente um thread pode acessar o kernel de cada vez, mltiplos threads so incapazes de executar em paralelo em multiprocessadores.1

Modelo Um-Para-Um
O modelo um-para-um mapeia cada thread de usurio para um thread de kernel, gera mais concorrncia do que o modelo muitos-para-um. Permite a um outro thread ser executado, enquanto um thread realiza uma chamada de sistema de bloqueio, ele tambm permite que mltiplos threads executem em paralelo em multiprocessadores. A nica desvantagem deste modelo que a criao de um thread de usurio requer a criao do correspondente thread de kernel.1

Modelo Muitos-Para-Muitos
O modelo muitos-para-muitos multiplexa muitos threads de nvel de usurio para um nmero menor ou igual de threads de kernel. O nmero de threads de kernel pode ser especfico tanto para uma aplicao em particular quanto para uma mquina em particular. Os desenvolvedores podem criar tantos threads de usurio quantos forem necessrios, e os correspondentes threads de kernel podem executar em paralelo em um multiprocessador. Alm disso, quando um thread realiza uma chamada de sistema de bloqueio, o kernel pode agendar um outro thread para execuo.1

Cancelamento
O cancelamento de threads corresponde tarefa de terminar um thread antes que se complete. Por exemplo, se mltiplos threads esto pesquisando concorrentemente em um banco de dados e um thread retorna o resultado, os threads que ainda esto sendo executados podem ser cancelados. Uma outra situao pode ocorrer quando um usurio pressionar um boto em um navegador da Web. Com frequncia, uma pgina da Web carregada em um thread separado. Quando um usurio pressionar o boto stop, o thread que estava carregando a pgina cancelado. Um thread que est para ser cancelado frequntemente denominado thread-alvo.1

Exemplos
Java
import java.io.*; 18

public class Example implements Runnable { static Thread threadCalculate; // Cria o thread. static Thread threadListen; long totalPrimesFound = 0; public static void main (String[] args) { Example e = new Example(); threadCalculate = new Thread(e); threadListen = new Thread(e); threadCalculate.start(); threadListen.start(); } public void run() { Thread currentThread = Thread.currentThread(); if (currentThread == threadCalculate) calculatePrimes(); else if (currentThread == threadListen) listenForStop(); } public void calculatePrimes() { int n = 1; while (true) { n++; boolean isPrime = true; for (int i = 2; i < n; i++) if ((n / i) * i == n) { isPrime = false; break; } if (isPrime) { totalPrimesFound++; System.out.println(n); } 19

} } private void listenForStop() { BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); String line = ""; while (!line.equals("stop")) { try { line = input.readLine(); } catch (IOException exception) {} } System.out.println("Found " + totalPrimesFound + " prime numbers before you said stop"); System.exit(0); } }

Java, exemplo simples em portugus


import java.util.logging.Level; import java.util.logging.Logger; class Threaded extends Thread { Synchronized1 base; public Threaded( Synchronized1 bse ) { this.base = bse; } } public class Synchronized1 { public Synchronized1() { } public void ini() { new Threaded( this ) { public void run() { while( true ) { synchronized( base ) {

20

System.out.print( "Este A, agora vai mostrar B.\n" ); try { Thread.sleep(1000); } catch (InterruptedException ex) { Logger.getLogger(Synchronized1.class.getName()).log(Level.SEVERE, null, ex); } try { base.notify(); base.wait(); } catch (InterruptedException ex) { Logger.getLogger(Synchronized1.class.getName()).log(Level.SEVERE, null, ex); } } } } }.start();

new Threaded( this ) { public void run() { while( true ) { synchronized( base ) { System.out.print( "Este B, ento foi j mostrado A.\n" ); try { Thread.sleep(1000); } catch (InterruptedException ex) { Logger.getLogger(Synchronized1.class.getName()).log(Level.SEVERE, null, ex); } try { base.notify(); base.wait(); } catch (InterruptedException ex) { Logger.getLogger(Synchronized1.class.getName()).log(Level.SEVERE, null, ex); } } } 21

} }.start(); } public static void main(String[] args) { new Synchronized1().ini(); } }

C
#include <stdio.h> #include <stdlib.h> #include <pthread.h> #define THREADS_MAX 4

void *function(void *param) { int id = (int)param; int i, loops = 10; for(i = 0; i < loops; i++) { printf("thread %d: loop %d\n", id, i); } pthread_exit(NULL); } int main(void) { pthread_t threads[THREADS_MAX]; int i; printf("pre-execution\n"); for (i = 0; i < THREADS_MAX; i++) { pthread_create(&threads[i], NULL, function, (void *)i); } printf("mid-execution\n"); for (i = 0; i < THREADS_MAX; i++) { pthread_join(threads[i], NULL); } printf("post-execution\n"); return EXIT_SUCCESS; }

C++
#include <iostream> #include <boost/thread/thread.hpp> 22

using namespace std; const int THREADS_MAX = 4; struct function { function( const int &_id ) : id( _id ) { } void operator()() { for( int i = 0; i < 10; ++i ) { cout << "thread " << id << ": loop " << i << endl; } } private: const int id; }; int main(void) { boost::thread_group threads; cout << "pre-execution" << endl; for( int i = 0; i < THREADS_MAX; ++i ) { threads.create_thread( function( i ) ); } cout << "mid-execution" << endl; threads.join_all(); cout << "post-execution" << endl; return 0; }

Ruby
count = 0 a = Thread.new { loop { count += 1 } } sleep(0.1) Thread.kill(a) puts count #=> 93947

Delphi
unit UExemplo; interface

23

uses Classes, Generics.Collections; type TThreadExemplo = class(TThread) private FPrimeiroNumero: Integer; FUltimoNumero: Integer; FListaPrimos : TList<Integer>; function IsPrimo(const pNumero : Integer) : Boolean; protected procedure Execute; override; public constructor Create(const pCreateSuspended: Boolean; const pPrimeiroNumero, pUltimoNumero: Integer); destructor Destroy; override; property PrimeiroNumero: Integer read FPrimeiroNumero write FPrimeiroNumero; property UltimoNumero: Integer read FUltimoNumero write FUltimoNumero; function GetListaAsString: String; end; implementation uses SysUtils; { TThreadExemplo } constructor TThreadExemplo.Create(const pCreateSuspended: Boolean; const pPrimeiroNumero, pUltimoNumero: Integer); begin inherited Create(pCreateSuspended); FListaPrimos := TList<Integer>.Create; FPrimeiroNumero := pPrimeiroNumero; FUltimoNumero := pUltimoNumero; end; destructor TThreadExemplo.Destroy; begin FListaPrimos.Free;

24

inherited; end; procedure TThreadExemplo.Execute; var lNumero: Integer; begin lNumero := FPrimeiroNumero; while not Terminated and (lNumero <= FUltimoNumero) do begin if IsPrimo(lNumero) then begin FListaPrimos.Add(lNumero); end; Inc(lNumero); end; end; function TThreadExemplo.GetListaAsString: String; var lNum: Integer; begin Result := EmptyStr; for lNum in FListaPrimos do begin Result := Result + IntToStr(lNum) + sLineBreak; end; end; function TThreadExemplo.IsPrimo(const pNumero: Integer): Boolean; var lNum: Integer; lMax: Integer; begin Result := True; lNum := 2; lMax := (pNumero div 2); while Result and not Terminated and (lNum <= lMax) do begin Result := pNumero mod lNum <> 0; Inc(lNum); end; 25

end; end.

Multitarefa
Em computao, Multitarefa a caracterstica dos sistemas operativos que permite repartir a utilizao do processador entre vrias tarefas aparentemente simultaneamente.

Histria
O primeiro sistema informatizado a usar multitarefa foi o britnico LEO III, completado 1961. A multitarefa preemptiva foi implementada nas verses iniciais do Unix em 1969, e o padro no Unix e em sistemas operacionais similares, incluindo Linux, Solaris e BSD em suas variaes. Pode parecer, actualmente, difcil de imaginar um computador monotarefa, i.e., que apenas permita utilizar uma aplicao mas, de facto, houve um percurso histrico notvel at se atingir o nvel actual de paralelizao de processos. Com efeito, os primeiros computadores apenas permitiam executar uma nica tarefa de cada vez. O Apple DOS um excelente exemplo disso, j que foi dos primeiros sistemas operativos para computadores pessoais. O primeiro passo para a multitarefa no MS-DOS foi a criao dos TSR's (Terminate and Stay Resident), pequenos programas que permaneciam em memria enquanto se executava outro programa, e que podiam instalar rotinas de tratamento de interrupes para serem ativados posteriormente. Ou seja, estando o utilizador a escrever um texto num processador de texto, por exemplo, poderia apertar uma combinao de teclas que dispararia uma interrupo e chamaria a TSR de uma agenda pessoal para tirar notas. Assim, do ponto de vista do processador, o processo do processador de texto era bloqueado e passava-se o controle para a agenda. Quando o utilizador terminasse, voltava-se ao processador. Ambos programas coexistiam, mas no podiam ser executados simultneamente. O passo seguinte foi a emulao de multitarefa. Exemplos disto eram as primeiras verses de Windows, que este executava sobre DOS (monotarefa), mas o ncleo do Windows fazia a sua prpria gesto dos processos. Curiosamente, se um processo bloqueasse o Windows, todas as aplicaes teriam que ser terminadas pois eram todas dependentes. Posteriormente, surgiu uma das principais componentes dos SO actuais: o escalonador de processos, ou (em ingls) scheduler, que faria a gesto, qualificao e o gerenciamento de prioridade dos processos sem afectar o ncleo do sistema operativo. Ou seja, todas as tarefas ncleo so crticas, e todo o tempo que sobrar legado aos processos. Adivinha-se, portanto, a necessidade de estabilizar o ncleo, por forma a minimizar o tempo de execuo de tarefas internas. O escalonador de processos uma componente muito polmica em termos de inovao e de aplicaes. Dependendo das situaes, um escalonador de processos deve gerir os seus processos por forma a diminuir a latncia entre aplicaes 26

interactivas, ou assegurar a coerncia em termos de critrios no escalonamento: se uma tarefa no crtica, ento no devia estar a ser executada.

Tarefas
Os conceitos ligados ao paralelismo de tarefas no so consensuais. A linguagem vulgar no UNIX sugere, no entanto, alguns termos razoavelmente universais. No UNIX, existem dois nveis de tarefa: o processo e a thread. Os processos tm uma srie de threads associadas. Tipicamente, cada processo tem um determinado espao de endereamento que as diferentes threads partilham. Cada thread tem o seu prprio estado de processador e a sua prpria pilha.

Alternncia de tarefas
Cada processador pode executar apenas um programa de cada vez. Por esta razo, a multitarefa num sistema uniprocessador apenas uma iluso conseguida com a alternncia rpida entre as vrias tarefas. O ncleo do sistema operativo responsvel por isolar os contextos de execuo das diversas tarefas. Para conseguir isto, necessrio que uma rotina do ncleo seja chamada a dada altura. Essa rotina (que pode ser chamada por uma interrupo provocada por um temporizador interno do computador) geralmente executa as seguintes operaes: Salva o estado do processador numa estrutura de dados do ncleo (a rvore de processos); Seleciona, com base num algoritmo, a prxima tarefa a executar; Se for necessrio, reconfigura o espao de endereamento de modo a que a prxima tarefa encontre a memria no estado que espera; Carrega o estado do processador referente tarefa que vai receber tempo de processador; A rotina retorna permitindo que o programa execute.

No Mundo das Placas-me para PCs


Quais as melhores marcas? Principais caractersticas tcnicas Atualmente no mercado mundial h muitos e muitos modelos de placas-me, e com as mais diversas configuraes tecnolgicas configuraes bem bsicas as mais sofisticadas e avanadas. Como exemplos, placas-me que suportam somente memria SDR (Single Data Rate ou Taxas de dados transmitidos no modo simples cada ciclo de pulso transmite um dado por segundo), sendo que cada mdulo de memria SDR possui 168 vias; Placas-me que suportam memriasSDR e DDR (Double Data Rate ou Taxas de dados transmitidos em dobro cada ciclo de pulso transmite 2 dados), sendo que cada mdulo de memria SDR possui 184 vias. E ainda, placas-me que suportam mdulos de memrias do tipo DDR2/DDR3/DDR4 (Double Data Rate ou Taxas de dados transmitidos em dobro ou 27

em quatro, ou seja, cada ciclo de pulso transmite 2 ou quatro dados), sendo que cada mdulo de memria DDR2/3/4 possui 240 vias eltricas.

Este modelo de placa-me desta imagem acima, por exemplo, do tipo "multiprocessadores". Ou seja, suporta quatro processadores AMD Opteron 6100 Series Processors (Magny-Cours) com tecnologia de 45 nm, sendo que cada processador pode contar com 8 Cores (8 ncleos - 4 fsicos e 4 lgicos) ou com 12 Cores (12 ncleos - 6 fsicos e 6 lgicos), desta forma, um total de 32 a48 ncleos; esta placa-me conta ainda com 32 slots para mdulos de memria DDR3 de 16 GB cada, portanto, totalizando 512 GB de memria instalada. Mais informaes nestes links abaixo: http://www.tyan.com/product_SKU_spec.aspx?ProductType=MB&pid=670&SKU=600000180 http://www.kabum.com.br/cgilocal/kabum3/produtos/descricao.cgi?id=01:01:11:69:26410&tag= As memrias DDR2/3/4 operam com altas freqncias de clock, como no modo de 800 MHz (mximo para as DDR2 e mnimo para as DDR3), devido a tcnica QDR (Quad Data Rate ou Taxas de dados transmitidas de quatros em quatro dados por segundo cada ciclo de pulso transmite 4 dados). Neste caso a freqncia original da memria 200 MHz, mas como aproveitam cada ciclo de pulso para levar quatro dados (dois dados na rampa de subida e dois na rampa de decida), como se ela estivesse operando 800 MHz, por segundo. Alm do suporte para vrios tipos de memrias, algumas placas-me tambm suportam redes Gigabits, redes Wireless (sem fio), bus PCI Express x1 e x16 (imagem abaixo, direita), este substituto do bus AGP (imagem abaixo, esquerda); somente HDs SATA (Serial ATA) e/ou SATA+PATA+SSD (Serial ATA+Parallel ATA+). E a cada novo modelo de placa-me, o suporte as novas tecnologias tambm aumentam.

28

As melhores marcas
Ao ler esta matria muitos podero dizer que estamos fazendo chover no molhado, pode at ser. Porm, muitos e muitos usurios de microcomputadores esto fazendo a mesma pergunta: Quais so as melhores marcas de placas-me?. Isto porque como acontece com as fontes de alimentao para microcomputadores , tambm estamos no Mundo das placas-me para PCs, mundo este que conta com muitos fabricantes que realmente fabricam placas-me, e tambm, empresas que no fabricam, mas que colocam suas marcas em modelos de placas-me, e desta forma, ficam conhecidas no mercado nacional e internacional. Tambm pode ocorrer de alguns modelos de placas-me serem das melhores marcas, mas no serem de boa qualidade. Outro fator de suma importncia para que uma tima placa-me corresponda 100% de sua capacidade, refere-se a montagem do microcomputador. Emparafusar a placa-me e outros componentes no gabinete uma coisa, montar o microcomputador outra coisa muito diferente uma arte para poucos. A placa principal dos microcomputadores que recebe o chip (ou chips) CPU (processador para dados), e tambm, que recebe muitos outros chips que so integrados nela, tambm conhecida por outros nomes, tais como: Placa-Me, Placa de Sistema, Placa Principal, CPU Board, Main-Board. Quanto aos preos dos modelos de placas-me, depender do modelo se antigo ou recente , dos recursos tcnicos integrados (chips de som, de vdeo, de rede, chipset e outros no modo on-boards), ou dos recursos tcnicos no integrados, mas que so suportados, como: placas externas off-boards (placas aceleradoras grficas, CPUs, etc.).

Placas-me multi CPUs


J com relao aos modelos de Placas-me existentes, os mesmos so inmeros; os recursos tecnolgicos que as mesmas suportam vo dos mais fracos aos recursos mais potentes. Como exemplo, alguns modelos de placas-me suportam QUATRO CPUs (processadores para dados) e , como o modelo da imagem acima, 29

modelos como o da imagem so conhecidas por placas-me para multiprocessadores. Neste caso, o recurso conhecido por multiprocessamento. E para que a placa-me suporte o multiprocessamento de dados, ela deve suportar a tecnologia conhecida por SMP (Symmetric Multprocessing ou algo como Multiprocessamento de dados por dois ou mais processadores, conjuntamente). Esta tcnica empregada quando se deseja que os dados sejam processados por duas (ou mais) CPUs no modo paralelo , dividindo-se assim a carga que estaria reservada a um nico processador.

Placas-me multi CPUs/GPUs


J alguns modelos de placas-me podem suportar at SETE GPUs (processadores para dados grficos integrados nas placas aceleradoras grficas modernas, como este modelo destes links abaixo: http://www.baboo.com.br/conteudo/articlefiles/37786-01.jpg http://www.evga.com/forums/tm.aspx?m=124528&mpage=1 Este modelo de placa-me da imagem acima e dos links acima (a EVGA (socket LGA1366) modelo 270-GT-W555, com chipset Intel X58 integrado) realmente muito potente, pois suporta SETE placas aceleradoras grficas e DOIS processadores de 8 ncleos (4 fsicos e quatro lgicos), totalizando 16 ncleos para processamentos de dados binrios; possui ainda 12 slots para mdulos de memria SDRAM DDR3, portanto, pode suportar ate 48 GB (12 slots x 4 GB de cada mdulo).

Componentes integrados nas placas-me


Nas placas-me nos modelos antigos e modernos tambm podemos ver as interfaces (portas) para o teclado e mouse (PS/2 e USB); os conectores para a fonte de alimentao (4, 8, 20 e 24 pinos); a bateria (20/32) e chip CMOS (a partir 30

do 286); os chips VLSI, mais conhecido por chipset; os slots ISA de 8 e 16 bits e Slots VLB; os slots PCI de 32 bits, AGP e PCI-Express x1 e x16; o chip de memria ROM/FlashROM BIOS; as interfaces para discos rgidos (IDE/PATA e IDE/SATA); a interface para drives de disquetes (esta j foi extinta); as interfaces para portas seriais e paralela; o socket (ou sockets, nos modelos de placas-me modernas) para o microprocessador e co-processadores (nas placas 286 e 386), entre muitos outros componentes integrados nas placas-me.

Os tipos de placas-me
Os tipos de Placas-me vo desde uma XT (Extended Technology ou Tecnologia estendida); umaAT (Advanced Technology ou Tecnologia avanada, a partir do 286), at as revolucionrias placas-me ATX (Advanced Technology Extended ou Tecnologia Avanada e Estendida). A Intel desenvolveu o tipo BTX (Balanced Technology Extended Tecnologia estendida e balanceada) para os novos modelos de gabinetes para microcomputadores e respectivas placas-me e fontes que seriam instaladas nestes gabinetes.

Os Fabricantes e Marcas de placas-me


Como j foi citado acima, no Mundo das placas-me, mundo este que conta com muitas empresas que realmente fabricam placas-me, e tambm, empresas que no fabricam, mas que colocam suas marcas em modelos de placas-me e desta forma ficam conhecidas no mercado.

As melhores marcas Quais so elas?


Ao ler esta matria muitos podero dizer que estamos fazendo chover no molhado, ou seja, repetindo aquilo que muitos usurios (principalmente tcnicos) de microcomputadores j sabem, pode at ser. Porm, muitos e muitos usurios de microcomputadores esto fazendo a mesma pergunta: Quais so as melhores marcas de placas-me?. E pela ordem, levando em conta requisitos, tais como: qualidade, aceitao do mercado nacional e mundial, mais as anlises de especialistas. E aqui tambm vale a minha experincia de mais de 12 anos trabalhando com placas-me, sendo que placas-me que menos do problemas so os modelos produzidos pela empresa Gigabyte. Placas-me do Top 15 so as seguintes: > Gigabyte, Asus , MSI, *Intel, ECS, Zotac, EVGA, Foxcomm, XFX, TYAN, Phitronics, Sapphire Technology, ABIT, VS Company e Micronic Computer INC < *A Intel no primeira da lista, e pelo seguinte: A empresa Foxconn tambm fabrica placas-me para a Intel (confira no link abaixo). Portanto, ao comprar modelos de placas-me da Intel, na verdade esses modelos podem ter sidos fabricados pela Foxconn. 31

http://pt.wikipedia.org/wiki/Anexo:Lista_de_fabricantes_de_hardware#Placa-M.C3.A3e

Os fabricantes de placas-me Quais so?


interessante observar que, quando se fala em placas-me na verdade nos fabricantes, respectivas marcas e modelos de placas-me somente dois ou trs nomes so citados: Asus, Gigabyte e MSI. Porm, j existiram (ou ainda existem) uma boa quantidade de empresas que fabricam placas-me (ou apenas usam seus nomes nelas), como estas da lista (e do link) abaixo: ( http://www.clubedohardware.com.br/artigos/970 ) >Asus, ABIT, Asrock, Aopen, Albatron, Amptron; BCM, BFG Technologies, Biostar; Chaintech, Chantec. DFI (Design For Innovation), Digitron; ECS (Elite Group), EVGA, EpoX; FIC, Foxconn; Gigabyte; Intel, IWILL; Jetway; Kinpo Electronic; Mercury, Magic Pro, Mach Speed, MSI (Micro-Star International), Mitac international, Micronic Computer INC; Netgate; PCWare, Phitronics, PCChips, PCMicro; Positivo (modelo POS MI945AA, por exemplo, modelo cedido pela MSI); Soyo, Shuttle Computer, Soltek, Supermicro; TYAN; USI (Universal Scientific Industrial), Universal Abit; VIA Tecnology, VS Company; XFX, Zotac; e muitas outras fabricantes de placas-me de menor expresso no enorme mercado mundial.

Os fabricantes de hardware Quais so?


Se a lista de empresas que fabricam placas-me j grande, imagine a lista dos fabricantes de hardwares para os microcomputadores. Para isto basta conferir neste link abaixo: http://pt.wikipedia.org/wiki/Anexo:Lista_de_fabricantes_de_hardware#Placa-M.C3.A3e

Tecnologia SMP (Symmetric Mult Processing)


Este termo se refere a tecnologia para Multiprocessamentos de dados por dois ou mais processadores instalados numa mesma placa-me, e operando conjuntamente numa mesma placa-me. Na primeira imagem acima vemos um modelo de placame que opera com quatro processadores.

32

Esta tcnica bem empregada quando se deseja que os dados sejam processados por duas CPUs (no modo paralelo), dividindo-se assim, a carga que estaria reservada a um nico processador. Vale lembrar aqui que no modo SMP de dois processadores operando a 2 GHz cada, no ser o mesmo que se a mquina estivesse operando a 4 GHz, como ocorre no modo Dual Core (DC). No modo DC todo o processamento torna-se mais estvel, contnuo, seguro e mais rpido tambm, j que como se a mquina contasse com um processador operando a 4 GHz. No modo SMP moderno, todo o processamento tambm se torna mais estvel, contnuo e seguro, podendo operar mais rpido ainda j que a mquina conta com duas CPUs DualCore e opera como se existisse somente um processador operando a 3 GHz, por exemplo. Entretanto, em termo de estabilidade no processamento o desempenho da mquina muito superior caso ele contasse com um processador somente. Nesta tcnica ou arranjo SMP, cada CPU possui e usa seu prprio cach L1 e L2 e, como bem mostra a figura acima (da esquerda), caso a CPU 1 necessite de um determinado dado e este dado no se encontre gravado no L1 (este geralmente reservado para a gravao temporria de cdigos e instrues utilizados pela respectiva CPU) e tambm no se encontre na L2 (este sempre reservado para a gravao temporria de dados que j foram ou sero processados pela respectiva CPU). A CPU 1 ter que buscar o dado (ou dados) diretamente na memria RAM (observe todo o processo acompanhando a imagem acima, a esquerda). Observar ainda o seguinte: quando o cach L1 reservado somente para cdigos e instrues, a CPU acessa diretamente o L2 em busca do respectivo dado. Caso no encontre o respectivo dado ela buscar na memria RAM usando o bus (barramento para o trfego de sinais digitais na placa-me), o FSB (Front Side Bus) e o bus MB (Memory Bus barramento da memria), como pode ser visto na imagem acima (esquerda). Atualmente o controlador de memria no mais se encontra no Chipset North bridge, e sim, est integrado no prprio chip do processador (processadores da AMD e da Intel). Portanto, no mais utiliza o lento FSB e as comunicaes entre a CPU (ou CPUs) tornam muito mais rpidas veja um exemplo na imagem acima, da direita. Como exemplo, o processador DualCore Intel Core 2 Duo E8400, 1600 MHz (6 x 267) possui umL1 (Level 1) contando com 64 KB (sendo 32 KB para a paridade cdigos para verificao de erros nos bits de dados; e 32 KB para o ECC Error Corretion Code, Cdigos para a correo de erros). J o L2 de 6 MB para a gravao temporria de dados j processados pela CPU, no modo de On-Die, ECC, Full-Speed.

Alguns termos tcnicos usados


As reas da informtica moderna esto repletas de inmeros termos tcnicos. Porm, aqui, apresentamos alguns termos tcnicos relacionados com esta matria em questo. 33

Somos de opinio que todos os professores de informtica deveriam orientar seus alunos j nas primeiras aulas para que os mesmos estudem os termos tcnicos desta vasta rea. Com isto, eles notaro que fica mais fcil estudar, aprender e conhecer os assuntos que esto estudando naquele momento e os posteriores tambm.

AGP (Acelerated Graphics Port Porta para aceleradora grfica); ALU (Arithmetic Logic Unit Unidade para processamento de dados aritmticos); AMD (Advanced Micro Device Refere ao segundo maior fabricante de CPUs em primeiro est a Intel); BIOS (Basic Input/output System Sistema bsico de entrada e sada); CMOS (Complementary Metal Oxide Semicondutor Semicondutor metal-xido complementar);

CPU (Central Processing Unit Unidade para processamento de dados binrios imagem acima, esquerda); DC (Dual Core Ncleo duplo, processadores com 2 ncleos internos); FlashROM (Flash Read Only Memory Memria para leituras e escritas rpidas) FSB (Front Side Bus Barramento frontal superior); GPU (Graphic Processing Unit Unidade para o processamento de dados grficos imagem acima, direita); L1/L2 (Level 1 e 2 Memria cach Nvel 1 e 2 no ncleo (ou ncleos) do processador); PATA (Parallel Attachment Technology Advanced Tecnologia avanada para conexo paralela);

34

PCI-Express (Peripheral Component Interconnect Express Conexo expressa para componentes e perifrico); PS/2 (Port Serial 2 Porta serial verso 2); ROM (Read Only Memory Memria para somente leitura); SATA (Serial Attachment Technology Advanced Tecnologia avanada para conexo serial); USB (Universal Serial Bus Barramento universal serial);

35