La gestión o planificación de procesos de MINIX utiliza un sistema de colas multinivel con tres niveles.

wpe5.jpg (22384 bytes)

Prioridades:

  1. tareas de I/O tienen la máxima prioridad
  2. tareas del manejador de memoria y del sistema de ficheros
  3. tareas de usuario.

Mientras exista un proceso en una cola de prioridad alta, no se ejecutan los procesos de las demás colas de prioridad menor.

Las tareas del sistema, el manejador de memoria y el sistema de ficheros nunca son desasignados.

El planificador de CPU, trabaja por interrupciones, cada manejador de I/O, disco, reloj, terminal, etc tiene asociada una dirección dentro del vector de interrupciones, que contiene la dirección del procedimiento que atiende esa interrupción.

Si cuando se esta ejecutando un proceso ocurre una interrupción hardware, por ejemplo el disco interrumpe, se ejecutan a grandes rasgos los siguientes pasos:

  1. El hardware de interrupciones (i8259), mete el contador de programa, la palabra de estado y algún registro en la pila del proceso que se esta ejecutando.
  2. El hardware carga el contador de programa con una dirección para que la CPU salte a una dirección dentro del vector de interrupciones donde se encuentra el procedimiento de servicio que atiende a la interrupción de disco.
  3. El procedimiento de servicio de la interrupción llama a SAVE, (en ensamblador) para guardar todos los registros
  4. Se prepara una nueva pila temporal con la información depositada por la interrupción
  5. Se ejecuta el servicio de esta interrupción (escrito en C)
  6. El planificador marca la tarea en espera , en este caso de disco, como lista
  7. Se llama al planificador para decidir que proceso debe ejecutarse a continuación
  8. El procedimiento en C regresa al código en ensamblador
  9. El procedimiento en ensamblador carga los registros y el mapa de memoria del nuevo proceso actual y lo inicia.