Resource contention
In computer science, resource contention is a conflict over access to a shared resource such as random access memory, disk storage, cache memory, internal busses or external network devices. In recent years, research on the contention is more focused on the resources in the memory hierarchy, e.g., last-level caches, front-side bus, memory socket connection.
Resolving resource contention problems is one of the basic functions of operating systems. Various low-level mechanisms can be used to aid this, including locks, semaphores, mutexes and queues. The other techniques that can be applied by the operating systems include intelligent scheduling, application mapping decision, and page colouring.[1][2]
Failure to properly resolve resource contention problems may result in a number of problems, including deadlock, livelock, and thrashing.
When multiple processes wish to use a shared resource, this can lead to resource contention. Access to memory areas is often controlled by semaphores, which allows a pathological situation called a deadlock, when different threads or processes try to allocate resources already allocated by each other. A deadlock usually leads to a program becoming partially or completely unresponsive.
Access to resources is also sometimes regulated by queuing; in the case of computing time on a CPU the controlling algorithm of the task queue is called a scheduler.
References
- ↑ Knauerhase, Rob (2008). "Using OS Observations to Improve Performance in Multicore Systems". IEEE Micro 28 (3): 54–66. doi:10.1109/mm.2008.48.
- ↑ Zhang, Xiao (2009). "Towards practical page coloring-based multicore cache management". EuroSys.