Considere o programa abaixo escrito em linguagem C. No instante da execução da linha 5, ter-se-á uma hierarquia composta de quantos processos e threads, respectivamente? 1 main(){ 2 int i; 3 for(i=0;i<3;i++) 4 fork(); 5 while(1); 6 } 7 e 7 1 e 0 4 e 1 3 e 0 8 e 8
A função fork() cria um novo processo filho concomitante ao processo pai. Tanto o processo pai como o processo filho irão executar a próxima instrução.
Observe que dentro do laço de repetição, teremos três chamadas seguidas que irá resultar na primeira chamada em 2, e na segunda os dois processos irão criar mais 2, e na terceira os 4 processos irão criar mais 4 processos, em progressão geométrica. No total, serão 8 processos com uma thread cada.
Quando chamamos a função Fork() ocorre a criação de um novo processo, chamado de processo filho. Repare que a função Fork() foi invocada três vezes, totalizando oito processos.
Lista de comentários
Resposta:
8 processos e 8 threads
Explicação:
A função fork() cria um novo processo filho concomitante ao processo pai. Tanto o processo pai como o processo filho irão executar a próxima instrução.
Observe que dentro do laço de repetição, teremos três chamadas seguidas que irá resultar na primeira chamada em 2, e na segunda os dois processos irão criar mais 2, e na terceira os 4 processos irão criar mais 4 processos, em progressão geométrica. No total, serão 8 processos com uma thread cada.
Resposta:
A resposta correta é: 8 e 8.
Explicação:
Quando chamamos a função Fork() ocorre a criação de um novo processo, chamado de processo filho. Repare que a função Fork() foi invocada três vezes, totalizando oito processos.
(Gabarito de Prova).