SóProvas


ID
15781
Banca
CESPE / CEBRASPE
Órgão
ANATEL
Ano
2006
Provas
Disciplina
Sistemas Operacionais
Assuntos

A respeito de sistemas operacionais, julgue os seguintes itens.

No UNIX, usando-se fork, um novo processo é criado sem que um novo programa seja posto em execução. Se um processo B for criado por um processo A via fork, o processo B executará o programa que estiver sendo executado por A. Por outro lado, usando-se execve, um novo processo é criado e um novo programa é automaticamente posto em execução. Se um processo B for criado pelo processo A via execve, o processo B executará o programa identificado na chamada execve.

Alternativas
Comentários
  • A chamada execve() substitui o processo corrente, não cria um novo processo.
  • A técnica fork-exec é muito usada no Unix, mas não é usada no Windows.
    fork() é uma system call que clona determinado processo, criando uma relação pai-filho. É regra que ambos os processos utilizem o mesmo binário e que, posteriormente, o filho passe a usar um outro binário: isso é um exec().
    A chamada de sistema exec() sobrepõe o processo para que é chamada por outro, perdendo todos os dados do processo original (o que não ocorre com o fork() ).
    Um ponto interessante é a prevenção do aparecimento de processos zumbi (que esqueceram de morrer):
    "If the parent chooses to wait for the child to die, then the parent will receive the exit code of the program that the child executed. To prevent the child becoming a zombie the parent should call wait on its children, either periodically or upon receiving the SIGCHLD signal, which indicates a child process has terminated."

    Ilustrando:


    Fontes:
    http://www-h.eng.cam.ac.uk/help/tpl/unix/fork.html
    http://www.cim.mcgill.ca/~franco/OpSys-304-427/messages/node91.html
    http://www.cs.duke.edu/courses/spring01/cps110/slides/proc-ux/sld012.htm