Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Gerências de Processos: ThreadsSistemas Operacionais IProf. Alexandre Duarte : http://alexandrend.comCentro de Informática...
Objetivos Introduzir a noç ão de thread, uma unidadefundamental de utilizaç ão de CPU e querepresenta a base da maioria d...
Processo com thread único e commúltiplos threads
Benefícios Responsividade Compartilhamento de recursos Economia Escalabilidade
Programação com múltiplos núcleos Sistemas com múltiplos núcleos pressionam osprogramadores Os desafios incluem Partici...
Arquitetura de um servidor multi-threaded
Execução concorrente em um sistemade núcleo único
Execução paralela em um sistema com múltiplosnúcleos
Threads do usuário Gerencia de threads feita por bibliotecascarregadas no nível do usuário Três principais bibliotecas d...
Threads do Núcleo Gerenciadas pelo pró prio sistema operacional Exemplos Windows XP/2000 Solaris Linux Tru64 UNIX M...
Modelos de Multi-threading Muitos-para-um Um-para-um Muitos-para-muitos
Muitos-para-um Muitas threads dousuário mapeadaspara uma únicathread do núcleo Exemplos: Solaris GreenThreads GNU Port...
Um-para-um Cada thread do usuário é mapeada uma uma threaddo núcleo Exemplos Windows NT/XP/2000 Linux Solaris 9 e pos...
Muitos-para-muitos Permite que muitasthreads do usuáriosejam mapeadas emmuitas threads donúcleo Exemplos Solaris antes ...
Modelo em dois níveis Similar ao M:Mporém tambémpermite que umathread do usuário sejaassociada a umathread do núcleo Exe...
Bibliotecas de threads Bibliotecas de threads oferecem uma API paracriaç ão e manipulaç ão de threads Duas formas primár...
Pthreads Pode ser fornecida tanto no nível do usuárioquanto no núcleo API padrão POSIX (IEEE 1003.1c) paracriaç ão e sin...
Java Threads Threads em Java são gerenciados pela JVM Tipicamente implementados de acordo com omodelo de threads do sist...
Questões relacionadas a criação dethreads As chamadas de sistema fork() eexec() Cancelamento de threads Assíncrono vers...
As chamadas de sistema fork() e exec() O fork() duplica apenas o thread que invocoua chamada ou todos os threads doprogra...
Cancelamento de threads Cancelar uma thread antes de suaconclusão Duas abordagens Cancelamento assíncrono: terminaa thr...
Manipulação de sinais Sinais são utilizados no UNIX para notificar um processo deque um determinado evento ocorreu Todos...
Pools de threads Cria um número de threads em um pool ondeelas aguardam por trabalho Vantagens: Geralmente é um pouco m...
Dados específicos de threads Permite que cada thread tenha sua pró priacó pia dos dados Útil quando não se tem controle ...
Ativações do escalonador Tanto o modelo M:M quanto o dedois níveis utilizam uma estrutura dedados intermediária (LWP) ent...
Ativações do escalonador Para esse esquema funciona, o núcleo precisanotificar a aplicaç ão sobre certos eventos deescalo...
Upcoming SlideShare
Loading in …5
×

Gerências de Processos: Threads

3,278 views

Published on

Introduzir a noção de thread, uma unidade fundamental de utilização de CPU e que representa a base da maioria dos sistemas computacionais modernos

Questões relacionadas a criação de threads

Published in: Education
  • Be the first to comment

