Alessandro D. R. Fazenda http://www.alessandrofazenda.com.br Processos ◦ Modelos de processos ◦ Início ◦ Término Threads ◦ Modelos de threads ◦ Usos de threads Processos são softwares que executam alguma ação e que podem ser controlados de alguma maneira, seja pelo usuário, pelo aplicativo correspondente ou pelo sistema operacional. É constituído por uma seqüência de instruções, um conjunto de dados e um registro descritor. Todo o processo é criado por um processo existente executando uma chamada ao sistema de criação de processo; Tanto no Windows como no Unix, depois de um processo filho criado, o pai e o filho têm seus próprios e distintos espaços de endereçamento de memória; É possível o compartilhamento de recursos entre o pai e o filho. (a) Multiprogramação de quatro programas (b) Modelo conceitual de 4 processos seqüenciais independentes (c) Um programa está ativo a cada momento Eventos que levam a criação de processos: ◦ Início do sistema. ◦ Execução de chamada de criação de processo por um processo em execução. ◦ Requisição do usuário para criar um novo processo. ◦ Início de uma tarefa em lote (batch job). Condições que levam ao término dos processos: ◦ ◦ ◦ ◦ Saída normal (voluntária). Saída por erro (voluntária). Erro fatal (involuntário). Cancelamento por outro processo (involuntário). Thread é um fluxo de execução dentro do processo. Multithread é uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente. ◦ Existe dentro de um processo e usa os recursos do processo ◦ Tem o seu próprio fluxo de controle independente enquanto existir o processo pai e o SO dá suporte a ele ◦ Pode compartilhar os recursos do processo com outros threads igualmente independentes ◦ Morre se o seu processo pai morrer. Cada thread tem seu próprio controle, mas compartilha o mesmo espaço de endereçamento do processo em que foi criada. Se duas threads executam o mesmo procedimento/método, cada uma terá a sua própria cópia das variáveis locais. As threads podem acessar todas os dados globais do programa. Programação com Threads é mais complexa que a programação seqüencial, pois o programador: ◦ não sabe em que ordem as threads irão executar ◦ mas precisa controlar o acesso concorrente a variáveis e/ou estruturas de dado compartilhadas (a) Três processos cada um com uma thread (b) Um processo com três threads Processador de texto com 3 threads Servidor de páginas de Internet Alessandro D. R. Fazenda http://www.alessandrofazenda.com.br