Você está na página 1de 30
O que é thread? Podemos dizer de forma simplificada que thread é uma sub-rotina de

O que é thread?

Podemos dizer de forma simplificada que thread é uma sub-rotina de um programa que pode ser executada de forma assíncrona, isto é, pode ser executada paralelamente ao programa chamador.

um programa que pode ser executada de forma assíncrona, isto é, pode ser executada paralelamente ao
um programa que pode ser executada de forma assíncrona, isto é, pode ser executada paralelamente ao
um programa que pode ser executada de forma assíncrona, isto é, pode ser executada paralelamente ao
um programa que pode ser executada de forma assíncrona, isto é, pode ser executada paralelamente ao
Os sistemas operacionais podem ser definidos como: 1. Monothread 2. Multithread

Os sistemas operacionais podem ser definidos como:

1. Monothread

2. Multithread

Os sistemas operacionais podem ser definidos como: 1. Monothread 2. Multithread
Os sistemas operacionais podem ser definidos como: 1. Monothread 2. Multithread
Os sistemas operacionais podem ser definidos como: 1. Monothread 2. Multithread
Os sistemas operacionais podem ser definidos como: 1. Monothread 2. Multithread
Sistemas Monothread Em um ambiente monothread um processo só suporta um programa no seu espaço

Sistemas Monothread Em um ambiente monothread um processo só suporta um programa no seu espaço de endereçamento. Neste ambiente aplicações concorrentes são implementadas só com o uso de processos independentes ou subprocessos.

- O desenvolvedor deve dividir em partes o programa que possam trabalhar concorrentemente.

independentes ou subprocessos. - O desenvolvedor deve dividir em partes o programa que possam trabalhar concorrentemente.
independentes ou subprocessos. - O desenvolvedor deve dividir em partes o programa que possam trabalhar concorrentemente.
independentes ou subprocessos. - O desenvolvedor deve dividir em partes o programa que possam trabalhar concorrentemente.
independentes ou subprocessos. - O desenvolvedor deve dividir em partes o programa que possam trabalhar concorrentemente.
Sistemas Monothread A limitação da abordagem monothread é que o uso de processos simples consomem

Sistemas Monothread A limitação da abordagem monothread é que o uso de processos simples consomem muitos recursos do sistema.

- O processo de criação e eliminação de um processo demanda a alocação e liberação de recursos do hardware pelo sistema operacional. - Cada processo tem seu espaço de endereçamento e a comunicação entre processos é lenta.

pelo sistema operacional. - Cada processo tem seu espaço de endereçamento e a comunicação entre processos
pelo sistema operacional. - Cada processo tem seu espaço de endereçamento e a comunicação entre processos
pelo sistema operacional. - Cada processo tem seu espaço de endereçamento e a comunicação entre processos
pelo sistema operacional. - Cada processo tem seu espaço de endereçamento e a comunicação entre processos
Sistemas Monothread Resumindo No ambiente monothread cada processo tem seu próprio contexto de HW, SW

Sistemas Monothread Resumindo

No ambiente monothread cada processo tem seu próprio contexto de HW, SW e espaço de endereçamento, o que dificulta a comunicação entre processos.

processo tem seu próprio contexto de HW, SW e espaço de endereçamento, o que dificulta a
processo tem seu próprio contexto de HW, SW e espaço de endereçamento, o que dificulta a
processo tem seu próprio contexto de HW, SW e espaço de endereçamento, o que dificulta a
processo tem seu próprio contexto de HW, SW e espaço de endereçamento, o que dificulta a
Sistemas Multithread Em um sistema baseado em multithread, não existe o conceito de programas associados

Sistemas Multithread Em um sistema baseado em multithread, não existe o conceito de programas associados a processos, mas, sim, processos associados a threads. Cada processo tem pelo menos uma thread de execução, compartilhando seu espaço de endereçamento com outras threads.

Cada processo tem pelo menos uma thread de execução, compartilhando seu espaço de endereçamento com outras
Cada processo tem pelo menos uma thread de execução, compartilhando seu espaço de endereçamento com outras
Cada processo tem pelo menos uma thread de execução, compartilhando seu espaço de endereçamento com outras
Cada processo tem pelo menos uma thread de execução, compartilhando seu espaço de endereçamento com outras
Sistemas Multithread Cada thread possui seu próprio contexto de hardware, porém divide o mesmo contexto

Sistemas Multithread Cada thread possui seu próprio contexto de hardware, porém divide o mesmo contexto de software e espaço de endereçamento com as demais threads do processo.

