A resource is any aspect of the computing system that can be manipulated with the intent to change application behavior. Thus, a resource is a capability that an application implicitly or explicitly requests which, if denied or constrained, causes the execution of a robustly written application to proceed more slowly.
Classification of resources (as opposed to identification of resources) can be made along a number of axes. The axes could be implicitly requested versus explicitly requested, time-based (such as CPU time) versus time-independent (such as CPU shares assigned), and so forth.
Generally, scheduler-based resource management is applied to resources that the application can implicitly request. For example, to continue execution, an application implicitly requests additional CPU time, while to write data to a network socket, an application implicitly requests bandwidth. Constraints can be placed on the aggregate total use of an implicitly requested resource.
Additional interfaces can be presented so that bandwidth or CPU service levels can be explicitly negotiated. Resources that are explicitly requested, such as a request for an additional thread, can be managed by constraint.