En informática , la contención de recursos es un conflicto por el acceso a un recurso compartido , como memoria de acceso aleatorio , almacenamiento en disco , memoria caché , buses internos o dispositivos de red externos. Un recurso que experimenta una contención continua puede describirse como sobresuscrito .
La resolución de 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 a esto, incluidos bloqueos , semáforos , mutexes y colas . Las otras técnicas que pueden aplicar los sistemas operativos incluyen la programación inteligente, la toma de decisiones de mapeo de aplicaciones y el coloreado de páginas . [1] [2]
El acceso a los recursos también se regula a veces mediante 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, pueden producirse varios problemas, entre ellos , bloqueos , bloqueos activos y bloqueos .
La contención de recursos se produce cuando varios procesos intentan utilizar el mismo recurso compartido. El acceso a las áreas de memoria suele estar controlado por semáforos, lo que permite una situación patológica denominada interbloqueo, cuando diferentes subprocesos o procesos intentan asignar recursos que ya han sido asignados por otros. Un interbloqueo suele provocar que un programa deje de responder total o parcialmente.
En los últimos años, la investigación sobre la contención se ha centrado más en los recursos de la jerarquía de memoria , por ejemplo, cachés de último nivel, bus frontal y conexión de zócalo de memoria. [ cita requerida ]