Logo Passei Direto
Buscar
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 }
A 1 e 0
B 3 e 0
C 4 e 1
D 7 e 7
E 8 e 8
User badge image
Testando o Conhecimento

há 10 meses

Respostas

User badge image

Ed Verified user icon

há 10 meses

Para resolver essa questão, precisamos entender como a função `fork()` funciona em C. Cada chamada a `fork()` cria um novo processo filho. O número total de processos gerados pode ser calculado pela fórmula \(2^n\), onde \(n\) é o número de chamadas a `fork()`. No seu código, temos um loop que chama `fork()` 3 vezes: 1. Na primeira iteração do loop (i=0), o processo pai cria 1 filho (total: 2 processos). 2. Na segunda iteração do loop (i=1), cada um dos 2 processos existentes cria mais 1 filho (total: 4 processos). 3. Na terceira iteração do loop (i=2), cada um dos 4 processos existentes cria mais 1 filho (total: 8 processos). Portanto, após 3 chamadas a `fork()`, teremos 8 processos no total. Agora, quanto às threads: o código apresentado não cria nenhuma thread, pois não há uso de `pthread_create()` ou similar. Portanto, o número de threads é 0. Assim, no instante da execução da linha 5, teremos 8 processos e 0 threads. A alternativa correta é: E 8 e 0.

Essa resposta te ajudou?

0
Dislike0
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar essa resposta. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Ainda com dúvidas?

Envie uma pergunta e tenha sua dúvida de estudo respondida!

Mais perguntas desse material

Mais conteúdos dessa disciplina