En el contexto de la programación de procesos, ¿interviene el sistema operativo después de que finaliza cada segmento de tiempo/cuanto? Por ejemplo, si la computadora estaba inactiva y llegaron 4 tareas: t1, t2, t3 y t4, y se programaron usando el orden de llegada, normalmente consideraríamos que t1, t2, t3, t4 están en la CPU, pero ¿No es esto una simplificación? Porque si t1, OS, t2, OS, t3 OS t4, ¿qué pasaría realmente? Si es cierto que el sistema operativo interviene después de cada intervalo de tiempo (también conocido como cuántico), ¿no es esto muy ineficiente?
Respuesta1
No necesariamente. Normalmente, el programador reducirá la prioridad dinámica de una tarea después de que expire su cuanto, pero si sigue siendo la tarea de mayor prioridad, obtendrá otra. Sin embargo, en general, sí, cuando la tarea se ha ejecutado durante el tiempo suficiente, el sistema operativo toma el control y cambia a otro. ¿Por qué debería ser eso ineficiente?
Respuesta2
Creo que en los sistemas operativos modernos los intervalos de tiempo tienen una duración variable. El programador se invoca después de atender cada interrupción (teclado, mouse, pantalla táctil, red, transferencia de disco finalizada, ...), así como las interrupciones del temporizador.
En términos generales, el programador está diseñado para estimar el promedio móvil de los tiempos entre las llamadas al sistema de bloqueo de un proceso. Antes de que el programador dé control al proceso X, configura un temporizador que interrumpirá en un momento un poco más largo que el promedio móvil del proceso X. Si el programador está haciendo un buen trabajo al adivinar el tiempo hasta la siguiente llamada al sistema de bloqueo, entonces una gran fracción de procesos en realidad liberará voluntariamente la CPU al realizar una llamada al sistema de bloqueo.
El objetivo es lograr que los procesos interactivos realicen un poco de cálculo, realicen una llamada al sistema de bloqueo para solicitar algunos datos de un dispositivo lento y luego se reprogramen tan pronto como se devuelvan los datos. Si el programador tiene que decidir entre la programación entre dos procesos, entonces, en igualdad de condiciones, favorecerá al proceso que realiza llamadas al sistema de bloqueo con mayor frecuencia. Esto tiende a maximizar el número de solicitudes de E/S de bloqueo simultáneas, lo que mejora el rendimiento general del sistema.