Gerências de Processos: Threads
Upcoming SlideShare
Loading in...5
×
 

Gerências de Processos: Threads

on

  • 1,923 views

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 ...

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

Statistics

Views

Total Views
1,923
Views on SlideShare
1,923
Embed Views
0

Actions

Likes
2
Downloads
96
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Gerências de Processos: Threads Gerências de Processos: Threads Presentation Transcript

  • 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
  • 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
  • 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 Particionamento das atividades Balanç o Particionamento dos dados Dependência dos dados Teste e depuraç ão
  • 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 de threads: POSIX Pthreads Win32 threads Java threads
  • Threads do Núcleo Gerenciadas pelo pró prio sistema operacional Exemplos Windows XP/2000 Solaris Linux Tru64 UNIX Mac OS X
  • 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 PortableThreads
  • Um-para-um Cada thread do usuário é mapeada uma uma threaddo núcleo Exemplos Windows NT/XP/2000 Linux Solaris 9 e posterior
  • 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
  • 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
  • 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
  • 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)
  • 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
  • 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
  • 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() ?
  • 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
  • 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
  • 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
  • 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)
  • 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
  • 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