Sistemas operativos modernos

SO tiene usar subprocesos? Nadie propondría en serio calcular los primeros n números primos o jugar ajedrez empleando subprocesos, porque nada se ganaría con ello. 2.2.4 Implementación de subprocesos en el kemel Ahora consideremos la posibilidad de que el kemel esté enterado de la existencia de subpro­ cesos y los administre. No se necesita un sistema de tiempo de ejecución en cada uno, como se muestra en la figura 2-13b. Además, no hay una tabla de subprocesos en cada proceso. En vez de eso, el kemel tiene una tabla de subprocesos que lleva el control de todos los subproce­ sos del sistema. Cuando un subproceso quiere crear o destruir otro subproceso, emite una lla­ mada al kemel, que se encarga de crearlo o destruirlo actualizando su tabla de subprocesos. La tabla de subprocesos del kemel contiene los registros, el estado y demás información de cada subproceso. Estos datos son los mismos que se usan con subprocesos en el nivel de usuario, pero ahora están en el kemel, no en el espacio de usuario (dentro del sistema de tiempo de ejecu­ ción). Esta información es un subconjunto de la que los kemels tradicionales mantienen acerca de cada uno de sus procesos de un solo subproceso, es decir, el estado del proceso. Además, el ker­ nel también mantiene la tabla de procesos tradicional con la que da seguimiento a los procesos. Todas las llamadas que podrían bloquear un subproceso se implementan como llamadas al sistema y tienen un costo mucho mayor que las llamadas a procedimientos de un sistema de tiem­ po de ejecución. Cuando un subproceso se bloquea, el kernel, a criterio propio, puede ejecutar otro subproceso del mismo proceso (si hay uno listo) o alguno de otro proceso. Con subprocesos en el nivel de usuario, el sistema de tiempo de ejecución sigue ejecutando subprocesos de su pro­ pio proceso hasta que el kemel le quita la CPU (o hasta que no haya más subprocesos listos pa­ ra ejecución). Debido al costo relativamente mayor de crear y destruir subprocesos en el kernel, algunos sistemas adoptan un enfoque ecológico correcto y reciclan sus subprocesos. Cuando un sub­ proceso se destruye, se marca como no ejecutable, pero sus estructuras de datos en el kernel no sufren alteración. Más adelante, cuando es necesario crear un subproceso, se reactiva uno antiguo, ahorrando algo de procesamiento extra. Los subprocesos en el nivel de usuario tam­ bién pueden reciclarse, pero debido a que el procesamiento extra que implica su administra­ ción es mucho menor, hay menos incentivo para hacerlo. Los subprocesos de kernel no necesitan nuevas llamadas al sistema no bloqueadoras. Ade­ más, si un subproceso de un proceso causa un fallo de página, el kemel puede verificar con fa­ cilidad si el proceso tiene algún otro subproceso ejecutable, y en su caso, ejecutar uno de ellos mientras espera que la página necesaria llegue del disco. Su principal desventaja es el costo ele­ vado de una llamada al sistema; si las operaciones de subprocesos (creación, terminación, etc.) son usuales, se requerirá mucho procesamiento extra. 2.2.5 Implementaciones híbridas Se han investigado varias formas de combinar las ventajas de los subprocesos en el nivel de usuario y en el nivel de kernel. Una de ellas es usar subprocesos en el nivel de kernel y luego

RkJQdWJsaXNoZXIy MjI4NDcx