En informática , la contención de recursos es un conflicto sobre el acceso a un recurso compartido , como la memoria de acceso aleatorio , el almacenamiento en disco , la memoria caché , los buses internos o los dispositivos de red externos. Un recurso que experimenta una disputa continua puede describirse como con exceso de suscripción .
Resolver problemas de contención de recursos es una de las funciones básicas de los sistemas operativos . Se pueden utilizar varios mecanismos de bajo nivel para ayudar en esto, incluidos bloqueos , semáforos , exclusión mutua y colas . Las otras técnicas que pueden aplicar los sistemas operativos incluyen la programación inteligente, la decisión de mapeo de aplicaciones y el coloreado de páginas . [1] [2]
El acceso a los recursos a veces también está regulado por colas; En el caso del tiempo de cálculo en una CPU , el algoritmo de control de la cola de tareas se denomina programador .
Si no se resuelven adecuadamente los problemas de contención de recursos, se pueden producir una serie de problemas, incluidos interbloqueo , bloqueo activo y paliza .
La contención de recursos se produce cuando varios procesos intentan utilizar el mismo recurso compartido. El acceso a las áreas de memoria a menudo está controlado por semáforos, lo que permite una situación patológica llamada punto muerto, cuando diferentes subprocesos o procesos intentan asignar recursos ya asignados entre sí. Un punto muerto suele provocar que un programa deje de responder total o parcialmente.
En los últimos años, la investigación sobre este tema se centra más en los recursos de la jerarquía de memoria , por ejemplo, cachés de último nivel, bus frontal y conexión de socket de memoria. [ cita necesaria ]