Gerenciamento De Processos E Threads
Artigo: Gerenciamento De Processos E Threads. Pesquise 862.000+ trabalhos acadêmicosPor: denesiodavi • 27/5/2013 • 1.331 Palavras (6 Páginas) • 922 Visualizações
INTRODUÇÃO
As threads são definidas como processos de pouco peso. São a unidade básica do processador central de um programa sendo um córrego seqüencial da execução dentro de um processo. Com o intuito de mostrar uma visão geral sobre o assunto, abordaremos conceito, benefícios, utilizações, gerenciamento e características de threads em alguns Sistemas Operacionais, bem como algumas aplicações.
CONCEITO
Processo com entidade própria, com próprio contexto de escalonamento, mas que compartilha a estrutura de dados com seu pai. Thread ou processo leve é uma unidade básica de utilização de CPU que consiste em: apontador de instruções, conjunto de registradores e espaço de pilhas. Uma thread compartilha com threadsirmãs: a área do código, a área de dados e recursos do sistema operacional. Em uma tarefa dotada de múltiplos fluxos de execução, enquanto um fluxo está bloqueado esperando, um outro fluxo na mesma tarefa pode continuar rodando. Cooperação de múltiplas threads em uma mesma tarefa aumenta o throughput e performance. O mecanismo de threads permite que processos seqüenciais sejam executados paralelamente, apesar de poderem fazer chamadas ao sistema que bloqueiam processos. Na programação é um processo que faz parte de um processo maior ou programa. Em uma estrutura de dados em forma de árvore, um ponteiro que identifica o nó imediatamente superior (Pai) sendo usado para facilitar o percurso da árvore (CASTRO, 1998). As threads operam de forma semelhante a processos quanto ao seu estado, podem ser pronto, bloqueado, executando e terminado, apenas uma thread de cada vez em execução na CPU, executa seqüencialmente e pode criar threads filhas.E se diferem de processos, por exemplo, quando uma thread bloqueia, outra da mesma task pode ser executada, não são independentes umas das outras, podendo invadir o espaço de outra a invalidando, não são protegidas umas das outras. Threads múltiplas em um único Espaço de Endereçamento podem ser utilizadas para implementar concorrência dentro de um processo. Imagine que você tem um processo que serve requisições de I/O (por exemplo, um servidor lê arquivos ou um
sistema de bancos de dados):
a) Quando uma thread solicita uma
leitura, ela fica bloqueada até que os dados
fiquem disponíveis;
b) Um único processo com uma única
thread não pode executar nada de útil
enquanto o disco está sendo acessado;
c) Com threads múltiplas, uma thread
pode continuar a executar enquanto a outra
espera pelo I/O;
d) compartilham memória, arquivos
abertos e variáveis globais;
e) mantém cópias privadas de pilhas,
contador de programa e estado de
processador.
CARACTERÍSTICAS
a) Variáveis locais da thread sãoalocadas em memória estática própria
b) Todas as threads de um processo compartilham a memória e os recursos desse processo
BENEFÍCIOS
Criar/terminar uma thread é mais rápido que criar/terminar um processo O chaveamento de duas threads (do mesmo processo) gasta menos tempo que o chaveamento entre dois processos diferentes As threads de um processo compartilham memória e arquivos e podem se comunicar sem a intermediação (invocação) do núcleo Aplicações que requerem o compartilhamento de buffers (por exemplo, produtores e consumidores) se beneficiam da utilização de threads.
UTILIZAÇÕES
Permitir a exploração do paralelismo real oferecido por máquinas multiprocessadores. Aumentar número de atividades executadas por unidade de tempo (throughput). Aumentar tempo de resposta, possibilidade de associar threads a dispositivos de entrada/ saída. Sobrepor operações de cálculo com operações de entrada e saída.
GERENCIAMENTO DE THREADS
Suspender um processo acarreta a suspensão de todas as suas threads, considerando que elas compartilham o mesmo espaço de endereçamento A terminação de um processo termina todas as threads dentro do processo. Podem ser implementadas em dois níveis diferentes:.nível do usuário e nível do núcleo
Nível do Usuário:
Todo o gerenciamento é feito pela aplicação; o núcleo não conhece a existência de threads; o chaveamento não requer a intervenção do núcleo (execução em modo privilegiado); o escalonamento é específico da aplicação não passa pelo Kernel; chamadas de sistema normalmente bloqueiam o processo e não pode fazer uso de um processador
Nível do Núcleo:
O núcleo gerência threads (incluindo criação e escalonamento) e o processo mantêm a informação de contexto; o chaveamento de threads requer a intervenção do núcleo; se uma thread bloqueia, o núcleo pode executar outra thread do mesmo processo e o núcleo pode escalonar várias threads de um mesmo processo em processadores diferentes. Gerenciamento Misto: A criação de threads é realizada no espaço do usuário, a maior parte do escalonamento e sincronização de threads também é feita no espaço do usuário, chamadas bloqueantes das threads não bloqueiam o processo e combina as vantagens e minimiza as desvantagens das técnicas puras.
MULTITHREADING
É a execução de vários processos em uma seqüência rápida (multitarefa) dentro de um mesmo programa. Os sistemas operacionais podem suportar várias threads de execução em um único processo / espaço de endereçamento,
...