stringtranslate.com

Hambre (informática)

En informática , la falta de recursos es un problema que se presenta en la computación concurrente , donde a un proceso se le niegan permanentemente los recursos necesarios para procesar su trabajo. [1] La falta de recursos 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 bifurcación .

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

Programación

La falta de tiempo de CPU suele deberse a 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 está quedando privada de tiempo de CPU . Se supone que el algoritmo de programación, que es parte del núcleo , asigna los recursos de manera equitativa; es decir, el algoritmo debería asignar los recursos de manera que ningún proceso carezca permanentemente de los recursos necesarios.

Muchos programadores de sistemas operativos emplean el concepto de prioridad de proceso. Un proceso A de alta prioridad se ejecutará antes que un proceso B de baja prioridad. Si el proceso de alta prioridad (proceso A) se bloquea y nunca cede, el proceso de baja prioridad (B) nunca será programado (en algunos sistemas), experimentará inanición. Si hay un proceso X de prioridad aún mayor, que depende de un resultado del proceso B, entonces el proceso X podría no terminar nunca, aunque sea el proceso más importante del sistema. Esta condición se denomina 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 (generalmente tiempo de CPU) para evitar que cualquier proceso se vea sometido a inanición.

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

La inanición normalmente es causada por un bloqueo, ya que hace que un proceso se congele. 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á en inanición cuando está esperando un recurso que se otorga continuamente a otros procesos. La ausencia de inanición es una garantía más fuerte que la ausencia de bloqueo: un algoritmo de exclusión mutua que debe elegir permitir que uno de dos procesos ingrese a una sección crítica y elige uno arbitrariamente está libre de bloqueos, pero no libre de inanición. [3]

Una posible solución al problema de la inanición es utilizar un algoritmo de programación con cola de prioridad que también utilice la técnica de envejecimiento . El envejecimiento es una técnica que consiste en aumentar gradualmente la prioridad de los procesos que esperan en el sistema durante un largo tiempo. [4]

Véase 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. p. 24. ISBN 9780123977953.
  3. ^ abc Raynal, Michel (2012). Programación concurrente: algoritmos, principios y fundamentos . Springer Science & Business Media. págs. 10-11. ISBN 978-3642320279.
  4. ^ Galvin, Peter (2010). Conceptos de sistemas operativos . Edición de Wiley India. pág. 193. ISBN 978-81-265-2051-0.