Processos

Disponível somente no TrabalhosFeitos
  • Páginas : 20 (4943 palavras )
  • Download(s) : 0
  • Publicado : 28 de maio de 2012
Ler documento completo
Amostra do texto
sIII - Processos e Threads
rocesso é geralmente entendido como um programa em execução porém, na realidade, trata-se de uma estrutura mais complexa que contém, além do programa no seu
formato executável, todas as informações necessárias (contexto) à execução e ao
controle da execução do mesmo, como por exemplo: o contador de programa, pilhas, registradores
e área de dados.

P

O programaé uma entidade passiva, que pode ser visto como o conteúdo de um arquivo
em disco, enquanto que o processo é uma entidade ativa, possuindo um contador de programa
(PC), que especifica a próxima instrução a ser executada, e um conjunto de recursos a ele alocados.
Nos sistemas operacionais mais antigos, cada processo possuia um único fluxo de controle,
ou seja, as instruções são executadasseqüencialmente, uma de cada vez. Já nos sistemas mais modernos, um processo pode, por sua vez, dar início a um ou mais subprocessos, que são executados
em paralelo ou de forma concorrente com o processo pai e, para todos os efeitos, apresentam as
mesmas características e particularidades de um processo qualquer, no tocante a contexto e fluxo de
controle.
Threads, por outro lado, representam uma novaconcepção na forma de um processo paralelizar a execução de partes do seu código. Os threads, conceitualmente, se assemelham a subprocessos porém, diferentemente destes, não possuem identidade própria e, portanto, não são independentes. Cada thread possui seu próprio contador de programa, sua pilha e seus registradores
porém compartilham todos o mesmo espaço de endereçamento, isto é, como sefossem uma única
entidade .
Nos sistemas tradicionais, cada processo tem seu próprio contexto e apenas um fluxo de
controle - são do tipo single thread. Freqüentemente, no entanto, é desejado ter-se múltiplos fluxos
de controle que compartilhem do mesmo espaço de endereçamento e sejam executados de forma
paralela (no caso de multiprocessamento) ou de forma concorrente (no caso demonoprocessamento), como se fossem processos separados.
Threads satisfazem estes requisitos, pois compartilham do mesmo espaço de endereçamento com o processo pai e com os demais threads, e podem ser executados de forma concorrente
ou paralela (fig. VIII.1). O esquema de threads, no entanto, só pode ser utilizado quando for especificamente suportado pelo sistema operacional ou quando da existência de umgerenciador de threads.
Os threads não são tão independentes como os processos e os subprocessos, uma vez que
compartilham de um mesmo espaço de endereçamento e, por conseguinte, compartilham das mesmas variáveis globais, dos mesmos arquivos, das mesmas tabelas, etc. Uma vez que todo thread
pode acessar todo o espaço virtual de endereçamento do processo pai e dos demais threads, ele
pode “ler eescrever” em qualquer local, mesmo na pilha dos outros threads - o que significa que
não há qualquer forma de proteção de acesso entre os threads.
Os threads compartilham a UCP da mesma forma que os processos o fazem, isto é, podem
criar outros threads e podem ficar suspensos aguardando (em block waiting) pelo término de uma

P rocessos e Threads

39

operação qualquer (system call).Comparativamente, o contexto de um thread e de um processo é
constituído por:
Thread:

Processo:

Program Counter
Stack (pilha)
Conjunto de registradores
Registrador de “status”
Threads filhos
-

Program Counter
Stack
Conjunto de registradores
Registrador de “status”
Espaço próprio de endereço
Variáveis globais
Arquivos abertos
Semáforos
Informações de contabilização
Processosfilhos

Processo Y

P
P
P

Contexto do Sub-Processo A

Contexto do Sub-Processo B Contexto do Sub-Processo C

PC
A

B

PC

C
PC

Processo X com 3 threads A, B, C

Figura VIII.1 - Processo Y com 3 subprocessos e Processo X com 3 Threads
Cabe ao sistema operacional a incumbência de prestar todo o suporte, os recursos e a proteção que forem necessários à execução eficiente e...
tracking img