Hambruna (informática)


De Wikipedia, la enciclopedia libre
  (Redirigido desde Starvation (informática) )
Saltar a navegación Saltar a búsqueda

En ciencias de la computación , agotamiento de recursos es un problema que se encuentra en computación concurrente donde un proceso se le niega perpetuamente necesarios recursos para procesar su trabajo. [1] La inanición puede ser causada por errores en un algoritmo de programación o exclusión mutua , pero también puede ser causada por fugas de recursos y puede ser causada intencionalmente a través de un ataque de denegación de servicio como una bomba de horquilla .

Cuando el hambre es imposible en un algoritmo concurrente , el algoritmo se llama libre de inanición , bloqueo-liberado [2] o dice que tiene de derivación finito . [3] Esta propiedad es una instancia de vivacidad y es uno de los dos requisitos para cualquier algoritmo de exclusión mutua; el otro es la corrección . El nombre "omisión finita" significa que cualquier proceso (parte concurrente) del algoritmo se omite como máximo un número finito de veces antes de que se le permita el acceso al recurso compartido . [3]

Planificación

La inanición suele ser causada por un algoritmo de programación demasiado simplista . Por ejemplo, si un sistema multitarea (mal diseñado) siempre cambia entre las dos primeras tareas mientras que una tercera nunca llega a ejecutarse, entonces la tercera tarea no tiene tiempo de CPU . Se supone que el algoritmo de programación, que es parte del kernel , asigna los recursos de manera equitativa; es decir, el algoritmo debería asignar recursos para que ningún proceso carezca perpetuamente de los recursos necesarios.

Muchos programadores de sistemas operativos emplean el concepto de prioridad de proceso. Un proceso de alta prioridad A se ejecutará antes que un proceso de baja prioridad B. Si el proceso de alta prioridad (proceso A) se bloquea y nunca cede, el proceso de baja prioridad (B) nunca se programará (en algunos sistemas); experimentará inanición. Si hay un proceso X de mayor prioridad, que depende de un resultado del proceso B, es posible que el proceso X nunca termine, aunque sea el proceso más importante del sistema. Esta condición se llama inversión de prioridad . Los algoritmos de programación modernos normalmente contienen código para garantizar que todos los procesos recibirán una cantidad mínima de cada recurso importante (la mayoría de las veces, tiempo de CPU) para evitar que cualquier proceso quede expuesto a la inanición.

En las redes informáticas, especialmente en las redes inalámbricas, los algoritmos de programación pueden sufrir falta de programación. Un ejemplo es la programación del rendimiento máximo .

La inanición normalmente es causada por un punto muerto, ya que provoca la congelación de un proceso. Dos o más procesos se bloquean cuando cada uno de ellos no hace nada mientras espera un recurso ocupado por otro programa en el mismo conjunto. Por otro lado, un proceso está hambriento cuando está esperando un recurso que continuamente se le da a otros procesos. La libertad por inanición es una garantía más sólida que la ausencia de interbloqueo: un algoritmo de exclusión mutua que debe elegir permitir uno de dos procesos en una sección crítica y elige uno arbitrariamente no está libre de interbloqueo, pero no está libre de inanición. [3]

Una posible solución a la inanición es utilizar un algoritmo de programación con cola de prioridad que también utiliza la técnica de envejecimiento . El envejecimiento es una técnica de aumento gradual de la prioridad de los procesos que esperan en el sistema durante mucho tiempo. [4]

Ver también

Referencias

  1. ^ Tanenbaum, Andrew (2001). Sistemas operativos modernos . Prentice Hall. págs.  184-185 . ISBN 0-13-092641-8.
  2. ^ Herlihy, Maurice ; Shavit, Nir (2012). El arte de la programación multiprocesador . Elsevier. pag. 24. ISBN 9780123977953.
  3. a b c Raynal, Michel (2012). Programación concurrente: algoritmos, principios y fundamentos . Springer Science & Business Media. págs. 10-11. ISBN 3642320279.
  4. ^ Galvin, Peter (2010). Conceptos del sistema operativo . Edición de Wiley India. pag. 193. ISBN 978-81-265-2051-0.
Obtenido de " https://en.wikipedia.org/w/index.php?title=Starvation_(computer_science)&oldid=1050480787 "