Sunteți pe pagina 1din 30

O que thread?

? Podemos dizer de forma simplificada que thread uma sub-rotina de um programa que pode ser executada de forma assncrona, isto , pode ser executada paralelamente ao programa chamador.

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 espao de endereamento. Neste ambiente aplicaes concorrentes so implementadas s com o uso de processos independentes ou subprocessos.
- O desenvolvedor deve dividir em partes o programa que possam trabalhar concorrentemente.

processo demanda a alocao e liberao de recursos do hardware pelo sistema operacional. - Cada processo tem seu espao de endereamento e a comunicao entre processos lenta.

Sistemas Monothread A limitao da abordagem monothread que o uso de processos simples consomem muitos recursos do sistema. - O processo de criao e eliminao de um

Sistemas Monothread Resumindo No ambiente monothread cada processo tem seu prprio contexto de HW, SW e espao de endereamento, o que dificulta a comunicao entre processos.

Sistemas Multithread Em um sistema baseado em multithread, no existe o conceito de programas associados a processos, mas, sim, processos associados a threads. Cada processo tem pelo menos uma thread de execuo, compartilhando seu espao de endereamento com outras threads.

Sistemas Multithread Cada thread possui seu prprio contexto de hardware, porm divide o mesmo contexto de software e espao de endereamento com as demais threads do processo.

Contexto de hardware

Contexto de hardware

Contexto de hardware

Thread 1

Thread 2

Thread 3

Espao de endereamento

Sistemas Multithread
Em um ambiente multithread a unidade de alocao de recursos o processo e cada thread representa uma unidade de escalonamento (execuo) independente.
Isto permite compartilhar o espao de endereamento e o contexto de software. O sistema operacional seleciona threads para execuo e no mais processos.

Sistemas Multithread Para ser implementado o desenvolvedor especifica as threads associando s subrotinas assncronas. dessa forma que se obtm a execuo concorrente de sub-rotinas dentro de um mesmo processo.

Sistemas Multithread Exemplo: Um programa de calculadora. Programa principal: Calculadora Sub-rotinas assncronas: + - / *
-A primeira thread referente ao programa principal executada (calculadora) -As threads das sub-rotinas so executadas independentemente, - As 5 threads so executadas concorrentemente.

Sistemas Multithread
A grande diferena entre sistemas monothread e multithread est no uso do espao de endereamento. - Sistemas monothread, utilizam processos independentes ou subprocessos que possuem espaos de endereamento individuais e protegidos. - Sistemas multithread compartilham o mesmo endereamento dentro de um processo. No existe mecanismos para proteo no acesso a memria. O compartilhamento de dados entre threads mais simples e mais rpido.

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

Sistemas Multithread Em sistemas multithread cada processo pode responder vrias solicitaes concorrentemente ou simultaneamente (sistemas multiprocessados) A principal vantagem do uso de threads a possibilidade de minimizar a alocao de recursos do sistema.

Unidades de execuo Um processo Um thread Um processo Mltiplos threads

Mltiplos processos Um thread

Mltiplos processos Mltiplos threads

Threads esto sujeitas as mesmas regras de execuo de um processo normal.

Cada thread passam pelas mesmas mudanas de estado de um processo. Pronto > Execuo > Bloqueado/Espera Para permitir a troca de contexto cada thread tem seu prprio contexto de hardware. - Thread em execuo, contexto na CPU
- Thread em espera, contexto no TCB

Semelhantemente aos processos, threads so implementados atravs de uma estrutura de dados especfica. -TCB Thread Control Block O TCB armazena, alm do contexto de HW, dados exclusivos sobre a thread, como prioridade e estado de execuo.

Tipos de arquiteturas Threads em modo usurio Threads em modo kernel

Threads em modo usurio


Neste modo o sistema operacional desconhece a existncia de mltiplos threads, sendo responsabilidade da aplicao gerenciar/sincronizar os threads. So implementados pela aplicao e no pelo SO. Deve existir uma biblioteca de rotinas que possibilite a aplicao realizar tarefas de gerncia sobre as threads:
Criao / eliminao de threads Troca de mensagens entre threads Poltica de escalonamento

Threads em modo usurio


A vantagem desse modelo a possibilidade de implementar aplicaes multithreads mesmo em sistemas operacionais monothread. um modelo rpido e eficiente, pois dispensa acessos ao kernel, evitando a constante mudana de contexto de execuo. Modo usurio PSW Modo Kernel

Thread 1

Thread 2

Thread 3

Thread 4

Thread 5

Modo usurio

Biblioteca Modo Kernel

Modo kernel

Threads em modo usurio


Problemas de escalonamento O escalonamento no possvel, pois os mltiplos threads de um processo no so executados em CPUs diferentes simultaneamente. - Os threads de um processo so executados em uma CPU por vez.

Threads em modo usurio


Problemas de interrupo Quando o processo solicita algum dispositivo de E/S o processo colocado em estado de espera, suspendendo sua execuo, consequentemente suspendendo a execuo das demais threads. A soluo para este problema atravs da biblioteca de implementao e gerenciamento das threads. A biblioteca deve ter rotinas que substituam as rotinas bloqueadas por outras que no possam bloquear a execuo. > Este controle implementado de forma transparente para o usurios e sistema operacional.

Threads em modo usurio


A sua limitao o fato do sistema operacional gerenciar cada processo como se existisse apenas um nico thread.
Problemas de escalonamento;

Problemas para gerenciamento de interrupo.

Threads em modo kernel As threads so implementadas diretamente pelo Kernel, atravs de chamadas de sistema do sistema operacional. No necessrio o uso de uma biblioteca para implementao e gerncia das threads.

Thread 1 Thread 2 Modo Kernel Thread 3 Thread 4 Thread 5


Modo kernel Modo usurio

Threads em modo kernel


Como as threads so gerenciadas e reconhecidas diretamente pelo kernel, as threads podem ser escalonadas para execuo individualmente. No caso de um sistema multiprocessado, as inmeras 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 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 execuo do processador, gerando um ciclo completo mais longo.

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 limitao seria baixo desempenho, uma vez que o sistema operacional precisa modificar a o modo de acesso frequentemente. Usurio > Kernel > Usurio O desenvolvimento de programas que utilizem a tecnologia multithread no simples, algoritmos especficos devem ser implementados para evitar inconsistncia e deadlock do sistema.

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