Requisito previo: programación de CPU
1. Programación
preventiva: la programación preventiva se utiliza cuando un proceso cambia del estado de ejecución al estado listo o del estado de espera al estado listo. Los recursos (principalmente ciclos de CPU) se asignan al proceso durante un período de tiempo limitado y luego se retiran, y el proceso se vuelve a colocar en la cola lista si todavía le queda tiempo de ráfaga de CPU. Ese proceso permanece en la cola de espera hasta que tenga la próxima oportunidad de ejecutarse.
Los algoritmos basados en la programación preventiva son: Round Robin (RR) , Tiempo restante más corto primero (SRTF) , Prioridad (versión preventiva) , etc.
2. Programación
no preventiva: la programación no preventiva se utiliza cuando un proceso finaliza o un proceso pasa de estar en ejecución al estado de espera. En esta programación, una vez que los recursos (ciclos de la CPU) se asignan a un proceso, el proceso retiene la CPU hasta que finaliza o alcanza un estado de espera. En el caso de la programación no preventiva, no interrumpe un proceso que se ejecuta en la CPU en medio de la ejecución. En cambio, espera hasta que el proceso complete su tiempo de ráfaga de CPU y luego puede asignar la CPU a otro proceso.
Los algoritmos basados en la programación no preventiva son: Trabajo más corto primero (SJF básicamente no preventivo) y Prioridad (versión no preventiva) , etc.
Diferencias clave entre la programación preventiva y no preventiva:
- En la programación preventiva, la CPU se asigna a los procesos durante un tiempo limitado, mientras que en la programación no preventiva, la CPU se asigna al proceso hasta que finaliza o cambia al estado de espera.
- El proceso de ejecución en la programación preventiva se interrumpe en medio de la ejecución cuando llega uno de mayor prioridad, mientras que el proceso de ejecución en la programación no preventiva no se interrumpe en medio de la ejecución y espera hasta su ejecución.
- En la programación preventiva, existe la sobrecarga de cambiar el proceso del estado listo al estado en ejecución, viceversa y mantener la cola lista. Mientras que en el caso de la programación no preventiva no tiene la sobrecarga de cambiar el proceso del estado de ejecución al estado listo.
- En la programación preventiva, si un proceso de alta prioridad llega con frecuencia a la cola de procesos listos, entonces el proceso con baja prioridad tiene que esperar mucho y es posible que tenga que pasar hambre. , en la programación no preventiva, si la CPU se asigna al proceso que tiene un tiempo de ráfaga más grande, entonces los procesos con un tiempo de ráfaga pequeño pueden tener que pasar hambre.
- La programación preventiva logra flexibilidad al permitir que los procesos críticos accedan a la CPU a medida que llegan a la cola lista, sin importar qué proceso se esté ejecutando actualmente. La programación no preventiva se denomina rígida, ya que incluso si un proceso crítico ingresa a la cola de espera, el proceso que ejecuta la CPU no se ve afectado.
- La programación preventiva tiene que mantener la integridad de los datos compartidos, por eso es una asociación de costos, lo que no ocurre con la programación no preventiva.
Cuadro comparativo:
Parámetro | PROGRAMACIÓN PREVENTIVA | PROGRAMACIÓN NO PREVENTIVA |
---|---|---|
Básico | En este recursos (Ciclo de la CPU) se asignan a un proceso por un tiempo limitado. | Una vez que los recursos (Ciclo de la CPU) se asignan a un proceso, el proceso los retiene hasta que completa su tiempo de ráfaga o cambia al estado de espera. |
Interrumpir | El proceso se puede interrumpir en el medio. | El proceso no se puede interrumpir hasta que finalice solo o se acabe el tiempo. |
Inanición | Si un proceso que tiene alta prioridad llega con frecuencia a la cola de listos, un proceso de baja prioridad puede pasar hambre. | Si un proceso con un tiempo de ráfaga prolongado está ejecutando la CPU, es posible que un proceso posterior con menos tiempo de ráfaga de CPU se quede sin recursos. |
Gastos generales | Tiene gastos generales de programación de los procesos. | No tiene gastos generales. |
Flexibilidad | flexible | rígido |
Costo | costo asociado | sin costo asociado |
Utilización de la CPU | En la programación preventiva, la utilización de la CPU es alta. | Es bajo en programación no preventiva. |
Tiempo de espera | El tiempo de espera de la programación preventiva es menor. | El tiempo de espera de la programación no preventiva es alto. |
Tiempo de respuesta | El tiempo de respuesta de la programación preventiva es menor. | El tiempo de respuesta de la programación no preventiva es alto. |
Ejemplos | Ejemplos de programación preventiva son Round Robin y el tiempo restante más corto primero. | Ejemplos de programación no preventiva son First Come First Serve y Shortest Job First. |
Publicación traducida automáticamente
Artículo escrito por Ankit_Bisht y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA