Threads e Processos - docente.ifrn.edu.br · Sistemas Operacionais ... Ganho de performance na...

18
Sistemas Operacionais Threads e Processos

Transcript of Threads e Processos - docente.ifrn.edu.br · Sistemas Operacionais ... Ganho de performance na...

Page 1: Threads e Processos - docente.ifrn.edu.br · Sistemas Operacionais ... Ganho de performance na criação e destruição de ... A troca entre esses tipos de threads é da

Sistemas Operacionais

Threads e Processos

Page 2: Threads e Processos - docente.ifrn.edu.br · Sistemas Operacionais ... Ganho de performance na criação e destruição de ... A troca entre esses tipos de threads é da

Threads

● Uma thread é uma linha de execução decódigo que executa em paralelo com outraslinhas do mesmo processo, compartilhando seuespaço de memória.

● Na prática uma thread é equivalente a um“mini-processo” dentro de um processo

● Isto permite que várias ações sejamexecutadas em paralelo por um mesmoprocesso

Page 3: Threads e Processos - docente.ifrn.edu.br · Sistemas Operacionais ... Ganho de performance na criação e destruição de ... A troca entre esses tipos de threads é da

Threads

● Em um programa muitas vezes é necessário executarmais de uma atividade ao mesmo tempo● ex.: aguardar a entrada de dados do usuário e reproduzir

um som enquanto aguarda

● Uma thread é muito mais leve que um processocomum.

● Ganho de performance na criação e destruição dethreads se comparada a processos (10 a 100x)

● Quando uma aplicação tem atividade I/O bound eCPU bound as threads podem acelerar a execução,pois não concorrerão por recurso.

Page 4: Threads e Processos - docente.ifrn.edu.br · Sistemas Operacionais ... Ganho de performance na criação e destruição de ... A troca entre esses tipos de threads é da

Threads

● O uso de Threads pode também garantir umuso máximo dos vários processadoresexistentes em uma CPU

Page 5: Threads e Processos - docente.ifrn.edu.br · Sistemas Operacionais ... Ganho de performance na criação e destruição de ... A troca entre esses tipos de threads é da

Threads

● Cenários de uso

Page 6: Threads e Processos - docente.ifrn.edu.br · Sistemas Operacionais ... Ganho de performance na criação e destruição de ... A troca entre esses tipos de threads é da

Uso de Threads

Page 7: Threads e Processos - docente.ifrn.edu.br · Sistemas Operacionais ... Ganho de performance na criação e destruição de ... A troca entre esses tipos de threads é da

Comparativo

Page 8: Threads e Processos - docente.ifrn.edu.br · Sistemas Operacionais ... Ganho de performance na criação e destruição de ... A troca entre esses tipos de threads é da

Modelo de implementação pelo S.O.

Page 9: Threads e Processos - docente.ifrn.edu.br · Sistemas Operacionais ... Ganho de performance na criação e destruição de ... A troca entre esses tipos de threads é da

Recursos de Threads

Page 10: Threads e Processos - docente.ifrn.edu.br · Sistemas Operacionais ... Ganho de performance na criação e destruição de ... A troca entre esses tipos de threads é da

Comandos comuns para Threads

● Create() - Cria uma nova thread comumentepassando como parâmetro um procedimento/métodoque esta irá exeutar

● Exit() - Encerra uma thread liberando os recursosalocados para esta

● Join() - Aguarda que uma outra thread termine paracontinuar a execução, útil quando uma threadnecessita de dados de outra

● Yield() ou Sleep() - Libera a CPU e volta para a filade pronto, comum quando a atividade da thread não énecessária no momento

Page 11: Threads e Processos - docente.ifrn.edu.br · Sistemas Operacionais ... Ganho de performance na criação e destruição de ... A troca entre esses tipos de threads é da

Implementação de threads peloS.O.

● Threads podem ser implementadas em nível deusuário ou em nível de kernel.

● As duas alternativas são válidas e temvantagens e desvantagens.

Page 12: Threads e Processos - docente.ifrn.edu.br · Sistemas Operacionais ... Ganho de performance na criação e destruição de ... A troca entre esses tipos de threads é da

Threads em nível de usuário

● Nesse modelo uma biblioteca de threads éresponsável por gerenciar a multiprogramaçãoe escalonamento das threads

Page 13: Threads e Processos - docente.ifrn.edu.br · Sistemas Operacionais ... Ganho de performance na criação e destruição de ... A troca entre esses tipos de threads é da

Threads em nível de usuário

● Nesse modelo a mudança de uma trhread paraoutra é rápida pois não envolvenecessariamente uma system_call

● A troca entre esses tipos de threads é daordem de nanosegundos.

● Permitem que cada processo use o algoritmode escalonamento que achar mais adequado

● São mais economicas quanto ao espaço dememória (no kernel) necessário para suaimplementação.

Page 14: Threads e Processos - docente.ifrn.edu.br · Sistemas Operacionais ... Ganho de performance na criação e destruição de ... A troca entre esses tipos de threads é da

Threads em nível de usuário

● Apesar de sua versatilidade e velocidade as threadsem nível de usuário tem suas desvantagens:● Uma chamada bloqueante pode bloquear todo o processo

e não apenas a thread em questão● Uma page_fault pode ocorrer o que causará uma

system_call e também parará todo o processo● Dentro de um processo não há como o escalonador contar

o tempo de uso da CPU para retirar uma thread deexecução a não ser que esta execute yield.

● A maioria dos processos de usuário que usam threads ofazem pela característica I/O bound o que implica quebloquearão o sistema sempre que fizerem I/O

Page 15: Threads e Processos - docente.ifrn.edu.br · Sistemas Operacionais ... Ganho de performance na criação e destruição de ... A troca entre esses tipos de threads é da

Threads em nível de kernel

● Nesse modelo o kernel cuida da criação eescalonamento das threads de todos osprocessos

Page 16: Threads e Processos - docente.ifrn.edu.br · Sistemas Operacionais ... Ganho de performance na criação e destruição de ... A troca entre esses tipos de threads é da

Threads em nível de kernel

● As chamadas de criação e fim de threads sãogerenciadas pelo kernel

● Isso significa um overhead para essasoperações

● Este modelo de implementação resolve umproblema grave das threads em nível deusuário:● Threads que bloqueiam um processo inteiro

● Uma estratégia para diminuir o overhead éreciclar threads

Page 17: Threads e Processos - docente.ifrn.edu.br · Sistemas Operacionais ... Ganho de performance na criação e destruição de ... A troca entre esses tipos de threads é da

Estratégia híbrida

● Múltplas threads mapeadas em uma thread dokernel

Page 18: Threads e Processos - docente.ifrn.edu.br · Sistemas Operacionais ... Ganho de performance na criação e destruição de ... A troca entre esses tipos de threads é da

Atividade

● Defina Thread.

● Dê um exemplo de uso de threads em umsistema, diferente dos apresentados em sala.

● Por que cada thread deve ter sua pilha (stack)?

● Descreva uma vantagem do uso de threads deusuário.

● Descreva uma vantagem do uso de threads dekernel.

Endereço para entrega: https://goo.gl/Y0nClq