Recomendado, 2024

La Elección Del Editor

Diferencia entre la programación preferente y no preferente en el sistema operativo

Es responsabilidad del programador de la CPU asignar un proceso a la CPU siempre que la CPU se encuentre en estado inactivo. El programador de la CPU selecciona un proceso de la cola lista y asigna el proceso a la CPU. La programación que tiene lugar cuando un proceso pasa del estado de ejecución al estado preparado o del estado de espera al estado listo se denomina programación preferente . En las manos, la programación que tiene lugar cuando un proceso finaliza o pasa de estar en espera al estado de este tipo de programación de CPU se denomina programación no preferente . La diferencia básica entre la programación preventiva y no preventiva reside en su propio nombre. Eso es un horario preferente puede ser anulado; Los procesos pueden ser programados. En la programación no preferente, los procesos no se pueden programar.

Discutamos brevemente las diferencias entre la Programación Preventiva y No Preventiva con la ayuda del cuadro comparativo que se muestra a continuación.

Gráfica comparativa

Bases para la comparaciónProgramación preventivaProgramación no preventiva
BASICLos recursos se asignan a un proceso por un tiempo limitado.Una vez que los recursos se asignan a un proceso, el proceso lo mantiene hasta que completa su tiempo de ráfaga o cambia al estado de espera.
InterrumpirEl proceso puede ser interrumpido en el medio.El proceso no se puede interrumpir hasta que finalice o cambie al estado de espera.
InaniciónSi un proceso de alta prioridad con frecuencia llega a la cola de espera, el proceso de baja prioridad puede morir de hambre.Si un proceso con un tiempo de ráfaga largo está ejecutando la CPU, entonces otro proceso con menos tiempo de ráfaga de la CPU puede morir de hambre.
Gastos generalesLa programación preventiva tiene gastos generales de programación de los procesos.La programación no preferente no tiene gastos generales.
FlexibilidadLa programación preventiva es flexible.La programación no preventiva es rígida.
CostoLa programación preferente es el costo asociado.La programación no preferente no tiene costo asociativo.

Definición de programación preferente

La programación preventiva es una que se puede hacer en las circunstancias en que un proceso cambia del estado en ejecución al estado preparado o del estado en espera al estado preparado . Aquí, los recursos (ciclos de CPU) se asignan al proceso durante un tiempo limitado y luego se eliminan, y el proceso vuelve a colocarse en la cola de espera si aún le queda tiempo de ráfaga de CPU. El proceso permanece en la cola de espera hasta que tenga la próxima oportunidad de ejecutar.

Si un proceso con alta prioridad llega a la cola de espera, no tiene que esperar a que el proceso actual complete su tiempo de ráfaga. En cambio, el proceso actual se interrumpe en medio de la ejecución y se coloca en la cola de espera hasta que el proceso con alta prioridad esté utilizando los ciclos de la CPU. De esta manera, cada proceso en la cola de espera tiene algún tiempo para ejecutar la CPU. Hace que la programación preventiva sea flexible, pero aumenta la sobrecarga de cambiar el proceso del estado en ejecución al estado listo y vise-verse.

Los algoritmos que funcionan en la programación preventiva son Round Robin. La programación de la tarea más corta primero (SJF) y de prioridad puede o no estar incluida en la programación preferente.

Tomemos un ejemplo de la programación preferente, mire en la imagen de abajo. Tenemos cuatro procesos P0, P1, P2, P3. De lo cual, P2 llega al momento 0. Por lo tanto, la CPU se asigna al proceso P2 ya que no hay otro proceso en la cola. Mientras tanto, P2 se estaba ejecutando, P3 llega al momento 1, ahora el tiempo restante para el proceso P2 (5 milisegundos), que es mayor que el tiempo requerido por P3 (4 mili-sec). Así que la CPU está asignada al procesador P3.

