En informática , un proceso que está bloqueado está esperando algún evento , como que un recurso esté disponible o que se complete una operación de E/S . [1] Una vez que ocurre el evento que el proceso está esperando ("está bloqueado"), el proceso avanza del estado bloqueado a uno inminente, como ejecutable .
En un sistema informático multitarea , las tareas individuales , o subprocesos de ejecución , deben compartir los recursos del sistema. Los recursos compartidos incluyen: la CPU, la red y las interfaces de red, la memoria y el disco.
Cuando una tarea utiliza un recurso, generalmente no es posible o deseable que otra tarea acceda a él. Las técnicas de exclusión mutua se utilizan para evitar este uso simultáneo. Cuando la otra tarea está bloqueada, no puede ejecutarse hasta que la primera tarea haya terminado de utilizar el recurso compartido.
Los lenguajes de programación y los algoritmos de planificación están diseñados para minimizar el efecto general del bloqueo. Un proceso que se bloquea puede impedir que las tareas de trabajo locales progresen. En este caso, el "bloqueo" a menudo se considera no deseado. [2] Sin embargo, es posible que dichas tareas de trabajo se hayan asignado a procesos independientes, donde detener una tiene poco o ningún efecto sobre las otras, ya que la planificación continuará. Un ejemplo es el "bloqueo en un canal ", donde esperar pasivamente a la otra parte (es decir, sin sondeo ni bucle de giro ) es parte de la semántica de los canales. [3] Si se diseñan correctamente, cualquiera de estos puede usarse para implementar sistemas reactivos. [ Aclaración necesaria ]
El punto muerto significa que los procesos se esperan patológicamente unos a otros en un círculo. Por lo tanto, no está directamente relacionado con el bloqueo.