Informação
http://www.inf.ufes.br/~rgomes/so.htm
Fluxos de Execução
Um programa seqüencial consiste de um único fluxo de execução, o qual realiza uma certa tarefa computacional. A maioria dos programas simples tem essa característica: só possuem um único fluxo de execução.
Por conseguinte, não executam dois trechos de código
“simultaneamente”.
Grande parte do software de maior complexidade escrito hoje em dia faz uso de mais de uma linha de execução.
LPRM/DI/UFES
2
Sistemas Operacionais
http://www.inf.ufes.br/~rgomes/so.htm
Exemplos de Programas MT
(1)
Editor de Texto
Permite que o usuário edite o arquivo enquanto ele ainda está sendo carregado do disco.
Processamento assíncrono (salvamento periódico).
LPRM/DI/UFES
3
Sistemas Operacionais
http://www.inf.ufes.br/~rgomes/so.htm
Exemplos de Programas MT
(2)
Navegador (browser)
Consegue fazer o download de vários arquivos ao mesmo tempo, gerenciando as diferentes velocidades de cada servidor e, ainda assim, permitindo que o usuário continue interagindo, mudando de página enquanto os arquivos estão sendo carregados.
Programas numéricos (ex: multiplicação de matrizes):
Cada elemento da matriz produto pode ser calculado independentemente dos outros; portanto, podem ser facilmente calculados por threads diferentes.
LPRM/DI/UFES
4
Sistemas Operacionais
http://www.inf.ufes.br/~rgomes/so.htm
Exemplos de Programas MT
(3)
Servidor Web
LPRM/DI/UFES
5
Sistemas Operacionais
http://www.inf.ufes.br/~rgomes/so.htm
Threads
(1)
Thread:
Thread = “fluxo”, “fio”.
Fluxo de execução dentro de um processo (seqüência de instruções a serem executadas dentro de um programa).
Thread é uma abstração que permite que uma aplicação execute mais de um trecho de código simultaneamente.
(ex: um método).
Processos permitem ao S.O. executar mais de uma aplicação ao mesmo tempo.
Um programa multithreading pode continuar