jueves, 15 de diciembre de 2016

Diseño y Administracion de SO - UNED (Creando procesos)

Este año, entre otras cosas, toca darle duro al ‘Diseño y administración de SO’. Estamos usando UNIX o más bien GNG-Linux para poner en práctica toda la teoría que estamos viendo.

La asignatura me está resultando apasionante y el ED es buenísimo. El  caso es que el tema de procesos, hijos, señales y mecanismos IPC tiene su miga, por no decir algo más gordo.


Para intentar comprender bien el funcionamiento estoy haciendo algunas pruebas sencillas que quiero compartir y explicar por si son de utilidad a algún compañero.


Aquí también podéis ver el código --> código

El código va alternando la ejecución de dos procesos. Una parte del mismo solo la puede ejecutar el proceso hijo, pero la otra la pueden ejecutar hijo o padre de forma indistinta (depende de cómo son planificados por el SO).


En la parte que pueden ejecutar los dos procesos se observa que cuando lo ejecuta el hijo, se obtiene el PID correcto tanto del padre como del hijo. Por el contrario, cuando es el padre el que ejecuta esta parte del código el PID del hijo es incorrecto.



Esto es debido a que cuando la llamada al sistema fork() finaliza, el contexto de usuario del hijo es una copia idéntica al del padre y por tanto la lectura de la variable int padre es correcta. El padre por el contrario no puede acceder al contexto del hijo y por eso el PID del hijo es incorrecto. Muestra el valor de  int hijo=999. En lugar de hijo=getpid(). Recordar que la parte del if solo la ejecuta el hijo.

Culex.

No hay comentarios:

Publicar un comentario