La
conmutación de procesos es la operación que consiste
en retirar el procesador a un proceso para asignárselo
a otro. La conmutación se produce por cuatro razones:
- Un
proceso agota el tiempo máximo asignado al
procesador, por tanto, se debe dar paso a otro
proceso para garantizar que la multiprogramación es
llevada a cabo apropiadamente.
- Un
proceso está pendiente de un evento externo, por
tanto, pasa a estado bloqueado haciendo uso de la
llamada al sistema bloqueante. El planificador debe
asignar el procesador a otro nuevo proceso de entre
los que están en estado preparado.
- Que
termine la ejecución del proceso en cuestión.
- Que
haya una interrupción en la ejecución.
Los
pasos que se siguen son los siguientes:
- Pasar
a modo privilegiado.
- Guardar
el contenido de los registros del hardware en el PCB
(el llamado contexto de la ejecución).
- Actualizar
el estado del proceso en el PCB (el estado ha pasado
de activo a bloqueado o preparado).
- Si
se produjo una interrupción, atenderla.
- Seleccionar
un nuevo proceso.
- Restaurar
el contexto de ejecución del nuevo proceso
seleccionado. En el caso de que el nuevo proceso no
hubiese estado en el contexto de la ejecución deberá
inicializarse.
- Pasar
a modo no privilegiado.
El
tiempo de conmutación se considera una penalización,
ya que si realizamos muchas conmutaciones el
rendimiento decrece y esto da al usuario la sensación
de que sus actividades van a saltos. Para optimizar
esto hay que evitar conmutaciones innecesarias,
empleando para ello criterios de selección lo más
eficientes posibles.
|