Thread ou linha de execução
Artigo: Thread ou linha de execução. Pesquise 862.000+ trabalhos acadêmicosPor: rafael.caixeta • 26/11/2013 • Artigo • 803 Palavras (4 Páginas) • 477 Visualizações
Threads
Guilherme Lúcio Pereira Caixeta - TADS 2012/2 –
Sistemas Operacionais 1- Instituto Federal de Goiás -
e- mail: guilherme.lpcaixeta@gmail.com
Thread ou linha de execução é uma das maneiras utilizadas por um processo para dividir a si mesmo em duas ou mais tarefas que podem ser executadas simultaneamente, em geral, em arquiteturas multiprocessadas. O suporte a thread é fornecido pelo próprio sistema operacional (S.O), no caso da Kernel-Level Thread (KLT), ou implementada através de uma biblioteca determinada linguagem, no caso de uma User-Level Thread (ULT).
Um exemplo pode ser um jogo em que pode ser modelados em duas linhas de execução diferentes, sendo uma para desenho e outra para áudio. Para esta aplicação teríamos uma thread para tratar a rotina de desenho e outra para instruções de áudio. Para o usuário,
a imagem é desenhada ao mesmo tempo em que o áudio é emitido pelos alto-falantes, no entanto, em sistemas com uma única CPU cada linha de execução é processada por vez.
Assim, as threads permitem um paralelismo de granularidade mais fina (paralelismo de instruções) . O que se subtende- se por granularidade mais fina é que a unidade de calculo realizada de maneira concorrente é menor que a unidade de cálculo de um processo (paralelismo de aplicações). Para que isso aconteça cada thread tem um contador de programa (PC – Program Counter) e um registrador para as instruções (IR – Intruction Register) para dizer qual a próxima instrução a ser processada e qual está sendo processada no momento, além de registradores que contém suas variáveis atuais de trabalho, pilha com o histórico de instruções executadas e o estado de cada variável. Para que as threads sejam criadas elas devem pertencer a algum processo, ou seja, é necessário a criação de um processo anteriormente, assim podemos dizer que os processos são usados para agrupar recursos (espaço de endereçamento com o código do programa, variáveis globais, etc) enquanto as threads são unidades escalonadas pela CPU para executar as tarefas.
Threads são conhecidas por serem processos leves, basicamente isso se deve ao menor tempo de criação e escalonamento de threads, se comparadas a processos. O compartilhamento de memória entre as threads otimiza o uso de espaços de endereçamento e torna mais eficiente o uso dos dispositivos, como todas as threads possuem o mesmo espaço de endereçamento, elas também partilham as mesmas variáveis globais, assim, como cada thread pode acessar qualquer posição de memória dentro do espaço de endereçamento de um processo, é possível para thread ler, escrever ou até mesmo apagar informações usadas por outras threads, não existe meio de proteção para isso, e fica sob a responsabilidade do usuário já que normalmente as threads são criadas para cooperar e não para competir, o escalonamento entre as threads acontece da mesma forma que entre processos.
Uma das vantagens das threads está no formato do processo poder ser dividido em mais de uma linha de execução, quando uma determinada está esperando um determinado dispositivo de I/O ou qualquer outro
...