Gerências de Processos: Threads

  1. 1. Gerências de Processos: ThreadsSistemas Operacionais IProf. Alexandre Duarte : http://alexandrend.comCentro de Informática | Universidade Federal da ParaíbaEstes slides são baseados no material que acompanha o livro OperatingSystems Concepts de Silberschatz, Galvin and Gagne
  2. 2. Objetivos Introduzir a noç ão de thread, uma unidadefundamental de utilizaç ão de CPU e querepresenta a base da maioria dos sistemascomputacionais modernos Questões relacionadas a criaç ão de threads
  3. 3. Processo com thread único e commúltiplos threads
  4. 4. Benefícios Responsividade Compartilhamento de recursos Economia Escalabilidade
  5. 5. Programação com múltiplos núcleos Sistemas com múltiplos núcleos pressionam osprogramadores Os desafios incluem Particionamento das atividades Balanç o Particionamento dos dados Dependência dos dados Teste e depuraç ão
  6. 6. Arquitetura de um servidor multi-threaded
  7. 7. Execução concorrente em um sistemade núcleo único
  8. 8. Execução paralela em um sistema com múltiplosnúcleos
  9. 9. Threads do usuário Gerencia de threads feita por bibliotecascarregadas no nível do usuário Três principais bibliotecas de threads: POSIX Pthreads Win32 threads Java threads
  10. 10. Threads do Núcleo Gerenciadas pelo pró prio sistema operacional Exemplos Windows XP/2000 Solaris Linux Tru64 UNIX Mac OS X
  11. 11. Modelos de Multi-threading Muitos-para-um Um-para-um Muitos-para-muitos
  12. 12. Muitos-para-um Muitas threads dousuário mapeadaspara uma únicathread do núcleo Exemplos: Solaris GreenThreads GNU PortableThreads
  13. 13. Um-para-um Cada thread do usuário é mapeada uma uma threaddo núcleo Exemplos Windows NT/XP/2000 Linux Solaris 9 e posterior
  14. 14. Muitos-para-muitos Permite que muitasthreads do usuáriosejam mapeadas emmuitas threads donúcleo Exemplos Solaris antes daversão 9 Windows NT/2000como o pacoteThreadFiber
  15. 15. Modelo em dois níveis Similar ao M:Mporém tambémpermite que umathread do usuário sejaassociada a umathread do núcleo Exemplos IRIX HP-UX Tru64 UNIX Solaris 8 e anteriores
  16. 16. Bibliotecas de threads Bibliotecas de threads oferecem uma API paracriaç ão e manipulaç ão de threads Duas formas primárias de implementaç ão Biblioteca localizada inteiramente no espaç o dousuário Biblioteca localizada no núcleo com suporte doSO
  17. 17. Pthreads Pode ser fornecida tanto no nível do usuárioquanto no núcleo API padrão POSIX (IEEE 1003.1c) paracriaç ão e sincronizaç ão de threads A API especifica unicamente o comportamentoda biblioteca, a implementaç ão fica a cargodos desenvolvedores Comum em sistemas operacionais UNIX(Solaris, Linux, Mac OS X)
  18. 18. Java Threads Threads em Java são gerenciados pela JVM Tipicamente implementados de acordo com omodelo de threads do sistema operacional“hospedeiro” Threads em Java podem ser criados Estendendo a classe Thread Implementando a interface Runnable
  19. 19. Questões relacionadas a criação dethreads As chamadas de sistema fork() eexec() Cancelamento de threads Assíncrono versus adiado Manipulaç ão de sinais Pools de Thread Dados específicos de threads Ativaç ões do escalonador
  20. 20. As chamadas de sistema fork() e exec() O fork() duplica apenas o thread que invocoua chamada ou todos os threads doprograma ? O que acontece com o exec() ?
  21. 21. Cancelamento de threads Cancelar uma thread antes de suaconclusão Duas abordagens Cancelamento assíncrono: terminaa thread alvo imediatamente Cancelamento adiado: permite quea thread alvo verifique periodicamentese ela deve ser cancelada
  22. 22. Manipulação de sinais Sinais são utilizados no UNIX para notificar um processo deque um determinado evento ocorreu Todos os sinais seguem o mesmo padrão São gerados por um evento particular São entregues a um processo São manipulados pelo processo Opções: Entregar o sinal para a thread a qual ele se aplica Entregar o sinal para todas as threads do processo Entregar o sinal para certas threads do processo Escolher uma thread específica para receber todos os sinais doprocesso
  23. 23. Pools de threads Cria um número de threads em um pool ondeelas aguardam por trabalho Vantagens: Geralmente é um pouco mais rápido requisitaruma thread jáexistente do que criar uma novathread Permite que o número de threads na(s)aplicaç ão(ões) seja limitado ao tamanho do pool
  24. 24. Dados específicos de threads Permite que cada thread tenha sua pró priacó pia dos dados Útil quando não se tem controle sobre oprocesso de criaç ão de threads (ex., quandose usa um thread pool)
  25. 25. Ativações do escalonador Tanto o modelo M:M quanto o dedois níveis utilizam uma estrutura dedados intermediária (LWP) entre asthreads do núcleo e do usuário O LWP funciona como umprocessador virtual para a aplicaçãono qual a aplicação pode agendar aexecução de uma thread O núcleo, em seguida, atribui uma desuas threads para executar a threaddo usuário associada a um LWP
  26. 26. Ativações do escalonador Para esse esquema funciona, o núcleo precisanotificar a aplicaç ão sobre certos eventos deescalonamento de threads Essa notificaç ão é feita através de umprocedimento chamado upcall e a esseesquema de comunicaç ão é conhecido comativação do escalonador

×