Sei sulla pagina 1di 18

Sistemas Operacionais

Processos e Threads

Prof. Humberto Caetano


Humberto.ccs@gmail.com
Objetivos
● Threads
● O uso de thread
● Modelo de thread clássico
● Threads no espaço do usuário e no núcleo
● Implementações híbridas
● Convertendo códigos monothread em
multithread

2/18
Threads
● Em sistemas operacionais tradicionais cada
processo tem uma thread em execução. O que
se torna a definição de processo.
● Em certos momentos pode ser interessante
dividirmos as tarefas de um processo em
threads separadas, aumentando a eficiência do
processo como um todo.

3/18
Threads
● A principal razão para a utilização das threads
é que podem ocorrer múltiplos eventos em um
único processo.
– Um editor de texto pode ter:
● A tela para edição
● Uma ferramenta para salvar automaticamente o arquivo
● Uma ferramenta de correção ortográfica
● Etc..

4/18
Threads
● Outro argumento para a utilização das threads
é que elas são mais simples de criar e destruir
que processos.
● Em sistemas que tem grande E/S a utilização
de threads pode aumentar muito a eficiência.
● Em sistemas com múltiplas CPUs se
beneficiam muito da utilização das threads.

5/18
Threads

6/18
O Modelo de Thread Clássico
● Um processo com múltiplas threads
executando em um sistema com uma única
CPU pode ser encarado da mesma forma que
vários processos rodando nesta CPU.
● Cada um deles vai competir pela CPU para que
seja executado

7/18
O Modelo de Thread Clássico

8/18
O Modelo de Thread Clássico
● Threads rodando em um processo não tem a
independência que threads rodando em
processos separados.
● Todos compartilham variáveis globais, podem
ter acesso a qualquer endereço de memória
dentro do espaço de endereçamento do
processo, podem ler, escrever ou apagar a
pilha de qualquer thread dentro do processo.

9/18
O Modelo de Thread Clássico
● Não há proteção entre threads
– Não é possível estabelecermos essa proteção
– Não é necessário.
● Dentro de um processo, em geral uma única
thread é iniciada, e inicia as outras threads.
● Cada uma delas tem sua pilha particular de
dados e variáveis.

10/18
O Modelo de Thread Clássico

11/18
Threads POSIX
● Para possibilitar a criação de programas com
threads em ambientes POSIX, foi definido um
padrão chamado Pthreads.
● Os threads Pthreads tem algumas
propriedades como:
– Um identificador
– Um conjunto de registros
– Um conjunto de atributos

12/18
Threads no Espaço
Usuário e Núcleo
● Threads no espaço do usuário.
– Uma das formas de implementação de threads é no
espaço usuário. O núcleo não tem conhecimento
dessas threads e apenas gerencia o acesso dos
processos ao processador.
– Uma vantagem inicial deste método é a
possibilidade de implementarmos threads em um
sistema que não tem suporte a threads.

13/18
Threads no Espaço
Usuário e Núcleo
● Threads no espaço do usuário.

14/18
Threads no Espaço
Usuário e Núcleo
● Threads no espaço do usuário.
– Outra vantagem neste modelo de implementação é
que a rotina que salva o estado do thread e o
escalonador são rotinas locais não havendo
necessidade de fazer chamadas ao núcleo,
agilizando o escalonamento dos threads.

15/18
Threads no Espaço
Usuário e Núcleo
● Threads no espaço do usuário.
– Um dos problemas com threads no espaço usuário
é como implementar as chamadas de sistema com
bloqueio. No momento que uma thread de usuário
efetuar uma chamada de sistema com bloqueio o
sistema operacional irá bloquear o processo,
bloqueando, assim, as outras threads.

16/18
Threads no Espaço
Usuário e Núcleo
● Threads no espaço do usuário.
– Outra coisa que pode ocorrer é a chamada “page
fault”. Que ocorre quando o programa não está
realmente na memória real, e o sistema precisa
encontrar mais espaço para ele. Caso um thread
cause um “page fault” o sistema operacional para o
processo todo, pois ele só reconhece os processos.

17/18
Threads no Espaço
Usuário e Núcleo
● Threads no Núcleo.
– Não bloqueia todo o processo sempre que uma
thread faz uma chamada ao sistema.
– Criar e destruir threads no núcleo tem um custo
muito alto, por isso muitos sistemas reciclam
threads.

18/18

Potrebbero piacerti anche