Pregunta

Actualmente estoy en una clase de sistemas operativos y mi profesor pasó la mitad de la clase hablando sobre PID.Mencionó, como muchos saben, que los procesos conocen la identificación de sus padres.

Mi pregunta es esta:

¿Conoce la PCB de un proceso la identificación de su hijo?Si es así, ¿cuál es el camino a seguir para obtenerlo?

¿Fue útil?

Solución

Hasta donde yo sé, un proceso no tiene una lista explícita de los PID de sus hijos, pero se puede construir fácilmente, ya que un proceso debe saber qué procesos secundarios genera.Por ejemplo, la llamada fork() de UNIX devuelve el PID secundario en el proceso principal y 0 en el proceso secundario, CreateProcess() en Windows devuelve (IIRC) el PID del nuevo proceso creado.

Otros consejos

cuando usas fork() en *nix, el valor de retorno es el PID del hijo en el proceso padre y 0 en el proceso hijo.Ésa es una manera de averiguarlo.

No estoy seguro de si realizan un seguimiento del "árbol" de generación de procesos, creo que depende del sistema operativo que uses, pero dado que cuando matas bash (o cualquier shell), todos los niños en ejecución también mueren, creo que los sistemas similares a UNIX sí. haz un seguimiento de esto.

Si está utilizando Linux o cualquier dispositivo que implemente las API de Unix, cuando un proceso llama a fork() para crear un proceso hijo, el padre recibe el PID hijo como código de retorno, o -1 si la bifurcación falló.El proceso hijo obtiene un código de retorno cero.

La PCB del proceso conoce la identificación de su hijo.

Como sabemos, Fork() se utiliza para crear procesos. No requiere argumentos y devuelve un ID de proceso. Después de crear un nuevo proceso hijo, tanto el padre como el hijo ejecutarán la siguiente instrucción después de fork().Allí tenemos que distinguir al padre del hijo. Esto se puede hacer probando el valor de retorno de fork().

Si Fork() devuelve un valor negativo, la creación del proceso hijo no tiene éxito.Si Fork() devuelve un cero al proceso hijo recién creado.Si Fork() devuelve un valor positivo como ID de proceso del proceso hijo al proceso padre.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top