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, e.g., using a priority-based
policy. 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, which may be ranked, for
each activity. This allows the resource consumers to be dynamically
changed from one configuration to another as operating conditions change.