22
Programação Concorrente Processos e Threads Prof. Mariana Massimino Feres

Processos e Threads

Embed Size (px)

DESCRIPTION

Definição de processos computacionais e threads.

Citation preview

Page 1: Processos e Threads

Programação Concorrente

Processos e Threads

Prof. Mariana Massimino Feres

Page 2: Processos e Threads

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

Page 3: Processos e Threads

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

Page 4: Processos e Threads

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

Page 5: Processos e Threads

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

Page 6: Processos e Threads

Processos e Threads

(a) CPU-boundtempo tempo

E/ S E/ S

UCP UCP

(b) I/ O-bound

Page 7: Processos e Threads

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

Page 8: Processos e Threads

Processos e Threads

Como implementar concorrência em uma

aplicação??

Programador pode separar partes do programa em

processos diferentes

Page 9: Processos e Threads

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

Page 10: Processos e Threads

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

Page 11: Processos e Threads

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

Page 12: Processos e Threads

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

Page 13: Processos e Threads

Processos e Threads

Ambiente monothread

Possui apenas uma thread no processo

Para implementar concorrência na aplicação precisa

usar processos independentes ou subprocessos

Page 14: Processos e Threads

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

Page 15: Processos e 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

...

...

Page 16: Processos e Threads

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

Page 17: Processos e Threads

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

Page 18: Processos e Threads

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

Page 19: Processos e Threads

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

Page 20: Processos e Threads

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

Page 21: Processos e Threads

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

Page 22: Processos e Threads

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