La programación de prioridad absoluta dará tiempo de CPU a la operación de mayor prioridad que esté lista para ejecutarse. El hambre ocurre cuando a la máquina se le ha dado demasiado trabajo y no queda tiempo para algunas de las operaciones de menor prioridad. La causa más común (en mi experiencia) de esto es que algunas operaciones desperdician el tiempo del procesador a la espera de un trabajo real, con una programación prioritaria, es importante que cada proceso ‘Bloquee’ (espere algo, dando tiempo a otros procesos) cuando no tiene trabajo real que hacer.
Si la inanición no es causada por eso, sino por tener demasiado trabajo por hacer, entonces las únicas soluciones son reducir la cantidad de trabajo que hay que hacer o aumentar la potencia del procesador. Un parche que se puede hacer es aumentar artificialmente la prioridad de las operaciones que no han tenido tiempo por un tiempo.
La inanición no ocurre en los sistemas operativos ‘normales’ porque, en lugar de siempre dar tiempo a la operación de ‘máxima prioridad’, comparten el tiempo con todas las operaciones disponibles, tal vez dando más tiempo a los marcados como importantes y menos a los marcados como no importantes. En dicho sistema, cuando está ‘sobrecargado’, las cosas simplemente se ejecutan lentamente.
- ¿Cuáles son los algoritmos y las estructuras de datos que tengo que aprender para competir en Google Code Jam?
- ¿Cuál es la mejor manera de realizar operaciones de intercambio K en un entero de N dígitos para obtener el máximo número posible?
- ¿En qué se diferencia la ramificación y el límite del retroceso?
- Cómo resolver esta relación de recurrencia: (bn + 1) = 6 * ((bn)) ^ 7, b (0) = 36
- ¿Cómo se determina la mejor, la media y la peor información dada sobre lo que devuelve un método después del bucle?
El propósito de la Programación prioritaria es que tenga algunas operaciones que, cuando tienen algo que hacer, DEBEN hacerlo rápidamente, por lo que se les da una alta prioridad.