¿Qué es la programación preventiva?
La programación preventiva es un método de programación en el que las tareas se asignan principalmente con sus prioridades. A veces es importante ejecutar una tarea con mayor prioridad antes que otra tarea de menor prioridad, incluso si la tarea de menor prioridad todavía se está ejecutando.
En ese momento, la tarea de menor prioridad se mantiene durante algún tiempo y se reanuda cuando la tarea de mayor prioridad finaliza su ejecución.
En este tutorial del sistema operativo, aprenderá:
- ¿Qué es la programación preventiva?
- ¿Qué es la programación no preventiva?
- Diferencia entre la programación preventiva y no preventiva en el sistema operativo
- Ventajas de la programación preventiva
- Ventajas de la programación no preventiva
- Desventajas de la programación preventiva
- Desventajas de la programación no preventiva
- Ejemplo de programación no preventiva
- Ejemplo de programación preventiva
¿Qué es la programación no preventiva?
En este tipo de método de programación, la CPU se ha asignado a un proceso específico. El proceso que mantiene a la CPU ocupada liberará la CPU ya sea cambiando de contexto o terminando.
Es el único método que se puede utilizar para varias plataformas de hardware. Eso es porque no necesita hardware especializado (por ejemplo, un temporizador) como la programación preventiva.
La programación no preventiva se produce cuando un proceso entra voluntariamente en el estado de espera o finaliza.
Diferencia entre la programación preventiva y no preventiva en el sistema operativo
Aquí, son la programación preventiva y no preventiva en el sistema operativo
Programación preventiva | Programación no preventiva |
Se puede adelantar a un procesador para ejecutar los diferentes procesos en medio de cualquier ejecución de proceso actual. | Una vez que el procesador inicia su ejecución, debe finalizarlo antes de ejecutar el otro. No se puede pausar en el medio. |
La utilización de la CPU es más eficiente en comparación con la programación no preferente. | La utilización de la CPU es menos eficiente en comparación con la programación preventiva. |
El tiempo de espera y de respuesta de la programación preventiva es menor. | El tiempo de espera y de respuesta del método de programación no preventiva es mayor. |
Se prioriza la programación preventiva. El proceso de mayor prioridad es un proceso que se utiliza actualmente. | Cuando cualquier proceso entra en el estado de ejecución, el estado de ese proceso nunca se elimina del programador hasta que finaliza su trabajo. |
La programación preventiva es flexible. | La programación no preventiva es rígida. |
Ejemplos: - Primero el tiempo restante más corto, Round Robin, etc. | Ejemplos: Primero llegado, primero servido, Trabajo más corto primero, Programación de prioridades, etc. |
El algoritmo de programación preventiva se puede adelantar, es decir, el proceso se puede programar | En el proceso de programación no preventiva no se puede programar |
En este proceso, la CPU se asigna a los procesos durante un período de tiempo específico. | En este proceso, la CPU se asigna al proceso hasta que termina o cambia al estado de espera. |
El algoritmo preventivo tiene la sobrecarga de cambiar el proceso del estado listo al estado en ejecución y viceversa. | La programación no preventiva no tiene la sobrecarga de cambiar el proceso de ejecución al estado listo. |
Ventajas de la programación preventiva
A continuación, se muestran los pros y los beneficios del método de programación preventiva:
- El método de programación preventivo es más robusto, enfoque para que un proceso no pueda monopolizar la CPU
- La elección de la tarea en ejecución se reconsidera después de cada interrupción.
- Cada evento causa la interrupción de las tareas en ejecución.
- El sistema operativo se asegura de que el uso de la CPU sea el mismo en todos los procesos en ejecución.
- En esto, el uso de la CPU es el mismo, es decir, todos los procesos en ejecución harán uso de la CPU por igual.
- Este método de programación también improvisa el tiempo medio de respuesta.
- La programación preventiva es beneficiosa cuando la usamos para el entorno de programación múltiple.
Ventajas de la programación no preventiva
A continuación, se muestran las ventajas y los beneficios del método de programación no preventiva:
- Ofrece una sobrecarga de programación baja
- Tiende a ofrecer un alto rendimiento
- Es un método conceptualmente muy simple
- Se necesitan menos recursos computacionales para la programación
Desventajas de la programación preventiva
A continuación, se muestran las desventajas / desventajas del método de programación preventiva:
- Necesita recursos computacionales limitados para la programación
- El programador tarda más en suspender la tarea en ejecución, cambiar el contexto y enviar la nueva tarea entrante.
- El proceso que tiene baja prioridad necesita esperar más tiempo si algunos procesos de alta prioridad llegan continuamente.
Desventajas de la programación no preventiva
A continuación, se muestran las desventajas / desventajas del método de programación no preventiva:
- Puede provocar hambre, especialmente para esas tareas en tiempo real.
- Los errores pueden hacer que una máquina se congele
- Puede dificultar la programación prioritaria y en tiempo real
- Poco tiempo de respuesta para los procesos
Ejemplo de programación no preventiva
En la programación SJF no preventiva, una vez que el ciclo de la CPU se asigna al proceso, el proceso lo retiene hasta que alcanza un estado de espera o termina.
Considere los siguientes cinco procesos, cada uno con su propio tiempo de ráfaga y tiempo de llegada únicos.
Cola de proceso | Tiempo quemado | Hora de llegada |
P1 | 6 | 2 |
P2 | 2 | 5 |
P3 | 8 | 1 |
P4 | 3 | 0 |
P5 | 4 | 4 |
Paso 0) En el tiempo = 0, llega P4 y comienza la ejecución.
Paso 1) En el momento = 1, llega el proceso P3. Pero, P4 todavía necesita 2 unidades de ejecución para completarse. Continuará la ejecución.
Paso 2) En el tiempo = 2, llega el proceso P1 y se agrega a la cola de espera. P4 continuará la ejecución.
Paso 3) En el tiempo = 3, el proceso P4 finalizará su ejecución. Se compara el tiempo de ráfaga de P3 y P1. El proceso P1 se ejecuta porque su tiempo de ráfaga es menor en comparación con P3.
Paso 4) En el tiempo = 4, llega el proceso P5 y se agrega a la cola de espera. P1 continuará la ejecución.
Paso 5) En el tiempo = 5, llega el proceso P2 y se agrega a la cola de espera. P1 continuará la ejecución.
Paso 6) En el tiempo = 9, el proceso P1 finalizará su ejecución. Se compara el tiempo de ráfaga de P3, P5 y P2. El proceso P2 se ejecuta porque su tiempo de ráfaga es el más bajo.
Paso 7) En el tiempo = 10, P2 se está ejecutando y P3 y P5 están en la cola de espera.
Paso 8) En el tiempo = 11, el proceso P2 finalizará su ejecución. Se compara el tiempo de ráfaga de P3 y P5. El proceso P5 se ejecuta porque su tiempo de ráfaga es menor.
Paso 9) En el tiempo = 15, el proceso P5 finalizará su ejecución.
Paso 10) En el tiempo = 23, el proceso P3 finalizará su ejecución.
Paso 11) Calculemos el tiempo de espera promedio para el ejemplo anterior.
Wait timeP4= 0-0=0P1= 3-2=1P2= 9-5=4P5= 11-4=7P3= 15-1=14Average Waiting Time= 0+1+4+7+14/5 = 26/5 = 5.2
Ejemplo de programación preventiva
Considere esto siguiendo tres procesos en Round-robin
Cola de proceso | Tiempo quemado |
P1 | 4 |
P2 | 3 |
P3 | 5 |
Paso 1) La ejecución comienza con el proceso P1, que tiene un tiempo de ráfaga 4. Aquí, cada proceso se ejecuta durante 2 segundos. P2 y P3 todavía están en la cola de espera.
Paso 2 ) En el tiempo = 2, P1 se agrega al final de la cola y P2 comienza a ejecutarse
Paso 3) En el tiempo = 4, P2 se reemplaza y se agrega al final de la cola. P3 comienza a ejecutarse.
Paso 4) En el tiempo = 6, P3 se reemplaza y se agrega al final de la cola. P1 comienza a ejecutarse.
Paso 5) En el tiempo = 8, P1 tiene un tiempo de ráfaga de 4. Ha completado la ejecución. P2 inicia la ejecución
Paso 6) P2 tiene un tiempo de ráfaga de 3. Ya se ha ejecutado durante 2 intervalos. En el tiempo = 9, P2 completa la ejecución. Luego, P3 comienza la ejecución hasta que se completa.
Paso 7) Calculemos el tiempo de espera promedio para el ejemplo anterior.
Wait timeP1= 0+ 4= 4P2= 2+4= 6P3= 4+3= 7
DIFERENCIAS CLAVE
- En la programación preventiva, la CPU se asigna a los procesos durante un período de tiempo específico, y la CPU de programación no preventiva se asigna al proceso hasta que finaliza.
- En la programación preventiva, las tareas se cambian según la prioridad, mientras que la programación no preventiva no se realiza.
- El algoritmo preventivo tiene la sobrecarga de cambiar el proceso del estado listo al estado en ejecución, mientras que la programación no preferente no tiene tal sobrecarga de conmutación.
- La programación preventiva es flexible, mientras que la programación no preventiva es rígida.