Você está na página 1de 3

-----Tema: Threads-----

EX: Quando os Threads da Intel comearam a comercializar produtos com mais que um
core;
Em determinadas sistemas existiam placas com mais que um processador, tentaram i
ntegrar nesse sistema, dentro do mesmo processador, dois processadores,
e fazer a ligao l dentro, tendo s um socket. Partilham interface para o exterior;
Do ponto de vista do SO, como se tivessemos dois processadores, dois sockets;
-------------------------
Multi-core Architecture:
Processador de um core: unidade que liga ao sistema e faz a descodificao dos dados
, e depois a execuo;
Existe uma rea para clculos inteiros e uma rea para clculos com vrgula flutuante;
As unidades esto adjacentes uma outra, porque quando executamos uma instruo ela lid
a do bus, descodificada, e vai ser executada no ncleo de inteiros
sem passar pelo da vrgula flutuante, por exemplo;
Podemos estar a usar duas unidades ao mesmo tempo no mesmo processador;
-------------------------
Hyper-Threading:
H certos processadores da linha Intel em que h partilha de cache e comunicao interna
entre os prprios cores, logo, existe maior sinergia entre
os prprios cores e uma maior organizao interna.
Utilizando esta tecnologia, se tivermos instrues distintas eles reorganizam-nas pa
ra linhas diferentes at num mximo de 4 threads, e executam-nas
(em paralelo);
Na maioria das motherboards, podemos desactivar esta tecnologia a partir da BIOS
;
Com esta tecnologia ligada, conseguimos uma ganho de volta de 40% na maioria dos
casos;
Se apenas forem usadas instrues iguais (EX: sempre na rea da vrgula flutuante), no h g
anhos e podemos at perder dados;
Funciona como se fossem dois processadores lgicos/virtuais: virtualmente cada um
tem dois threads o que perfaz um total de 4 threads,
ou seja, 4 processadores virtuais;
Tendo dois cores e com o hyper-threading ligado, conseguimos ter 4 threads apare
ntemente a funcionar ao mesmo tempo, logo havero melhores resultados;
Num sistema multi-programado, cada um tem uma ou mais threads a funcionar, logo
h um ganho maior no global;
Pode-se estar a executar duas coisas ao mesmo tempo, mas quando tem que se utili
zar a mesma linha, no verdadeiramente paralelo, mas sim virtualmente;
Se tivermos dois cores, estaremos sempre verdadeiramente em paralelo;
-------------------------
EX: Niagara2 Chip Overview:
Tem 8 cores, e cada core permite ao mesmo tempo 8 threads, logo virtualmente ter
emos 64 threads a funcionar ao mesmo tempo no processador;
Tem memria cache partilhada entre todos os cores, e cada um deles tem memria indiv
ual;
-------------------------
EX: Sistema com 4 processadores, cada processador tem 2 cores, e cada um suporta
Hyper-Threading. Logo, teremos 16 processadores lgicos/virtuais;
Software de virtualizao para criar mquinas virtuais na mquina fsica - Firmware;
Configurao do sistema: Possui 4 sockets, cada um deles tem 2 cores, s que cada um d
esses cores utiliza a tecnologia Hyper-Threading,
logo 16 processadores lgicos e pode correr 16 threads ao mesmo tempo;
Estes processadores so alocados a cada mquina virtual, e no uma alocao esttica.
Estes processadores virtuais vo ser mapeados nos processadores reais, mas no so sem
pre os mesmos 4, pois noutro instante podemos usar threads diferentes;
------------------------
EX: AMD
Existe tecnologia de partilha de informao entre processadores;
Com 4 cores por exemplo, comunicam entre eles internamente;
indiferente ser multi-core ou apenas um core para programas que no necessitem de
partilha de informao entre reas, ou seja, que no necessitem
de usar threads diferentes;
Se tivermos s um core, cada programa apenas tem algum tempo sob o processador;
Se for multi-core, pelo menos dois (dependendo de quantos so) esto sempre em funci
onamento, e o programa no sabe em qual est a operar;
------------------------
Threads:
No sistema de single-threading (tradicional), h um nvel de funcionamento nico, poss
ui dados gerais do processo (code segment),
segmentos de dados (data segment) e dados sobre ficheiros abertos;
No funcionamento propriamente dito temos um segmento de registo e uma stack (par
a sabermos onde regressar), um program counter
e tem uma sequncia de instrues;
No sistema multi-threading, podemos ter vrios programas a funcionar ao mesmo temp
o. O code segment partilhado por todos, a zona de dados tambm visvel
para eles todos
VANTAGENS: no precisamos de duplicar informao; DESVANTAGENS: tem de haver sincroniz
ao.
Temos tambm dados sobre ficheiros abertos;
Cada thread est a funcionar num determinado local, e temos de ter um Instruction
Pointer para cada um deles, e cada thread tem uma stack prpria;
Quando carregamos um programa em memria e ele se transforma em processo, temos se
mpre uma thread principal;
------------------------
Vantagens de usar multi-threads:
Interativo de uma forma eficiente;
H partilha de recursos, apenas necessitamos de uma e s uma cpia dos dados;
Economicamente adequado, e muito vantajoso em sistemas com mltiplos cores;
------------------------
H vrios tipos de implementao de multi-threads no SO;
Muitos para um: temos vrios processos, cada processo tem vrios threads, e temos um
conjunto de threads que mapeado em um e um s thread no SO;
Um para um: cada vez que criado um thread ao nvel do utilizador, o SO cria um thr
ead ao nvel do SO, e h um mapeamento individual no SO;
Muitos para muitos: temos n threads criados ao nvel do utilizador, n threads cria
dos ao nvel do SO, e o SO vai mapeando os threads medida que for necessrio.
Mais difcil de gerir, mas mais eficiente;
Modelo de dois nveis: Mistura um para um para servios mais importantes, mapeando i
ndividualmente, e nos servios menos importantes
utiliza-se muitos para muitos;
Thread: Executa um conjunto de instrues sequenciais;
Quando criamos um thread, dizemos qual a funo que queremos chamar e ela a
primera a ser executada;
Tem stack para variveis locais, podemos pr prioridades diferentes ou prior
idades globais, pode receber sinais individuais e tem um stack pointer;
Pode-se criar, abandonar e juntar threads em qualquer altura com o proce
sso em execuo;

Biblioteca de p-threads:
p-thread create - cria um thread: passa-se um valor por referncia para o thread I
D, dizemos qual a funo a ser chamada e o conjunto de argumentos;
p-thread_exit - sinaliza ao thread principal que o prprio terminou;
p-thread_join - programa principal cria todos os threads, e no final espera que
todos terminem;

Você também pode gostar