Buenas tardes,
Tenía una duda con la respuesta de esta pregunta y desencadeno una serie de preguntas que son acerca de la interacción entre el planificador y la ocurrencia de interrupciones.
La pregunta del parcial es
"Indique los pasos que deben realizarse, efectuar un llamado al sistema (system call), indicando quién realiza cada paso."
Y la respuesta que se da es la siguiente:
i) El proceso de usuario guarda los parámetros del system call y el número de system call a
invocar donde corresponda
ii) El proceso de usuario invoca a una interrupción por software
iii) El hardware cambia la CPU a modo monitor e invoca al manejador de la interrupción
correspondiente (cuyo código es parte del SO)
iv) El SO procesa la system call y guarda el resultado donde corresponda
v) El planificador del SO selecciona el próximo proceso a ejecutar
vi) Se pasa el CPU a modo usuario y se pasa el control al nuevo proceso
---------------------------
A mí lo que me genera duda es el paso 5, ya que entiendo que la interrupción le saco la ejecución al proceso de usuario que llamo a la system call, por lo que les pregunto:
Cuando ocurre una interrupción que pasa con el planificador?
Si un proceso está ejecutado y una interrupción cualquiera sucede, ¿el proceso pasa a estado 'ready' automáticamente? Si es así: ¿es la rutina de interrupción es la que pasa al estado ejecutado en ese momento? ¿Sea crea un PCB y se saltea a todos los demás procesos en la cola ready, en caso de por ejemplo se trate de una planificación por FCFS?
Y luego otra serie de dudas más:
¿Qué es lo que hace que el planificador se ejecute en medio de la ejecución de un proceso? ¿El timer del CPU? Porque, por ejemplo en un sistema por prioridad expropiativo o en un RR, en algún punto se tiene que llamar al planificador, ¿cuándo se hace y quien sería el encargado de llamarlo?
Si fuera correcto que toda interrupción mueve el proceso de ejecutado => listo y pone a la rutina de interrupción a ejecutar ¿Entonces se llama al planificador luego de que termina de ejecutar esa rutina y se ve si sigue ejecutado el proceso anterior (expropiativo) o si directamente se lo vuelve a poner en la CPU (no expropiativo)?
Disculpen si la pregunta no es pertinente, pero no entiendo bien la integración planificador - interrupción
Saludos,
Daniel