In computer programming, a task is a basic unit of programming that an operating system controls. Depending on how the operating system defines a task in its design, this unit of programming may be an entire program or each successive invocation of a program. Since one program may make requests of other utility programs, the utility programs may also be considered tasks (or subtasks). All of today's widely-used operating systems support multitasking , which allows multiple tasks to run concurrently, taking turns using the resources of the computer.
In preemptive multitasking , each task may be assigned a priority depending on its relative importance, the amount of resources it is consuming, and other factors. The operating system then preempts (cuts short) a task having a lower priority value so that a higher priority task is given a turn. Windows 2000 , OS/390 , Linux , and Amiga are examples of operating systems that use preemptive multitasking. Cooperative multitasking is the ability for an operating system to manage multiple tasks such as application programs at the same time, but without the ability to necessarily preempt them.
It's easy to confuse the terms multithreading and multitasking . Multithreading is the management of multiple concurrent uses of the same program. Most operating systems and modern computer languages also support multithreading.
In economics, resource allocation is the assignment of available resources to various uses. In the context of an entire economy, resources can be allocated by various means, such as markets or central planning.
In project management, resource allocation or resource management is the scheduling of activities and the resources required by those activities while taking into consideration both the resource availability and the project time.
In economics, the area of public finance deals with three broad areas: macroeconomic stabilization, the distribution of income and wealth, and the allocation of resources. Much of the study of the allocation of resources is devoted to finding the conditions under which particular mechanisms of resource allocation lead to Pareto efficient outcomes, in which no party's situation can be improved without hurting that of another party.
In strategic planning, resource allocation is a plan for using available resources, for example human resources, especially in the near term, to achieve goals for the future. It is the process of allocating scarce resources among the various projects or business units.
There are a number of approaches to solving resource allocation problems e.g. resources can be allocated using a manual approach, an algorithmic approach (see below), or a combination of both.
There may be contingency mechanisms such as a priority ranking of items excluded from the plan, showing which items to fund if more resources should become available and a priority ranking of some items included in the plan, showing which items should be sacrificed if total funding must be reduced.
Resource allocation may be decided by using computer programs applied to a specific domain to automatically and dynamically distribute resources to applicants.
This is especially common in electronic devices dedicated to routing and communication. For example, channel allocation in wireless communication may be decided by a base transceiver station using an appropriate algorithm.
One class of resource whereby applicants bid for the best resource(s) according to their balance of "money", as in an online auction business model (see also auction theory). A study by Emmanuel Yarteboi Annan shows that this is highly important in the resource allocation sector.
In one paper on CPUtime slice allocation an auction algorithm is compared to proportional share scheduling.