Processos - Implementação - DCA

Propaganda
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
Download