The types of resources and issues that arise due to their scarcity is vast. For example,
memory is a resource since a computer has a fixed amount. For many applications, the amount is so large compared to its needs that the resource is essentially unlimited. But, if many application with modest requirements are running concurrently, or if an application does require large amounts of memory, then
runtime issues occur as the amount of free memory approaches zero. Applications are no longer able to allocate memory and will probably fail. Another well-known resource is the
processor. It differs from memory in that it is not reserved. Nonetheless, as the processor becomes more loaded with work, the time waiting for the processor increases, and processing throughput degrades. This often leads to inferior
user experience or in a time-critical application, loss of critical system functionality. Resources can be layered and intertwined. For example, a
file is a resource since each file is unique. A file consumes
storage space which has a fixed size. When a file is opened, generally memory is allocated for the purpose of accessing the file. This file object is both a unique resource and consumes memory (a resource). Some resources are accessed via a
handle such as a
lookup table key or
pointer. Although the handle may consume memory, the handle itself is not considered a resource since it can be duplicated at little cost. On the
boot process of the modern operating systems, the
ACPI protocol or the
Devicetree protocol is often used to deliver hardware resources information. Notable resources include: • Cache space, including
CPU cache and MMU cache (
translation lookaside buffer) •
CPU, both time on a single CPU and use of multiple CPUs – see
multitasking •
Direct memory access (DMA) channels •
Electrical power •
Input/output throughput •
Interrupt request lines •
Locks •
Memory, including
physical RAM and
virtual memory – see
memory management •
Memory-mapped I/O •
Network throughput •
Objects, such as memory managed in native code, from Java; or objects in the
Document Object Model (DOM), from
JavaScript •
Peripherals •
Port-mapped I/O •
Randomness •
Storage, including overall space as well as contiguous space == See also ==