Publicidade cabeçário

segunda-feira, 22 de outubro de 2012

S.O. - Conceito Multithread


      Na tentativa de diminuir o tempo gasto na criação/eliminação de (sub)processos, bem como economizar recursos do sistema como um todo, foi introduzido o conceito de thread. Em um ambiente de múltiplos threads (multithread), não é necessário haver vários processos para se implementar aplicações concorrentes. No ambiente multithread, cada processo pode responder a várias solicitações concorrentemente ou mesmo simultaneamente, se houver mais de um processador.
Funcionamento de Threads
Funcionamento de Threads
Fonte da imagem:linhadecodigo.com.br


      Em um ambiente multithread, não existe a ideia de um programa, mas de threads (linhas). O processo, neste ambiente, tem pelo menos um thread de execução, podendo compartilhar o seu espaço de endereçamento com inúmeros threads, que podem ser executados de forma concorrente e/ou simultânea, no caso de múltiplos processadores.Threads compartilham o processador da mesma maneira que um processo. Por exemplo, enquanto um thread espera por uma operação de E/S, outro thread pode ser executado. Cada thread possui seu próprio conjunto de registradores (contexto de hardware), porém compartilha o mesmo espaço de endereçamento com os demais threads do processo. Os threads de um mesmo processo compartilham, além do espaço de endereçamento, outros atributos, como temporizadores e arquivos, de forma natural e eficiente.
     Um browser é um exemplo de uma aplicação multithread
 Várias coisas podem ocorrer ao mesmo tempo:
  • scroll
  • download de um applet
  • download de uma imagem
  • tocar uma animação
  • tocar um som
  • imprimir uma página em background
  • download de uma nova página
  • olhar 3 applets de ordenação trabalhando
  • Um thread parece ser um processo mas
  • Compartilha o mesmo "espaço de endereçamento"
  • É muito rápido chavear a execução entre threads mas não entre processos
  • Um thread recebe alguns recursos próprios durante a execução
  • Uma pilha de execução para poder chamar métodos, passar parâmetros, alocar variáveis locais
  • Um "Program Counter"
  • Chamamos isso o "contexto de execução do thread"
  • Alguns autores chamam thread de "contexto de execução"

Fonte: Autor:Maia, Luiz Paulo.18/05/98, Tema da monografia:Multithread http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/threads/threads1.html
Adaptado:Arroyo,Gabriel.