Post on 22-Dec-2015
description
Programação Concorrente
Processos e Threads
Prof. Mariana Massimino Feres
Processos e Threads
Definição de Processo
É um programa em execução, incluindo os valores
correntes do contador de programa, registradores, e
variáveis. O conceito de processo é dinâmico, em
contraposição ao conceito de programa (código fonte),
que é estático
Processos e Threads
Programa
Contexto deSoftware
prioridade deexecução
registrador PC
data/ horade criação
tempo deprocessador
registrador SP
quotas
privilégios
endereços de memóriaprincipal alocados
registradorde status
owner (UID)
PID
nomeregistradores
gerais
Contexto deHardware
Espaço deEndereçamento
Processos e Threads
Processos representados resumidamente
Bloco de Controle de Processo (BCP), também
conhecido por Bloco de Controle de Programa ou
Descritor de Processo.
Estrutura de dados contendo informações importantes
sobre o processo
Processos e Threads
Estados do processo
Indefinido
Bloqueado ou em espera
Pronto para execução
Em execução
Os processos podem ser classificados como
CPU-bound: ligado a CPU. Passa a maior parte do tempo no estado em execução utilizando ao processador. São processos que executam poucas operações de E/S Ex: cálculos científicos
I/O-bound: ligado a E/S. Passa a maior parte do tempo no estado bloqueado. Realizam grande quantidade de operações de E/S. Ex: programa editor
Processos e Threads
(a) CPU-boundtempo tempo
E/ S E/ S
UCP UCP
(b) I/ O-bound
Processos e Threads
Processos Foreground
Tem comunicação com o usuário durante o
processamento
Processo Background
Não existe comunicação com o usuário durante o
processamento
Processos e Threads
Como implementar concorrência em uma
aplicação??
Programador pode separar partes do programa em
processos diferentes
Processos e Threads
Processos independentes
Não existe vínculo do processo criado com o processo
criador
Tem contexto de HW, SW e espaço de endereçamento
próprio
Processos e Threads
Subprocesso
Criado dentro de uma
estrutura hierárquica
Nesse caso existe
dependência entre o
processo criador e o
processo filho. Se o criador
deixar de existir, os filhos
são automaticamente
eliminados
Como o pai, os processos
filhos possuem seu próprio
BCP
Processos e Threads
Os dois mecanismos apresentados (processos
independentes e subprocessos) demandam
alocação de recursos do sistema sempre que um
novo processo e criada
Consome tempo de processamento na criação e na
eliminação (liberar recursos alocados)
Sincronização e comunicação entre os processos mais
complicada, pois possuem espaço de endereçamento
diferentes
Contextode hardware
Contextode hardware
Contextode hardware
Espaço deendereçamento
Co
nte
xto
de
soft
wa
re
Thread 3Thread 2Thread 1
Processos e Threads
Nesse conceito surgiu o conceito de threads
Tentar reduzir tempo de criação, eliminaçao e troca de
contesto de processos da aplicação e ainda economizar
recursos do sistema.
Compartilham o processador como os processos
Processos e Threads
Ambiente monothread
Possui apenas uma thread no processo
Para implementar concorrência na aplicação precisa
usar processos independentes ou subprocessos
Processos e Threads
Ambiente multithread
Os programas são associados a threads e não a
processos
Processo pode compartilhar seu espaço de
endereçamento com inúmeras threads
Assim, podemos definir thread como sendo uma
subrotina de um programa que pode ser executada
de forma assíncrona, concorrentemente ao
programa chamador
Programador deve especificar quais partes serão
associada a threads
Processos e Threads
Espaço deendereçamento
Processo
Programa Principal
Co
nte
xto
de
Ha
rdw
are
Co
nte
xto
de
Ha
rdw
are
Co
nte
xto
de
Ha
rdw
are
Call Sub_1
Call Sub_2
Thread_1
Thread_2
Thread_3
PCSP
PCSP
PCSP
Fim
Sub_2
Variáveis
Ret
Sub_1
Ret
...
...
Processos e Threads
As threads compartilham o processador com os
processos e passam pelos mesmos estados
Enquanto uma espera por E/S outra pode ser executada
Para permitir essa troca, cada thread possui seu próprio
contexto de HW com o conteúdo dos registradores
TCB – thread control block ou BCT – bloco de controle de
thread
O sistema escalona uma thread do processo para
execução e não o próprio processo
Processos e Threads
Vantagens do uso de threads
Enquanto uma está esperando operações de E/S, outra
está rodando em background
Muito utilizado em sistemas cliente-servidor
Pode ser utilizado para implementar o núcleo do sistema
operacional
Arquitetura microkernel
Processos e Threads
Se o programador quem define as threads, como é
feito?
Existe rotinas para criação de threads
Não é um desenvolvimento trivial
Muitas threads pode sobrecarregar o sistema
O compartilhamento de recursos deve ser realizado de
maneira sincronizada
E sempre ter em mente que:
Para se beneficiar da técnica, uma aplicação deve permitir
que partes diferentes do código sejam executados
concorrentemente de forma independente
Processos e Threads
Arquitetura e implementação
Em modo usuário S.O. não sabe da existência de múltiplas threads
Aplicação que gerencia
Vantagem: pode ser utilizado em um S.O. que não implementa
threads
Dispensa mudança de modo de acesso, pois não usa rotinas no núcleo
Desvantagem:
tratamento individual de
sinais
Modousuário
Modokernel
Kernel
Biblioteca
Th
rea
d 0
Th
rea
d 4
Th
rea
d 3
Th
rea
d 2
Th
rea
d 1
Processos e Threads
Em modo Kernel
As threads são criadas e gerenciadas por meio de
chamadas a rotinas do sistema
S.O. sabe da existência de cada thread e pode escaloná-
las
Problema:
Baixo desempenho
Utiliza muitas mudanças de modos de acesso
Modousuário
ModokernelKernel
Th
rea
d 0
Th
rea
d 4
Th
rea
d 3
Th
rea
d 2
Th
rea
d 1
Processos e Threads
Modo híbrido
Tenta combinar as vantagens dos modos usuário e kernel
Herda os problemas de ambos
Modousuário
Modokernel
Kernel
TMK 0 TMK 3TMK 2TMK 1
Biblioteca
TM
U 0
TM
U 4
TM
U 5
TM
U 3
TM
U 2
TM
U 1
Processos e Threads
Scheduler Activation
O núcleo do S.O. troca mensagens com a biblioteca
de threads
Evita mudanças de modo de acesso desnecessárias
Ex: se a thread for para o estado de espera, o núcleo não
precisa tomar conhecimento, basta que a própria
biblioteca em modo usuário escalone outra
Modousuário
ModokernelKernel
Biblioteca
Th
rea
d 0
Th
rea
d 4
Th
rea
d 3
Th
rea
d 2
Th
rea
d 1