La gestión o planificación de procesos de MINIX utiliza un sistema de
colas multinivel con tres niveles.
Prioridades:
- tareas de I/O tienen la máxima prioridad
- tareas del manejador de memoria y del sistema de ficheros
- 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:
- 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.
- 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.
- El procedimiento de servicio de la interrupción llama a SAVE, (en ensamblador) para
guardar todos los registros
- Se prepara una nueva pila temporal con la información depositada por la interrupción
- Se ejecuta el servicio de esta interrupción (escrito en C)
- El planificador marca la tarea en espera , en este caso de disco, como lista
- Se llama al planificador para decidir que proceso debe ejecutarse a continuación
- El procedimiento en C regresa al código en ensamblador
- El procedimiento en ensamblador carga los registros y el mapa de memoria del nuevo
proceso actual y lo inicia.