Resource management architectures implemented in computer systems to
manage resources are described. In one embodiment, a general architecture
includes a resource manager and multiple resource providers that support
one or more resource consumers such as a system component or application.
Each provider is associated with a resource and acts as the manager for
the resource when interfacing with the resource manager. The resource
manager arbitrates access to the resources provided by the resource
providers on behalf of the consumers. A policy manager sets various
policies that are used by the resource manager to allocate resources. One
policy is a priority-based policy that distinguishes among which
applications and/or users have priority over others to use the resources.
A resource consumer creates an "activity" at the resource manager and
builds one or more "configurations" that describe various sets of
preferred resources required to perform the activity. Each resource
consumer can specify one or more configurations for each activity. If
multiple configurations are specified, the resource consumer can rank
them according to preference. This allows the resource consumers to be
dynamically changed from one configuration to another as operating
conditions change.