Documente Academic
Documente Profesional
Documente Cultură
? 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.
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.
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.
Thread 1
Thread 2
Thread 3
Thread 4
Thread 5
Modo usurio
Modo kernel
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.
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.