Prof. Pedro Luís Antonelli Anhanguera...

Post on 15-Feb-2019

222 views 0 download

Transcript of Prof. Pedro Luís Antonelli Anhanguera...

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.