Threads

Disponível somente no TrabalhosFeitos
  • Páginas : 8 (1755 palavras )
  • Download(s) : 0
  • Publicado : 3 de setembro de 2012
Ler documento completo
Amostra do texto
Threads
Introdução
Até o final da década de 70, os sistemas operacionais mais populares, como Tops-10 (DEC), MVS (IBM) e Unix (Bell), suportavam apenas processos, sem threads. Em 1979, durante, o desenvolvimento do sistema operacional Toth, foi introduzido o conceito de processos lightweight (peso leve), onde o espaço de endereçamento de um processo poderia ser compartilhado por váriosprogramas.

Apesar do conceito revolucionário, a idéia não foi aceita comercialmente e somente em meados de 1980, com o desenvolvimento do sistema operacional Mach, na Universidade de Carnegie Mellon, ficou clara a separação entre o
conceito de processo e threads. Atualmente, o mesmo conceito pode ser encontrado em sistemas operacionais, como OS/2 (IBM), Solaris (Sun) e Windows NT (Microsoft), dentreoutros.

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 à thread é fornecido pelo próprio sistema operacional (SO), no caso da Kernel-Level Thread (KLT), ou implementada através de uma biblioteca de uma determinada linguagem, nocaso de uma User-Level Thread (ULT).

Threads são conhecidas como processos leves. Basicamente, esse atributo se deve ao menor tempo gasto em atividades de criação e escalonamento de threads, se comparadas aos processos. O compartilhamento de memória entre as threads maximiza o uso dos espaços de endereçamento e torna mais eficiente o uso destes dispositivos.

Como todas os threads temexatamente o mesmo espaço de endereçamento, eles também compartilham as mesmas variáveis globais. Assim, como cada thread pode acessar qualquer posição de memória dentro do espaço de endereçamento do processo, é possível a um thread ler, escrever ou até apagar informações usadas por outra thread. Não existe um meio de proteção para isso, fica sob responsabilidade do usuário este cuidado já quenormalmente criamos threads para cooperar e não competir. O escalonamento entre threads acontece da mesma forma que entre processos.

Portanto, cada thread tem o mesmo contexto de software e compartilha o mesmo espaço de memória de um mesmo processo pai. Contudo, o contexto de hardware de cada fluxo de execução é diferente. Conseqüentemente, o tempo “perdido” com o escalonamento das threads é muitomenor do que o escalonamento de processos. Além disso, não há acesso protegido a memória nativamente (a implementação é de responsabilidade do programador) devido ao compartilhamento do espaço de memória.

Ambiente Monothread

Um programa (tarefa) é uma seqüência de instruções, composto por desvios, repetições (iterações) e chamadas de procedimentos e/ou funções. Em um ambiente de programaçãomonothread, um processo suporta apenas um programa no seu espaço de endereçamento e apenas uma instrução do programa é executada. Caso seja necessário criar-se aplicações concorrentes e paralelas são implementados múltiplos processos independentes e/ou subprocessos.

A utilização de (sub)processos independentes permite dividir uma aplicação em partes que podem trabalhar de forma concorrente. Porexemplo, suponha que um processo seja responsável pelo acesso a um banco de dados e existam vários usuários solicitando consultas sobre esta base. Caso um usuário solicite um relatório impresso de todos os registros, osdemais usuários terão de aguardar até que a operação termine. Com o uso de múltiplos processos, cada solicitação implicaria a criação de um novo processo para atendê-la, aumentando othroughput da aplicação. Existem, porém, dois problemas neste tipo de abordagem.

O uso de (sub)processos no desenvolvimento de aplicações concorrentes demanda consumo de diversos recursos do sistema. Sempre que um novo processo é criado, o sistema deve alocar recursos (contexto de hardware, contexto de software e espaço de endereçamento) para cada processo, além de consumir tempo de UCP...
tracking img