Resource management (computing)

Ada Lovelace, whose notes added to the end of Luigi Menabrea's paper included the first algorithm designed for processing by an Analytical Engine. She is often recognized as history's first computer programmer.

In computer programming, resource management refers to techniques for managing resources (components with limited availability).

- Resource management (computing)
Ada Lovelace, whose notes added to the end of Luigi Menabrea's paper included the first algorithm designed for processing by an Analytical Engine. She is often recognized as history's first computer programmer.

18 related topics

Relevance

Computer simulation, one of the main cross-computing methodologies.

System resource

Any physical or virtual component of limited availability within a computer system.

Any physical or virtual component of limited availability within a computer system.

Computer simulation, one of the main cross-computing methodologies.

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).

An example of external fragmentation

Memory management

An example of external fragmentation

Memory management is a form of resource management applied to computer memory.

Graphical representation of the three basic patterns — sequence, selection, and repetition — using NS diagrams (blue) and flow charts (green).

Structured programming

Programming paradigm aimed at improving the clarity, quality, and development time of a computer program by making extensive use of the structured control flow constructs of selection and repetition (while and for), block structures, and subroutines.

Programming paradigm aimed at improving the clarity, quality, and development time of a computer program by making extensive use of the structured control flow constructs of selection and repetition (while and for), block structures, and subroutines.

Graphical representation of the three basic patterns — sequence, selection, and repetition — using NS diagrams (blue) and flow charts (green).

Most modern languages provide language-level support to prevent such leaks; see detailed discussion at resource management.

OS/360 was used on most IBM mainframe computers beginning in 1966, including computers used by the Apollo program.

Exit (system call)

Exit system call.

Exit system call.

OS/360 was used on most IBM mainframe computers beginning in 1966, including computers used by the Apollo program.

For resource management, the operating system reclaims resources (memory, files, etc.) that were used by the process.

Charles Babbage, sometimes referred to as the "father of computing".

Resource leak

Particular type of resource consumption by a computer program where the program does not release resources it has acquired.

Particular type of resource consumption by a computer program where the program does not release resources it has acquired.

Charles Babbage, sometimes referred to as the "father of computing".

Resource leaks can be prevented or fixed by resource management: programming techniques or language constructs may prevent leaks by releasing resources promptly, while a separate process may reclaim resources that have been leaked.

UML notation for a class. This Button class has variables for data, and functions. Through inheritance a subclass can be created as subset of the Button class. Objects are instances of a class.

Resource acquisition is initialization

Initialization is a programming idiom used in several object-oriented, statically-typed programming languages to describe a particular language behavior.

Initialization is a programming idiom used in several object-oriented, statically-typed programming languages to describe a particular language behavior.

UML notation for a class. This Button class has variables for data, and functions. Through inheritance a subclass can be created as subset of the Button class. Objects are instances of a class.

The technique was developed for exception-safe resource management in C++ during 1984–89, primarily by Bjarne Stroustrup and Andrew Koenig, and the term itself was coined by Stroustrup.

UML notation for a class. This Button class has variables for data, and functions. Through inheritance a subclass can be created as subset of the Button class. Objects are instances of a class.

Object lifetime

Object is the time between an object's creation and its destruction.

Object is the time between an object's creation and its destruction.

UML notation for a class. This Button class has variables for data, and functions. Through inheritance a subclass can be created as subset of the Button class. Objects are instances of a class.

In languages where objects have deterministic lifetimes, object lifetime may be used for piggybacking resource management: this is called the Resource Acquisition Is Initialization (RAII) idiom: resources are acquired during initialization, and released during finalization.

UML notation for a class. This Button class has variables for data, and functions. Through inheritance a subclass can be created as subset of the Button class. Objects are instances of a class.

Dispose pattern

UML notation for a class. This Button class has variables for data, and functions. Through inheritance a subclass can be created as subset of the Button class. Objects are instances of a class.

In object-oriented programming, the dispose pattern is a design pattern for resource management.

IBM's Blue Gene/P massively parallel supercomputer

Parallel computing

Type of computation in which many calculations or processes are carried out simultaneously.

Type of computation in which many calculations or processes are carried out simultaneously.

IBM's Blue Gene/P massively parallel supercomputer
A graphical representation of Amdahl's law. The speedup of a program from parallelization is limited by how much of the program can be parallelized. For example, if 90% of the program can be parallelized, the theoretical maximum speedup using parallel computing would be 10 times no matter how many processors are used.
Assume that a task has two independent parts, A and B. Part B takes roughly 25% of the time of the whole computation. By working very hard, one may be able to make this part 5 times faster, but this only reduces the time for the whole computation by a little. In contrast, one may need to perform less work to make part A be twice as fast. This will make the computation much faster than by optimizing part B, even though part B's speedup is greater by ratio, (5 times versus 2 times).
Taiwania 3 of Taiwan, a parallel supercomputing device that joined COVID-19 research.
A canonical processor without pipeline. It takes five clock cycles to complete one instruction and thus the processor can issue subscalar performance.
A canonical five-stage pipelined processor. In the best case scenario, it takes one clock cycle to complete one instruction and thus the processor can issue scalar performance.
A canonical five-stage pipelined processor with two execution units. In the best case scenario, it takes one clock cycle to complete two instructions and thus the processor can issue superscalar performance.
A logical view of a non-uniform memory access (NUMA) architecture. Processors in one directory can access that directory's memory with less latency than they can access memory in the other directory's memory.
A Beowulf cluster
A cabinet from IBM's Blue Gene/L massively parallel supercomputer
Nvidia's Tesla GPGPU card
The Cray-1 is a vector processor
ILLIAC IV, "the most infamous of supercomputers"

Threads will often need synchronized access to an object or other resource, for example when they must update a variable that is shared between them.

Charles Babbage, sometimes referred to as the "father of computing".

Manual memory management

In computer science, manual memory management refers to the usage of manual instructions by the programmer to identify and deallocate unused objects, or garbage.

In computer science, manual memory management refers to the usage of manual instructions by the programmer to identify and deallocate unused objects, or garbage.

Charles Babbage, sometimes referred to as the "father of computing".

Manual memory management has one correctness advantage, which is that it allows automatic resource management via the Resource Acquisition Is Initialization (RAII) paradigm.