Diferencia entre algoritmos de programación de CPU preventivos y no preventivos

En la programación de CPU , tenemos dos tipos de programación, echemos un vistazo a ellos: 

Programación preventiva: en esto, un programador puede adelantarse a un proceso en ejecución de baja prioridad en cualquier momento cuando un proceso de alta prioridad entra en un estado listo. Cuando la programación toma de cualquiera de las siguientes circunstancias, se trata de una programación preventiva :

  • Cuando un proceso cambia del estado en ejecución al estado listo (por ejemplo, cuando ocurre una interrupción).
  • Cuando un proceso cambia del estado de espera al estado listo (por ejemplo, al completar I/)).

Programación no preventiva: en esto, una vez que un proceso ingresa al estado de ejecución, no se puede adelantar hasta que complete su tiempo de asignación. Cuando la programación se lleva a cabo solo en las siguientes circunstancias, decimos que el esquema de programación no es preventivo o cooperativo . –

  • Cuando un proceso cambia del estado de ejecución al estado de espera (por ejemplo, como resultado de una solicitud de E/S o una invocación de wait() para la finalización de un proceso secundario).
  • Cuando termina un proceso.

Veamos la diferencia entre la programación preventiva y la programación no preventiva:

S. No. Programación preventiva Programación no preventiva
1. La CPU se asigna a los procesos durante un cierto período de tiempo. La CPU se asigna al proceso hasta que finaliza su ejecución o cambia al estado de espera.
2. El proceso de ejecución aquí se interrumpe en medio de la ejecución. El proceso de ejecución aquí no se interrumpe en medio de la ejecución.
3. Por lo general, cambia el proceso del estado listo al estado en ejecución, viceversa, y mantiene la cola lista. No cambia el proceso del estado de ejecución al estado listo.
4. Aquí, si un proceso con alta prioridad llega con frecuencia a la cola de procesos listos, entonces el proceso con baja prioridad tiene que esperar mucho tiempo y es posible que tenga que pasar hambre. Aquí, si la CPU se asigna al proceso con un tiempo de ráfaga más grande, entonces los procesos con un tiempo de ráfaga pequeño pueden tener que pasar hambre.
5. 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. Es rígido, ya que incluso si un proceso crítico ingresa a la cola lista, el proceso que ejecuta la CPU no se ve afectado.
6. Esto es una asociación de costos, ya que tiene que mantener la integridad de los datos compartidos. Esto no es asociativo de costos.

La programación preventiva es mejor que la programación no preventiva o viceversa, no se puede decir definitivamente. Depende de cómo una programación minimice el tiempo de espera promedio de los procesos y maximice la utilización de la CPU.

Publicación traducida automáticamente

Artículo escrito por imarchit19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *