Pergunta

Atualmente estou em uma aula de sistemas operacionais e meu professor passou metade da aula falando sobre PIDs.Ela mencionou, como muitos sabem, que os processos conhecem a identificação dos pais.

Minha pergunta é esta:

O PCB de um processo conhece o ID de seu filho?Em caso afirmativo, qual é o caminho a seguir para obtê-lo?

Foi útil?

Solução

Até onde eu sei, um processo não possui uma lista explícita dos PIDs de seus filhos, mas pode ser facilmente construído, pois um processo deve saber quais processos filhos ele gera.Por exemplo, a chamada fork() do UNIX retorna o PID filho no processo pai e 0 no processo filho, CreateProcess() no Windows retorna (IIRC) o PID do novo processo criado.

Outras dicas

Quando você usa fork() em *nix, o valor de retorno é o PID do filho no processo pai e 0 no processo filho.Essa é uma maneira de descobrir.

Não tenho certeza se eles acompanham a "árvore" de geração de processos, acho que depende de qual sistema operacional você usa, mas como quando você mata o bash (ou qualquer shell), todos os filhos em execução também são mortos, acho que sistemas semelhantes ao UNIX fazem acompanhe isso.

Se você estiver usando Linux ou qualquer coisa que implemente APIs Unix, quando um processo chama fork() para criar um processo filho, o pai recebe o PID filho como código de retorno, ou -1 se a bifurcação falhou.O processo filho obtém um código de retorno zero.

O PCB do processo conhece o ID do seu filho.

Como sabemos, Fork() é usado para criar processos. Não aceita argumentos e retorna um ID de processo. Depois que um novo processo filho é criado, tanto o pai quanto o filho executarão a próxima instrução após o fork().Aí temos que distinguir o pai do filho. Isso pode ser feito testando o valor de retorno de fork().

Se Fork() retornar um valor negativo, a criação do processo filho não será bem-sucedida.Se Fork() retornar um Zero para o processo filho recém-criado.If Fork() retorna um valor positivo como um ID de processo do processo filho para o processo pai.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top