Mientras tanto, P3 se estaba ejecutando, el proceso P1 llega al momento 2. Ahora el tiempo restante para P3 (3 milisegundos) es menor que el requerido por los procesos P1 (4 milisegundos) y P2 (5 milisegundos). Entonces P3 tiene permitido continuar. Mientras P3 continúa, el proceso P0 llega al momento 3, ahora el tiempo restante para P3 (2 milisegundos) es igual al tiempo requerido por P0 (2 milisegundos). Entonces, P3 continúa y después de que P3 termina, la CPU se asigna a P0 ya que tiene menos tiempo de ráfaga que otro. Después de que P0 termina, la CPU se asigna a P1 y luego a P2.

Definición de programación no preferente

La Programación no preventiva es una que se puede aplicar en las circunstancias en que un proceso termina, o un proceso pasa del estado de ejecución al estado de espera . En la Programación no preferente, una vez que los recursos (CPU) se asignan a un proceso, el proceso retiene la CPU hasta que se termina o llega a un estado de espera.

A diferencia de la programación preventiva, la programación no preventiva no interrumpe un proceso que ejecuta la CPU en medio de la ejecución. En su lugar, espera a que el proceso complete su tiempo de ráfaga de CPU y luego puede asignar la CPU a otro proceso.

En la programación no preferente, si se está ejecutando un proceso con un tiempo de ráfaga de CPU prolongado, el otro proceso tendrá que esperar durante un tiempo prolongado, lo que aumenta el tiempo de espera promedio de los procesos en la cola de espera. Sin embargo, la programación no preventiva no tiene ninguna sobrecarga de cambiar los procesos de la cola lista a la CPU, pero hace que la programación sea rígida ya que el proceso en ejecución ni siquiera se anticipa a un proceso con mayor prioridad.

Resolvamos el ejemplo de programación anterior de manera no preventiva. Como inicialmente el proceso P2 llega al momento 0, la CPU está asignada al proceso P2 y tarda 6 milisegundos en ejecutarse. Entre todos los procesos, es decir, P0, P1, P3 llega a la lista de espera. Pero todo espera hasta que el proceso P2 complete su tiempo de ráfaga de CPU. Luego, el proceso que llega después de P2, es decir, a P3 se le asigna la CPU hasta que finaliza su tiempo de ráfaga. De manera similar, entonces P1 se ejecuta, y luego se le da CPU para procesar P0.

Diferencias clave entre la programación preferente y no preventiva

  1. La diferencia básica entre la programación preventiva y no preventiva es que en la programación anticipada, la CPU se asigna a los procesos por un tiempo limitado . Mientras se encuentra en la programación no preferente, la CPU se asigna al proceso hasta que finaliza o cambia al estado de espera .
  2. El proceso de ejecución en la programación preventiva se interrumpe en medio de la ejecución, mientras que el proceso de ejecución en la programación no preventiva no se interrumpe en la mitad de la ejecución.
  3. La Programación preventiva tiene la sobrecarga de cambiar el proceso del estado listo al estado de ejecución, vise-verse y mantener la cola lista. Por otro lado, la planificación no preventiva no tiene la sobrecarga de cambiar el proceso del estado en ejecución al estado listo.
  4. En la programación preventiva, si un proceso con alta prioridad con frecuencia llega a la cola de espera, entonces el proceso con baja prioridad tiene que esperar mucho tiempo y puede que tenga que morir de hambre. Por otro lado, en la programación no preventiva, si la CPU se asigna al proceso con un mayor tiempo de ráfaga, entonces los procesos con un pequeño tiempo de ráfaga pueden tener que morir de hambre.
  5. La programación preferente es bastante flexible porque los procesos críticos pueden acceder a la CPU a medida que llegan a la cola lista, sin importar qué proceso se esté ejecutando actualmente. La programación no preventiva es rígida ya que incluso si un proceso crítico entra en la cola lista, el proceso que ejecuta la CPU no se ve afectado.
  6. La Programación preferente tiene un costo asociativo, ya que tiene que mantener la integridad de los datos compartidos, lo que no es el caso de la Programación no preventiva.

Conclusión:

No es que la programación preventiva sea mejor que la programación no preventiva o vise-verse. Todo depende de cómo una programación minimiza el tiempo de espera promedio de los procesos y maximiza la utilización de la CPU.

Top