O documento discute processos e threads no sistema operacional. Explica que processos executam ações de software e podem ser controlados de diferentes formas. Threads são fluxos de execução dentro de um processo que podem rodar concorrentemente compartilhando os recursos do processo. O documento fornece exemplos de modelos de processos e threads e discute os desafios da programação multithread.
2. Processos
◦ Modelos de processos
◦ Início
◦ Término
Threads
◦ Modelos de threads
◦ Usos de threads
3. 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.
4. 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.
5. (a) Multiprogramação de quatro programas
(b) Modelo conceitual de 4 processos
seqüenciais independentes
(c) Um programa está ativo a cada momento
6. 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).
7. 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).
8. 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.
9. 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.
10. 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
11. (a) Três processos cada um com uma thread
(b) Um processo com três threads