Condor

Disponível somente no TrabalhosFeitos
  • Páginas : 3 (725 palavras )
  • Download(s) : 0
  • Publicado : 5 de julho de 2012
Ler documento completo
Amostra do texto
fork/join no UNIX
• Objetivo
– Verificar na prática o funcionamento das primitivas fork e join

• Roteiro
– Chamada de sistema fork – Chamada de sistema wait – Exemplos de código em C –Exercício de programação em C – Questionário
INF01151 – Sistemas Operacionais II N – 2006/2 Prof. Cláudio Geyer / Rômulo Rosinha

fork/join no UNIX
• Chamada de sistema fork
– Cria um novo processo(processo filho) a partir de um processo existente (processo pai) – Código do programa é idêntico – Execução do processo filho inicia no próximo comando do programa – Processo filho é uma cópia do processopai, exceto por
• identificador de processo e identificador de processo pai • locks obtidos pelo processo pai

INF01151 – Sistemas Operacionais II N – 2006/2 Prof. Cláudio Geyer / Rômulo Rosinha fork/join no UNIX
• Chamada de sistema fork
processo

fork()

retorna -1 em caso de erro, situação de falta de memória por exemplo

retorna 0 em caso de sucesso, indicando ser o processofilho

retorna >0 em caso de sucesso, indicando ser o processo pai

INF01151 – Sistemas Operacionais II N – 2006/2 Prof. Cláudio Geyer / Rômulo Rosinha

fork/join no UNIX
• Chamada de sistemawait/waitpid
– Equivalente a primitiva join – Suspende processo pai até que
• termine a execução de um processo filho • processo pai receba um sinal para terminar

– Libera os recursos do processofilho – Se o processo filho já terminou retorna imediatamente (processo zombie)
INF01151 – Sistemas Operacionais II N – 2006/2 Prof. Cláudio Geyer / Rômulo Rosinha

fork/join no UNIX
// e1.c#include #include int main(void) { int pid, status; pid = fork(); if (pid == -1) { /* erro na chamada de sistema */ perror("erro no fork!"); exit(-1); } else if (pid == 0) { /* processo filho */printf("processo: filho\t pid: %d\t ppid: %d\n", getpid(), getppid()); _exit(0); } else { /* processo pai */ wait(&status); printf("processo: pai\t pid: %d\t ppid: %d\n", getpid(), getppid()); exit(0); } }...
tracking img