Contexto de hardware Contexto Contexto de hardware de hardware Thread 1 Thread 2 Thread 3
Contexto
de hardware
Contexto
Contexto
de hardware
de hardware
Thread 1
Thread 2
Thread 3
Espaço de endereçamento
de hardware Contexto Contexto de hardware de hardware Thread 1 Thread 2 Thread 3 Espaço de
de hardware Contexto Contexto de hardware de hardware Thread 1 Thread 2 Thread 3 Espaço de
de hardware Contexto Contexto de hardware de hardware Thread 1 Thread 2 Thread 3 Espaço de
de hardware Contexto Contexto de hardware de hardware Thread 1 Thread 2 Thread 3 Espaço de
Sistemas Multithread Em um ambiente multithread a unidade de alocação de recursos é o processo

Sistemas Multithread

Em um ambiente multithread a unidade de alocação de recursos é o processo e cada thread representa uma unidade de escalonamento (execução) independente.

Isto permite compartilhar o espaço de

endereçamento e o contexto de software.

O sistema operacional seleciona threads para

execução e não mais processos.

e o contexto de software.  O sistema operacional seleciona threads para execução e não mais
e o contexto de software.  O sistema operacional seleciona threads para execução e não mais
e o contexto de software.  O sistema operacional seleciona threads para execução e não mais
e o contexto de software.  O sistema operacional seleciona threads para execução e não mais
Sistemas Multithread Para ser implementado o desenvolvedor especifica as threads associando às sub- rotinas assíncronas.

Sistemas Multithread

Para ser implementado o desenvolvedor especifica as threads associando às sub- rotinas assíncronas. É dessa forma que se obtém a execução concorrente de sub-rotinas dentro de um mesmo processo.

rotinas assíncronas. É dessa forma que se obtém a execução concorrente de sub-rotinas dentro de um
rotinas assíncronas. É dessa forma que se obtém a execução concorrente de sub-rotinas dentro de um
rotinas assíncronas. É dessa forma que se obtém a execução concorrente de sub-rotinas dentro de um
rotinas assíncronas. É dessa forma que se obtém a execução concorrente de sub-rotinas dentro de um
Sistemas Multithread Exemplo: Um programa de calculadora. Programa principal: Calculadora Sub-rotinas assíncronas: + - /

Sistemas Multithread Exemplo:

Um programa de calculadora. Programa principal: Calculadora Sub-rotinas assíncronas: + - / *

-A primeira thread referente ao programa principal é executada (calculadora) -As threads das sub-rotinas são executadas independentemente, - As 5 threads são executadas concorrentemente.

-As threads das sub-rotinas são executadas independentemente, - As 5 threads são executadas concorrentemente.
-As threads das sub-rotinas são executadas independentemente, - As 5 threads são executadas concorrentemente.
-As threads das sub-rotinas são executadas independentemente, - As 5 threads são executadas concorrentemente.
-As threads das sub-rotinas são executadas independentemente, - As 5 threads são executadas concorrentemente.
Sistemas Multithread A grande diferença entre sistemas monothread e multithread está no uso do espaço

Sistemas Multithread

A grande diferença entre sistemas monothread e multithread está no uso do espaço de endereçamento.

- Sistemas monothread, utilizam processos

independentes ou subprocessos que possuem espaços de endereçamento individuais e protegidos.

- Sistemas multithread compartilham o mesmo endereçamento dentro de um processo. Não existe mecanismos para proteção no acesso a memória. O compartilhamento de dados entre threads é mais simples e mais rápido.

para proteção no acesso a memória. – O compartilhamento de dados entre threads é mais simples
para proteção no acesso a memória. – O compartilhamento de dados entre threads é mais simples
para proteção no acesso a memória. – O compartilhamento de dados entre threads é mais simples
para proteção no acesso a memória. – O compartilhamento de dados entre threads é mais simples
Sistemas Multithread Em ambientes cliente-servidor, multiplos threads permitem que diversos pedidos sejam atendidos

Sistemas Multithread

Em ambientes cliente-servidor, multiplos threads permitem que diversos pedidos sejam atendidos simultaneamente. - Multithread um thread pode solicitar um serviço remoto, e a aplicação pode continuar executando outras atividades. - Monothread uma aplicação pode ficar esperando indefinidamente o resultado de um serviço remoto.

