Programación prioritaria

Fiabilidad

¿Qué significa programación prioritaria?

La programación prioritaria es un método de programación de procesos basado en 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 por prioridades implica la asignación de prioridades a cada proceso, y los procesos con prioridades más altas se ejecutan primero, mientras que las tareas con prioridades iguales se ejecutan por orden de llegada (FCFS) o round robin. Un ejemplo de algoritmo de programación de prioridad general es el algoritmo del más corto primero (SJF).

Definición de 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 dinámicas se asignan dependiendo del 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 las peticiones caras se emitan lo antes posible.

Las prioridades pueden definirse interna o externamente. Las prioridades definidas internamente utilizan alguna cantidad medible para calcular la prioridad de un proceso determinado. En cambio, las prioridades externas se definen utilizando criterios ajenos al sistema operativo (SO), que pueden incluir la importancia del proceso, el tipo así como la suma de recursos que se utilizan para el uso del ordenador, las preferencias del usuario, el comercio y otros factores como la política, etc.

La programación prioritaria puede ser una de las siguientes:

  • Preemptiva – Este tipo de programación puede adelantarse a la unidad central de proceso (CPU) en el caso de que la prioridad del proceso recién llegado sea mayor que la de los procesos existentes.
  • No preferente – Este tipo de algoritmo de programación simplemente coloca el nuevo proceso en la parte superior de la cola de espera.

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

A menudo es posible que un algoritmo de programación prioritaria haga esperar indefinidamente a un proceso de baja prioridad. Por ejemplo, en un sistema intensamente cargado, si hay varios procesos de mayor prioridad, es posible que los procesos de baja prioridad nunca consigan la CPU para su ejecución.

Un remedio a la inanición es el envejecimiento, que es una técnica utilizada para aumentar gradualmente la prioridad de aquellos procesos que esperan durante largos periodos en el sistema.

Temas relacionados

Margaret Rouse
Technology Specialist
Margaret Rouse
Experta en tecnología

Margaret Rouse es una galardonada escritora técnica y profesora conocida por su habilidad para explicar temas técnicos complejos a una audiencia de negocios no técnica. Durante los últimos veinte años, sus explicaciones han aparecido en sitios web de TechTarget y ha sido citada como autoridad en artículos del New York Times, Time Magazine, USA Today, ZDNet, PC Magazine y Discovery Magazine. La idea de diversión de Margaret es ayudar a profesionales de TI y negocios a aprender a hablar los idiomas altamente especializados de cada uno. Si tienes una sugerencia para una nueva definición o cómo mejorar una explicación técnica,…