Sistemas operativos modernos
Un último problema debido a los subprocesos es la administración de la pila. En muchos sistemas, cuando se desborda la pila de un proceso, el kemel tan sólo proporciona a ese proce so más espacio de pila en forma automática. Si un proceso tiene varios subprocesos, también de berá tener varias pilas. Si el kemel no tiene conocimiento de todas ellas, no podrá hacerlas crecer de manera automática cuando haya un fallo de pila. De hecho, es posible que el kemel ni siquie ra se dé cuenta de que un fallo de memoria tiene que ver con el crecimiento de la pila. Estos problemas de ninguna manera son insuperables, pero sí ponen de manifiesto que la introducción de subprocesos en un sistema existente sin un rediseño considerable del mismo no funciona. Como mínimo, se tendría que redefínir la semántica de las llamadas al sistema y rescribir las bibliotecas. Y todo esto debe hacerse de tal manera que se mantenga la compati bilidad hacia atrás con los programas existentes, para el caso limitante de un proceso con un solo subproceso. Si desea más información acerca de los subprocesos, puede consultar Hauser et al. (1993) y Marsh et al. (1991). 2.3 COMUNICACIÓN ENTRE PROCESOS Con frecuencia, los procesos necesitan comunicarse con otros procesos. Por ejemplo, en una canalización de shell, la salida del primer proceso debe transferirse al segundo, y así hasta el final. Por tanto, es necesaria la comunicación entre procesos, de preferencia con un mecanis mo bien estructurado que no utilice interrupciones. En las siguientes secciones examinaremos algunos aspectos de esta comunicación entre procesos (IPC; InterProcess Communication). En pocas palabras, hay tres aspectos que cuidar. Ya hicimos alusión al primero: cómo pue de un proceso pasar información a otro. El segundo tiene que ver con asegurarse de que dos o más procesos no se estorben al realizar actividades cruciales (supongamos que dos procesos tratan de apoderarse del último megabyte de memoria). El tercero tiene que ver con el ordena miento correcto cuando existen dependencias: si el proceso A produce datos y el proceso B los imprime, B tendrá que esperar hasta que A haya producido algunos datos antes de comenzar a imprimir. Examinaremos estos tres aspectos a partir de la próxima sección. Es importante mencionar que dos de estos aspectos también se aplican a los subprocesos. El primero —la transferencia de información— es fácil para los subprocesos porque compar ten un solo espacio de direcciones (los subprocesos en espacios de direcciones distintos que necesitan comunicarse se tratan como procesos en comunicación). Sin embargo, los otros dos —evitar estorbarse y el ordenamiento correcto— son idénticos en el caso de los subprocesos: se presentan los mismos problemas y se pueden usar las mismas soluciones. A continuación analizaremos el problema en el contexto de los procesos, pero debe tener presente que los mis mos problemas y soluciones se aplican a los subprocesos. 2.3.1 Condiciones de competencia En algunos sistemas operativos, procesos que están colaborando podrían compartir un área de almacenamiento que ambos pueden leer y escribir. El almacenamiento compartido podría es tar en la memoria principal (tal vez en una estructura de datos del kemel), o bien, ser un archi
RkJQdWJsaXNoZXIy MjI4NDcx