Duda teórica sobre Despachador

Duda teórica sobre Despachador

de Ignacio Ismael Decia Cairo -
Número de respuestas: 4

En las diapositivas de planificación de procesos dice que el primer paso realizado cuando se invoca al despachador es realizar el cambio de contexto entre el proceso saliente y el proceso que fue elegido por el scheduler. Mi duda es, si el estado del proceso saliente no se tendría que haber preservado antes de que ejecutara el scheduler? De lo contrario, no podría pasar que el scheduler pisara el estado del proceso que estaba ejecutando? Es decir, yo pienso que el despachador se ejecutaría en dos pasos, primero  para preservar el contexto del proceso que estaba ejecutando y luego una vez ejecutado el scheduler, se ejecuta nuevamente el despachador para restaurar el contexto del proceso seleccionado. Gracias!

Saludos.

En respuesta a Ignacio Ismael Decia Cairo

Re: Duda teórica sobre Despachador

de Pedro Liber Antonio Carrasco Aguilar -

Mira para mi... El planificador selecciona procesos a poner o sacar y el despachador se encarga del swap (de procesos en la CPU). Alto nivel.

¿Como lo hacen a bajo nivel? Tiro fruta.

Es lo mismo que cuando atendes una interrupcion de lo que me acuerdo de arqui2 vos tenias una vindowsTrap donde se guardaba el contexto de los registros.

Si tenes una unica CPU (xq si es multi asimetrico no te importa mucho. Si es simetrico van a haber casos en los que si te importa que es cuando el proc usr colisiona con los del kernel en la misma CPU).

Suponete que ejecutas el planificador por una I/O

Ponele que esta el p1 de user haces I/O (una syscall). Ahi yo me imagino que al llamar a la syscall se hace una trap que dependiendo de la arqui te debe de guardar la info del llamante en la winTrap y despues de ejecutarla la restaura. En la syscall de I/O se llamara al planificador, (en este caso no hay wintrap) y este elige de la cola de ready al candidato y llama al despachador (tampoco hay trap). que saca "la data necesaria" de la winTrap anterior y guarda el contexto en el PCB, y rellena en la wintrap anterior con "la data" del nuevo porc p2 y retorna de la trap. Ahora quien se ejecuta es p2.

Pero mejor fijate en google xq talvez no es asi.

En respuesta a Ignacio Ismael Decia Cairo

Re: Duda teórica sobre Despachador

de Jorge Merlino -

El despachador se encarga de realizar el cambio de contexto entre procesos. El cambio de contexto incluye salvar el estado del proceso que tiene la cpu actualmente, cargar los datos del nuevo proceso a ejecutar, cambiar el procesador a modo usuario y recién ahí saltar a la siguiente instrucción del nuevo proceso.

El scheduler se ejecuta antes de llamar al despachador y solamente selecciona el siguiente proceso a ejecutar.

En respuesta a Jorge Merlino

Re: Duda teórica sobre Despachador

de Javier Agustin Farias Gonzalez -

Si no entendí mal la duda del compañero es qué pasa cuando se ejecuta el scheduler. Debería haber un cambio de contexto, no? En un sistema monoprosesador por lo menos es seguro que si. O sea, el despachador se ejecutaría dos veces: una para darle el recurso CPU al scheduler, y otra vez para cambiar del scheduler al proceso que se haya elegido. Está bien lo que digo?

Saludos

En respuesta a Javier Agustin Farias Gonzalez

Re: Duda teórica sobre Despachador

de Jorge Merlino -

El scheduler es parte del sistema operativo por lo que normalmente adquiere la cpu luego de una interrupción. Este cambio de contexto entre el proceso que está corriendo y el manejador de interrupciones lo hace el hardware.

Tampoco es cierto que toda ejecución del scheduler termine en un cambio de contexto. Un caso obvio es si hay un solo proceso en el sistema.