Documente Academic
Documente Profesional
Documente Cultură
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
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
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)
Sistemas multiprogramados
n
Sistemas multiprogramados
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() )
Estados de um Processo
Criao Pronto Processo escalonado Executando yield() E/S pronto sleep acabou notify
Bloqueado
trmino
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)
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
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