Gerências de Processos: Threads

2.825 visualizações

Publicada em

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

Publicada em: Educação
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.825
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
220
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

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

×