outras atividades. - Monothread uma aplicação pode ficar esperando indefinidamente o resultado de um serviço remoto.
outras atividades. - Monothread uma aplicação pode ficar esperando indefinidamente o resultado de um serviço remoto.
outras atividades. - Monothread uma aplicação pode ficar esperando indefinidamente o resultado de um serviço remoto.
outras atividades. - Monothread uma aplicação pode ficar esperando indefinidamente o resultado de um serviço remoto.
Sistemas Multithread Em sistemas multithread cada processo pode responder à várias solicitações concorrentemente ou

Sistemas Multithread Em sistemas multithread cada processo pode responder à várias solicitações concorrentemente ou simultaneamente (sistemas multiprocessados) A principal vantagem do uso de threads é a possibilidade de minimizar a alocação de recursos do sistema.

A principal vantagem do uso de threads é a possibilidade de minimizar a alocação de recursos
A principal vantagem do uso de threads é a possibilidade de minimizar a alocação de recursos
A principal vantagem do uso de threads é a possibilidade de minimizar a alocação de recursos
A principal vantagem do uso de threads é a possibilidade de minimizar a alocação de recursos
Unidades de execução Um processo Múltiplos threads Um processo Um thread Múltiplos processos Um thread

Unidades de execução

Um processo Múltiplos threads

Unidades de execução Um processo Múltiplos threads Um processo Um thread Múltiplos processos Um thread Múltiplos

Um processo Um thread

Um processo Múltiplos threads Um processo Um thread Múltiplos processos Um thread Múltiplos processos
Um processo Múltiplos threads Um processo Um thread Múltiplos processos Um thread Múltiplos processos

Múltiplos processos Um thread

processo Múltiplos threads Um processo Um thread Múltiplos processos Um thread Múltiplos processos Múltiplos threads
processo Múltiplos threads Um processo Um thread Múltiplos processos Um thread Múltiplos processos Múltiplos threads

Múltiplos processos Múltiplos threads

processo Múltiplos threads Um processo Um thread Múltiplos processos Um thread Múltiplos processos Múltiplos threads
processo Múltiplos threads Um processo Um thread Múltiplos processos Um thread Múltiplos processos Múltiplos threads
processo Múltiplos threads Um processo Um thread Múltiplos processos Um thread Múltiplos processos Múltiplos threads
processo Múltiplos threads Um processo Um thread Múltiplos processos Um thread Múltiplos processos Múltiplos threads
processo Múltiplos threads Um processo Um thread Múltiplos processos Um thread Múltiplos processos Múltiplos threads
processo Múltiplos threads Um processo Um thread Múltiplos processos Um thread Múltiplos processos Múltiplos threads
Threads estão sujeitas as mesmas regras de execução de um processo normal.

Threads estão sujeitas as mesmas regras de execução de um processo normal.

Threads estão sujeitas as mesmas regras de execução de um processo normal.
Threads estão sujeitas as mesmas regras de execução de um processo normal.
Threads estão sujeitas as mesmas regras de execução de um processo normal.
Threads estão sujeitas as mesmas regras de execução de um processo normal.
Cada thread passam pelas mesmas mudanças de estado de um processo. Pronto > Execução >

Cada thread passam pelas mesmas mudanças de estado de um processo. Pronto > Execução > Bloqueado/Espera Para permitir a troca de contexto cada thread tem seu próprio contexto de hardware.

contexto cada thread tem seu próprio contexto de hardware. - Thread em execução, contexto na CPU
contexto cada thread tem seu próprio contexto de hardware. - Thread em execução, contexto na CPU
contexto cada thread tem seu próprio contexto de hardware. - Thread em execução, contexto na CPU
contexto cada thread tem seu próprio contexto de hardware. - Thread em execução, contexto na CPU

- Thread em execução, contexto na CPU - Thread em espera, contexto no TCB

Semelhantemente aos processos, threads são implementados através de uma estrutura de dados específica. - TCB

Semelhantemente aos processos, threads são implementados através de uma estrutura de dados específica. -TCB – Thread Control Block O TCB armazena, além do contexto de HW, dados exclusivos sobre a thread, como prioridade e estado de execução.

Block O TCB armazena, além do contexto de HW, dados exclusivos sobre a thread, como prioridade
Block O TCB armazena, além do contexto de HW, dados exclusivos sobre a thread, como prioridade
Block O TCB armazena, além do contexto de HW, dados exclusivos sobre a thread, como prioridade
Block O TCB armazena, além do contexto de HW, dados exclusivos sobre a thread, como prioridade
Tipos de arquiteturas  Threads em modo usuário  Threads em modo kernel

Tipos de arquiteturas

Threads em modo usuário



Threads em modo kernel

