Sistemas operativos modernos
base de datos. Supongamos que el kernel utiliza un algoritmo de calendarización por priori dades pero ofrece una llamada al sistema con la cual un proceso puede establecer {y modifi car) las prioridades de sus hijos. Así, el padre puede controlar con precisión la forma en que se calendarizan sus hijos, aunque no realice él mismo la calendarización. En este caso, el meca nismo está en el kernel pero la política es establecida por un proceso de usuario. 2.5.6 Calendarización de subprocesos Si cada uno de varios procesos tiene múltiples subprocesos, tenemos dos niveles de paralelismo: procesos y subprocesos. La calendarización en tales sistemas presenta diferencias considerables dependiendo de si se soportan subprocesos en el nivel de usuario o en el nivel de kemel (o en ambos). Consideremos primero los subprocesos en el nivel de usuario. Puesto que el kemel no sabe de la existencia de subprocesos, opera como siempre lo ha hecho, escogiendo un proceso, diga mos A, y cediéndole el control durante su cuanto. El calendarizador de subprocesos dentro de A decide cuál subproceso ejecutar, digamos A L Puesto que no hay interrupciones de reloj para multiprogramar los subprocesos, este subproceso podría seguir ejecutándose el tiempo que de see. Si consume todo el cuanto del proceso, el kemel escogerá otro proceso para ejecutar. Cuando el proceso A se vuelva a ejecutar, el subproceso A l reanudará su ejecución y se guirá consumiendo el tiempo de A hasta que termine. No obstante, su comportamiento antiso cial no afectará a los demás procesos, los cuales recibirán lo que el calendarizador considere su porción equitativa, sin importar lo que esté sucediendo dentro del proceso A. Consideremos ahora el caso en el que los subprocesos de A tienen relativamente poco tra bajo que hacer en cada ráfaga de CPU, por ejemplo 5 ms de trabajo dentro de un cuanto de 50 ms. Entonces, cada subproceso se ejecutará durante un tiempo corto y luego cederá la CPU al calendarizador de subprocesos. Esto podría dar pie a la sucesión A l, A2, A3, A I, A2, A3, A l, A2, A3, A l, antes de que el kernel cambie al proceso B. Esta situación se ilustra en la figura 2-43a. El algoritmo de calendarización que emplea el sistema de tiempo de ejecución puede ser cualquiera de los que hemos descrito. En la práctica, los más comunes son la calendarización por tumo circular y por prioridades. La única restricción es que no se cuenta con un reloj para interrumpir a un subproceso que se ha ejecutado durante demasiado dempo. Consideremos ahora la situación con subprocesos en el nivel de kemel. Aquí el kemel esco ge un subproceso específico para ejecutar. No es obligatorio que tome en cuenta a qué proceso pertenece el subproceso, pero puede hacerlo si lo desea. Se concede un cuanto al subproceso y se le suspende si lo excede. Con un cuanto de 50 ms, pero subprocesos que se bloquean después de 5 ms, el orden de los subprocesos durante un periodo dado de 30 ms podría ser A7, B l, A2, B2, A3, B3, lo cual no sería posible con estos parámetros si los subprocesos estuvieran en el nivel de usuario. Esta situación se ilustra, en parte, en la figura 2-43b. Una diferencia importante entre los subprocesos en el nivel de usuario y en el de kernel es el desempeño. Una conmutación de subprocesos en el nivel de usuario requiere unas cuantas instrucciones de máquina. En el caso de subprocesos en el nivel de kernel se requiere una con mutación de contexto completa, con cambio en el mapa de memoria y cancelación de la vali-
RkJQdWJsaXNoZXIy MjI4NDcx