Processos - Implementação Prof. Gustavo Leitão Campus Natal Central Disciplina Programação para Ambiente de Redes Baseada na Aula do Prof. Luiz Affonso e Ivanovitch Silva 5/3/2010 5/3/2010 Plano de Aula PLANO DE AULA Criação de Processos em Linux e Unix utilizando a Linguagem C; • Identificação de processos: Pai e Filho. Exercício. 5/3/2010 Objetivo da Aula OBJETIVO DA AULA O aluno ao final da aula terá conhecimento para criação de processos no ambiente Unix através da linguagem de programação C. INFORMAÇÕES SOBRE PROCESSOS Quando um programa é executado ele é considerado um processo e ocupa um espaço dentro do gerenciador de processos. Precisamos encontrar uma maneira de identificar os processos • Process Identification - PID • SO garante que enquanto o processo estiver em execução o seu PID será único • Parent Process Identification - PPID 5/3/2010 SINTAXE 5/3/2010 EXEMPLO 1 5/3/2010 VISÃO GERAL PROCESSO NO SISTEMA OPERACIONAL Os Processos são criados através do uso de uma função interna do Kernel chamada fork; A função fork duplica o processo atual dentro do sistema operacional; O novo processo criado pelo processo pai é chamado de filho; O procecesso que faz achamada a função fork é chamado de pai; Todas as áreas do processo são duplicados dentro do sistema operacional (Código, Dados, Pilha, Memória Dinâmica). FUNÇÃO FORK Sintaxe 5/3/2010 FUNÇÃO FORK Exemplo 2 5/3/2010 FUNÇÃO FORK Exemplo 3 5/3/2010 FUNÇÃO FORK Analisar o Exemplo 3 Mudar o tempo de sleep do processo pai para 2s Finalizar o processo pai (kill -9 PID). Verificar o comando ps –aux Fazer o mesmo procedimento do passo 3 par ao processo filho 5/3/2010 PROCESSOS ZUMBIS Um processo pode se terminar quando seu pai não está a sua espera. Neste caso, o processo filho vai se tornar um processo denominado zumbi (zombie). Ele é neste caso identificado pelo nome <defunct> ou <zombie> ao lado do nome do processo. Seus segmentos de instruções e dados do usuário e do sistema são automaticamente suprimidos com sua morte, mas ele vai continuar ocupando a tabela de processo do kernel. Quando seu fim é esperado, ele simplesmente desaparece ao fim de sua execução. 5/3/2010 PROCESSOS ZUMBIS Exemplo 4 5/3/2010 FUNÇÃO WAIT Esperando o término do processo O processo pai pode esperar o término de um processo filho através da chamada da função wait. A função wait irá retornar o status de retorno de qualquer processo filho que termine. O processo que chamar a função wait terá um desses seguintes comportamentos: • Bloquear sua execução até o término de algum processo • filho • Retornar imediatamente com o status de término de um processo filho caso o filho já tenha terminado • Erro caso não se tenha nenhum processo filho rodando 5/3/2010 FUNÇÃO WAIT Sintaxe 5/3/2010 FUNÇÃO WAIT Exemplo 5 5/3/2010 CHAMADAS DE SISTEMA DO SO DENTRO DO PROGRAMA Sintaxe 5/3/2010 CHAMADA DE SISTEMA DENTRO DO PROGRAMA Exemplo 6 5/3/2010 FUNÇÃO FORK Exercício 1 5/3/2010 FUNÇÃO FORK Exercício 1 1 ano corresponde a 1 segundo O pai morre com 60 anos O pai tem um filho aos 14 anos O pai tem outro filho aos 16 anos O pai é avô aos 26 anos (primeiro filho) O pai é avô novamente aos 30 anos (segundo filho) O primeiro e o segundo filho morrem aos 30 anos O primeiro neto morre aos 12 anos e o segundo aos 14