Tipos de arquiteturas  Threads em modo usuário  Threads em modo kernel
Tipos de arquiteturas  Threads em modo usuário  Threads em modo kernel
Tipos de arquiteturas  Threads em modo usuário  Threads em modo kernel
Tipos de arquiteturas  Threads em modo usuário  Threads em modo kernel
Threads em modo usuário Neste modo o sistema operacional desconhece a existência de múltiplos threads,

Threads em modo usuário

Neste modo o sistema operacional desconhece a existência de múltiplos threads, sendo responsabilidade da aplicação gerenciar/sincronizar os threads. São implementados pela aplicação e não pelo SO. Deve existir uma biblioteca de rotinas que possibilite a aplicação realizar tarefas de gerência sobre as threads:

Criação / eliminação de threads

Troca de mensagens entre threads

Política de escalonamento

as threads:  Criação / eliminação de threads  Troca de mensagens entre threads  Política
as threads:  Criação / eliminação de threads  Troca de mensagens entre threads  Política
as threads:  Criação / eliminação de threads  Troca de mensagens entre threads  Política
as threads:  Criação / eliminação de threads  Troca de mensagens entre threads  Política
Threads em modo usuário A vantagem desse modelo é a possibilidade de implementar aplicações multithreads

Threads em modo usuário

A vantagem desse modelo é a possibilidade de implementar aplicações multithreads mesmo em sistemas operacionais monothread. É um modelo rápido e eficiente, pois dispensa acessos ao kernel, evitando a constante mudança de contexto de execução.

PSW

pois dispensa acessos ao kernel, evitando a constante mudança de contexto de execução. PSW Modo usuário

Modo usuário

Modo Kernel

pois dispensa acessos ao kernel, evitando a constante mudança de contexto de execução. PSW Modo usuário
pois dispensa acessos ao kernel, evitando a constante mudança de contexto de execução. PSW Modo usuário
pois dispensa acessos ao kernel, evitando a constante mudança de contexto de execução. PSW Modo usuário
pois dispensa acessos ao kernel, evitando a constante mudança de contexto de execução. PSW Modo usuário
Thread 4 Thread 1 Thread 2 Thread 3 Biblioteca Modo Kernel Modo usuário Modo kernel

Thread 4

Thread 1

Thread 2

Thread 3

Biblioteca

Modo Kernel

Modo usuário

Modo kernel

Thread 4 Thread 1 Thread 2 Thread 3 Biblioteca Modo Kernel Modo usuário Modo kernel
Thread 4 Thread 1 Thread 2 Thread 3 Biblioteca Modo Kernel Modo usuário Modo kernel
Thread 4 Thread 1 Thread 2 Thread 3 Biblioteca Modo Kernel Modo usuário Modo kernel
Thread 4 Thread 1 Thread 2 Thread 3 Biblioteca Modo Kernel Modo usuário Modo kernel
Threads em modo usuário Problemas de escalonamento O escalonamento não é possível, pois os múltiplos

Threads em modo usuário

Problemas de escalonamento

O escalonamento não é possível, pois os múltiplos threads de um processo não são executados em CPUs diferentes simultaneamente.

não são executados em CPUs diferentes simultaneamente. - Os threads de um processo são executados em
não são executados em CPUs diferentes simultaneamente. - Os threads de um processo são executados em
não são executados em CPUs diferentes simultaneamente. - Os threads de um processo são executados em
não são executados em CPUs diferentes simultaneamente. - Os threads de um processo são executados em

- Os threads de um processo são executados em uma CPU por vez.

Threads em modo usuário Problemas de interrupção Quando o processo solicita algum dispositivo de E/S

Threads em modo usuário

Problemas de interrupção

Quando o processo solicita algum dispositivo de E/S

o processo é colocado em estado de espera, suspendendo sua execução, consequentemente suspendendo a execução das demais threads. A solução para este problema é através da biblioteca de implementação e gerenciamento das

threads. A biblioteca deve ter rotinas que substituam as rotinas bloqueadas por outras que não possam bloquear

a execução. > Este controle é implementado de forma transparente para o usuários e sistema operacional.

bloquear a execução. > Este controle é implementado de forma transparente para o usuários e sistema
bloquear a execução. > Este controle é implementado de forma transparente para o usuários e sistema
bloquear a execução. > Este controle é implementado de forma transparente para o usuários e sistema
bloquear a execução. > Este controle é implementado de forma transparente para o usuários e sistema
Threads em modo usuário A sua limitação é o fato do sistema operacional gerenciar cada

Threads em modo usuário

