Programación prioritaria

Definición: ¿Qué significa la programación prioritaria?

La programación de prioridades es un método de programación de procesos en función de la prioridad. En este método, el programador elige las tareas para trabajar según la prioridad, que es diferente de otros tipos de programación, por ejemplo, un simple round robin.

La programación de prioridades implica la asignación de prioridad a cada proceso, y los procesos con prioridades más altas se llevan a cabo primero, mientras que las tareas con prioridades iguales se llevan a cabo por orden de llegada (FCFS) o por turnos. Un ejemplo de un algoritmo de programación de prioridad general es el algoritmo de trabajo más corto primero (SJF).

Techinfo explica la programación de prioridades

Las prioridades pueden ser dinámicas o estáticas. Las prioridades estáticas se asignan durante la creación, mientras que las prioridades dinámicas se asignan según el comportamiento de los procesos mientras están en el sistema. Por ejemplo, el programador podría favorecer las tareas intensivas de entrada / salida (E / S), lo que permite que se emitan solicitudes costosas lo antes posible.

Las prioridades pueden definirse interna o externamente. Las prioridades definidas internamente hacen uso de alguna cantidad mensurable para calcular la prioridad de un proceso dado. Por el contrario, las prioridades externas se definen utilizando criterios más allá del sistema operativo (SO), que pueden incluir la importancia del proceso, el tipo y la suma de los recursos que se utilizan para el uso de la computadora, las preferencias del usuario, el comercio y otros factores como la política. etc.

La programación de prioridades puede ser cualquiera de las siguientes:

  • Preventivo: este tipo de programación puede adelantarse a la unidad central de procesamiento (CPU) en el caso de que la prioridad del proceso recién llegado sea mayor que la de los procesos existentes.
  • No preventivo: este tipo de algoritmo de programación simplemente coloca el nuevo proceso en la parte superior de la cola lista.

El bloqueo indefinido, también llamado inanición, es uno de los principales problemas relacionados con los algoritmos de programación de prioridades. Es un estado en el que un proceso está listo para ejecutarse, pero se enfrenta a una larga espera para ser asignado a la CPU.

A menudo es posible que un algoritmo de programación de prioridades pueda hacer que un proceso de baja prioridad espere indefinidamente. Por ejemplo, en un sistema muy cargado, si hay varios procesos de mayor prioridad, es posible que los procesos de baja prioridad nunca obtengan la CPU para su ejecución.

Un remedio para la inanición es el envejecimiento, que es una técnica que se utiliza para aumentar gradualmente la prioridad de aquellos procesos que esperan largos períodos en el sistema.