Así es como funcionan los algoritmos no preventivos:
1. Selección de Proceso:
- El programador selecciona el siguiente proceso a ejecutar en función de políticas de programación como First Come First Served (FCFS), Shortest Job First (SJF) o cualquier otro algoritmo de programación.
2. Ejecución No Interrumpible:
- Una vez que un proceso comienza a ejecutarse, no puede ser interrumpido por otro proceso. Esto significa que el proceso seleccionado continuará ejecutándose hasta que complete su ejecución o renuncie voluntariamente a la CPU (por ejemplo, realizando una operación de E/S).
3. Sin preferencia:
- Mientras se ejecuta el proceso actual, ningún otro proceso puede quitarle la CPU. Esto garantiza que los procesos se completen sin ser interrumpidos por procesos de mayor prioridad.
4. Finalización:
- El proceso continúa ejecutando sus instrucciones hasta que termina su ejecución o llega a un estado en el que está bloqueado (esperando E/S o algún recurso). Una vez que se completa el proceso, la CPU está disponible para programar el siguiente proceso.
Los algoritmos de programación no preventivos son más sencillos de implementar que los preventivos, ya que no es necesario cambiar de contexto con frecuencia. Sin embargo, pueden provocar una menor eficiencia del sistema y un rendimiento subóptimo, ya que los procesos de mayor prioridad pueden tener que esperar a que los procesos de menor prioridad completen su ejecución.
Ejemplos de algoritmos de programación no preventivos incluyen:
- Por orden de llegada (FCFS): Los procesos se ejecutan en el orden en que llegan, sin considerar su prioridad ni sus requisitos de recursos.
- El trabajo más corto primero (SJF) sin preferencia: Este algoritmo selecciona el proceso con el tiempo de ejecución estimado más corto para su siguiente ejecución. Sin embargo, una vez que el proceso comienza a ejecutarse, no puede ser reemplazado por otro proceso, incluso si este último llega más tarde con un tiempo de ejecución estimado más corto.