A sua limitação é o fato do sistema operacional gerenciar cada processo como se existisse apenas um único thread.

Problemas de escalonamento;



Problemas para gerenciamento de interrupção.

se existisse apenas um único thread.  Problemas de escalonamento;  Problemas para gerenciamento de interrupção.
se existisse apenas um único thread.  Problemas de escalonamento;  Problemas para gerenciamento de interrupção.
se existisse apenas um único thread.  Problemas de escalonamento;  Problemas para gerenciamento de interrupção.
se existisse apenas um único thread.  Problemas de escalonamento;  Problemas para gerenciamento de interrupção.
Threads em modo kernel As threads são implementadas diretamente pelo Kernel, através de chamadas de

Threads em modo kernel

As threads são implementadas diretamente pelo Kernel, através de chamadas de sistema do sistema operacional. Não é necessário o uso de uma biblioteca para implementação e gerência das threads.

sistema do sistema operacional. Não é necessário o uso de uma biblioteca para implementação e gerência
sistema do sistema operacional. Não é necessário o uso de uma biblioteca para implementação e gerência
sistema do sistema operacional. Não é necessário o uso de uma biblioteca para implementação e gerência
sistema do sistema operacional. Não é necessário o uso de uma biblioteca para implementação e gerência
Thread 4 Thread 1 Thread 2 Thread 3 Modo Kernel Thread 5 Modo usuário Modo

Thread 4

Thread 1

Thread 2

Thread 3

Modo Kernel

Thread 5
Thread 5

Modo usuário

Modo kernel

Thread 4 Thread 1 Thread 2 Thread 3 Modo Kernel Thread 5 Modo usuário Modo kernel
Thread 4 Thread 1 Thread 2 Thread 3 Modo Kernel Thread 5 Modo usuário Modo kernel
Thread 4 Thread 1 Thread 2 Thread 3 Modo Kernel Thread 5 Modo usuário Modo kernel
Thread 4 Thread 1 Thread 2 Thread 3 Modo Kernel Thread 5 Modo usuário Modo kernel
Threads em modo kernel  Como as threads são gerenciadas e reconhecidas diretamente pelo kernel,

Threads em modo kernel

Como as threads são gerenciadas e reconhecidas diretamente pelo kernel, as threads podem ser escalonadas para execução individualmente.



No caso de um sistema multiprocessado, as

 No caso de um sistema multiprocessado, as inúmeras threads de um mesmo processo podem ser
 No caso de um sistema multiprocessado, as inúmeras threads de um mesmo processo podem ser
 No caso de um sistema multiprocessado, as inúmeras threads de um mesmo processo podem ser
 No caso de um sistema multiprocessado, as inúmeras threads de um mesmo processo podem ser

inúmeras threads de um mesmo processo podem ser executadas simultaneamente em processadores diferentes.

Threads em modo kernel  Devemos ressaltar que o uso de uma grande quantidade de

Threads em modo kernel

Devemos ressaltar que o uso de uma grande quantidade de threads podem sobrecarregar o sistema tornando-o lento.

-Lembre-se que uma thread é escalonada igualmente como um processo em sistemas multithreads, portanto muitas threads implica em uma quantidade maior de items na cadeia de execução do processador, gerando um ciclo completo mais longo.

do processador, gerando um ciclo completo mais longo.  A forma que o programa é estruturado
do processador, gerando um ciclo completo mais longo.  A forma que o programa é estruturado
do processador, gerando um ciclo completo mais longo.  A forma que o programa é estruturado
do processador, gerando um ciclo completo mais longo.  A forma que o programa é estruturado

A forma que o programa é estruturado tem

grande impacto no uso de threads, pois o sistema

deve ser separado em unidades de que possam executar em paralelo e independente.

Threads em modo kernel  Uma limitação seria baixo desempenho, uma vez que o sistema

Threads em modo kernel

Uma limitação seria baixo desempenho, uma vez que o sistema operacional precisa modificar a o modo de acesso frequentemente. Usuário > Kernel > Usuário



O desenvolvimento de programas que utilizem a

Usuário  O desenvolvimento de programas que utilizem a tecnologia multithread não é simples, algoritmos
Usuário  O desenvolvimento de programas que utilizem a tecnologia multithread não é simples, algoritmos
Usuário  O desenvolvimento de programas que utilizem a tecnologia multithread não é simples, algoritmos
Usuário  O desenvolvimento de programas que utilizem a tecnologia multithread não é simples, algoritmos

tecnologia multithread não é simples, algoritmos específicos devem ser implementados para evitar

inconsistência e deadlock do sistema.