prof. pedro luís antonelli anhanguera...
TRANSCRIPT
Sistemas Operacionais
Prof. Pedro Luís Antonelli Anhanguera Educacional
THREAD
O que é um thread?
THREAD
O que é um thread?
Definição: um thread é um fluxo único de controle sequencial dentro de um programa.
INTRODUÇÃO
• Um thread não é um programa, mas é executado em um programa.
THREAD
• Programa?
– Sequência de instruções, composta por desvios, repetições e chamadas a procedimentos e funções;
– Um processo suporta apenas um programa em seu espaço de endereçamento;
• Para programas "normais" (single thread), tem um único ponto de execução dentro do programa num momento particular.
THREAD • Um thread é semelhante a um “programa normal ”, tem
um início, uma sequência e um fim.
• Um thread parece ser um processo mas compartilha o mesmo "espaço de endereçamento“ do processo “principal” e tem um único ponto de execução num certo momento.
PROCESSO x THREAD
AMBIENTE MONOTHREAD
• Em aplicações MonoThreads para se conseguir concorrência temos:
– Múltiplos processos independentes ou subprocessos;
– Processos concorrentes demandam consumo de recursos do sistema;
– Problemas no compartilhamento do espaço de endereçamento.
AMBIENTE MONOTHREAD
MACHADO, fig.6.2, pag 90 – Ambiente monothread
AMBIENTE MONOTHREAD
– Para resolver o problema de compartilhamento do espaço de endereçamento podemos utilizar algumas técnicas:
- Pipes;
- Sinais;
- Semáforos;
- Memória compartilhada;
- Troca de mensagens.
AMBIENTE MULTITHREAD
• Não existe programas associados a processos, existem Threads.
• Cada processo tem pelo menos um Thread.
• A Thread compartilha seu espaço de endereçamento com o processo principal.
AMBIENTE MULTITHREAD
MACHADO, fig.6.3, pag 90 – Ambiente multithread
AMBIENTE MULTITHREAD
• Vantagens:
– Possibilidade de minimizar a alocação de recursos do sistema;
– Diminuir o overhead na criação, troca e eliminação de processos;
– O tempo para a troca de execução de um Thread é menor do que um processo.
AMBIENTE MULTITHREAD • Desvantagem:
- Quando várias threads acessam o mesmo recurso, como campos estáticos, temos que tomar cuidado para que garantir que duas ou mais threads não acessem ao mesmo tempo determinado recurso, corrompendo os dados;
- O responsabilidade do programador aumenta com o aumento das Threads.
• (a) Três processos. Cada um com um Thread
• (b) Um Processo com três Threads
TENENBAUM, fig.2.6, pag 61 – Três processos, cada um com um thread e um processo com três threads
• Em ambientes cliente/servidor os Threads são essenciais para solicitação de serviços remotos.
EXEMPLO DE USO DE THREAD
• Servidor Web com múltiplos Threads
TANENBAUM, fig.2.10, pag 65 – Um servidor Web multithread
BIBLIOGRAFIA
• MACHADO, F. B. & MAIA, L. P., Arquitetura de Sistemas Operacionais, 4 Edição, São Paulo, LTC, 2007.
• TANENBAUM, A. S. Sistemas Operacionais Modernos: 2ª edição, São Paulo, editora Prentice Hall, 2003.
• SILBERSCHATZ, A. Sistemas Operacionais – Conceitos: São Paulo, editora LTC, 2004.