Sunteți pe pagina 1din 7

Introduo ao uso de Threads

Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br


Lapro C Prof. Leandro Becker

Introduo
Programas seqenciais no so adequados para certas aplicaes, p.ex.:
Automao industrial: diversos componentes devem ser controlados e sincronizados ao mesmo tempo Servidores Web: capacidade para atender diversos usurios Web: simultaneamente Interfaces grficas: diversas aes ocorrem ao mesmo tempo, e.g. animaes, atualizao do relgio, entrada de dados Paralelismo: aumento do desempenho atravs da alocao das partes do sistema processadores distintos:
Lei de Amdahl: speedup = 1/((1 - p) + p/n)
Lapro C Prof. Leandro Becker

Motivaes
Mundo real assncrono Outras motivaes para o uso de threads:
Operaes de E/S no-bloqueantes noProgramao de alarmes e timers Execuo de tarefas independentes Aplicaes paralelas

Lapro C Prof. Leandro Becker

Definies e Terminologia
Programao concorrente: gera programas com concorrente: vrios fluxos de controle Evento assncrono: indica que os fatos ocorrem de assncrono: maneira independente (concorrente) Concorrncia: indica que fatos podem ocorrer ao Concorrncia: mesmo tempo Monoprocessador e Multiprocessador: indica o Multiprocessador: nmero de unidades de processamento (CPU) do computador Paralelismo: descreve seqncias concorrentes que Paralelismo: ocorrem simultaneamente
Lapro C Prof. Leandro Becker

Sistemas monoprogramados
n

Um nico programa toma conta da CPU

Lapro C Prof. Leandro Becker

Sistemas multiprogramados
n

Vrios programas (chamados processos) compartilham o uso da CPU Suportam a criao e a remoo de processos, mantendo o conjunto de informaes de cada um (rea de programa e de dados, registradores, pilha, contador de programa etc)

Lapro C Prof. Leandro Becker

Sistemas multiprogramados
n

Implementa algum algoritmo de escalonamento:


First-come first-served - FCFS; Firstfirstn Shortest job first - SJF; n Baseados em prioridade; n Preemptivos; Preemptivos; n Round-robin; Round- robin; n Com mltiplas filas;
n

Lapro C Prof. Leandro Becker

Sistemas multiprogramados

Lapro C Prof. Leandro Becker

Estados de um Processo
n n

Executando: processo est ocupando a CPU Pronto: processo aguarda na fila de processos prontos para executar ( o escalonador quem decide qual processo vai executar) Bloqueado: processo encontra-se inativo, esperando por alguma operao (ex: operao de E/S) ou condio (ex: notify() )

Lapro C Prof. Leandro Becker

Estados de um Processo
Criao Pronto Processo escalonado Executando yield() E/S pronto sleep acabou notify

E/S; sleep; wait

Bloqueado

trmino

Lapro C Prof. Leandro Becker

Comunicao entre Processos


n

Troca de mensagens: processos independentes se comunicam atravs de primitivas do SO (e.g. sockets) Memria compartilhada: necessitam de mecanismos de sincronizao (e.g. barreiras e semforos)

Lapro C Prof. Leandro Becker

Conceito de Threads
n

Threads so unidades de concorrncia conhecidas por processos leves, pois compartilham a rea de cdigo e de dados de um mesmo processo:
n

no exigem carga da imagem do processo de memria secundria (disco), pois o cdigo e os dados j se encontram na memria principal

n n

Cada thread tem seu prprio estado de execuo: pilha, ponteiro de instrues e registradores Todo programa tm ao menos uma thread, chamada main
Lapro C Prof. Leandro Becker

Conceito de Threads
n

Comunicao entre as threads ocorre atravs do uso de memria compartilhada: portanto, necessita de mecanismos de sincronizao Assim como os processos, as threads tambm devem ser escalonadas

Lapro C Prof. Leandro Becker

Bibliografia Indicada
n

n n

Oliveira, R. et al. Sistemas Operacionais. Editora Sagra-Luzzato, Porto Alegre, 2 Ed., Novembro 2001. ISBN: 85-241-0643-3 Lewis, B. Threads Primer. Prentice Hall, 1997. Curso de Java Avanado: Threads Conceitos Bsicos. http://www.inf.pucrs.br/~copstein/ http://www.inf.pucrs.br/~copstein/
LinguagemJavaUML/AbordagemPorObjetivos/Curso Avancado/Threads/Threads_Parte_I_Conceitos_Basic os.html os.
Lapro C Prof. Leandro Becker

S-ar putea să vă placă și