stringtranslate.com

Hambre (informática)

En informática , la falta de recursos es un problema que se encuentra en la computación concurrente donde a un proceso se le niegan perpetuamente los recursos necesarios 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 fork .

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 derivación finita . [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 hambruna 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 se está quedando sin tiempo de CPU . Se supone que el algoritmo de programación, que forma parte del kernel , asigna recursos de manera equitativa; es decir, el algoritmo debe asignar recursos de modo que ningún proceso carezca perpetuamente 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) (en algunos sistemas) nunca será programado: experimentará inanición. Si hay un proceso X de prioridad aún mayor, que depende de un resultado del proceso B, entonces es posible que el proceso X nunca finalice, 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 una falta de programación. Un ejemplo es la programación de rendimiento máximo .

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

Una posible solución al hambre 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 para aumentar gradualmente la prioridad de los procesos que esperan en el sistema durante mucho tiempo. [4]

Ver también

Referencias

  1. ^ Tanenbaum, Andrés (2001). Sistemas operativos modernos . Prentice Hall. págs. 184-185. ISBN 0-13-092641-8.
  2. ^ Herlihy, Mauricio ; Shavit, Nir (2012). El arte de la programación multiprocesador . Elsevier. pag. 24.ISBN 9780123977953.
  3. ^ abc Raynal, Michel (2012). Programación concurrente: algoritmos, principios y fundamentos . Medios de ciencia y negocios de Springer. págs. 10-11. ISBN 978-3642320279.
  4. ^ Galvin, Peter (2010). Conceptos del sistema operativo . Edición Wiley India. pag. 193.ISBN 978-81-265-2051-0.