In computing, a system resource, or simple resource, is any physical or virtual component of limited availability within a computer system. All connected devices and internal system components are resources. Virtual system resources include (concretely s), network connections (concretely network sockets), and memory areas.
Managing resources is referred to as resource management, and includes both preventing resource leaks (not releasing a resource when a process has finished using it) and dealing with resource contention (when multiple processes wish to access a limited resource). Computing resources are used in cloud computing to provide services through networks.
Interrupt request (IRQ) lines
Direct memory access (DMA) channels
Port-mapped I/O
Memory-mapped I/O
Locks
External devices
External memory or objects, such as memory managed in native code, from Java; or objects in the Document Object Model (DOM), from JavaScript
CPU, both time on a single CPU and use of multiple CPUs – see multitasking
Random-access memory and virtual memory – see memory management
Hard disk drives, include space generally, contiguous free space (such as for swap space), and use of multiple physical devices ("spindles"), since using multiple devices allows parallelism
Cache space, including CPU cache and MMU cache (translation lookaside buffer)
Network throughput
Electrical power
Input/output operations
Randomness
Some resources, notably memory and storage space, have a notion of "location", and one can distinguish contiguous allocations from non-contiguous allocations. For example, allocating 1 GB of memory in a single block, versus allocating it in 1,024 blocks each of size 1 MB. The latter is known as fragmentation, and often severely impacts performance, so contiguous free space is a subcategory of the general resource of storage space.
One can also distinguish compressible resources from incompressible resources. Compressible resources, generally throughput ones such as CPU and network bandwidth, can be throttled benignly: the user will be slowed proportionally to the throttling, but will otherwise proceed normally.