The efficiency with which a computing device can perform a task used to be, in large part, determined by the frequency with which its Central Processing Unit (CPU) could execute computer-readable instructions. CPUs that executed instructions at a higher frequency could perform a greater amount of work within a given time. As the frequency with which CPUs executed instructions began to reach practical limits, computing devices began to include multiple CPUs that could perform multiple tasks in parallel. For such computing devices, if a task was designed, and programmed, such that segments of computer-executable instructions could be executed in parallel, then that task could be performed more efficiently by executing, in parallel, those segments on the multiple CPUs of the computing device.
Unfortunately, for many tasks, the input to one set of computer-executable instructions is based on, or affected by, the output of a prior set of computer-executable instructions. Consequently, such tasks can be difficult to execute in parallel and the execution of such tasks may utilize only one of the multiple CPUs that can be available. Nevertheless, a computing device with multiple CPUs may still provide efficiency benefits, even for tasks that are difficult to parallelize, because users often request the execution of multiple such tasks in parallel, thereby parallelizing the achievement of the user's overall goals.
To provide purchasers of computing devices with expandability, add-on hardware that itself contains one or more CPUs can be added to the computing device. Similarly, virtual computing environments can be used and expandability can, thus, be achieved via the addition of further virtual computing environments. In such cases, however, it may not be practical to extend core software, such as the operating system, to the multiple CPUs or other execution hardware. Instead, the each of the execution environments that were subsequently added can execute their own copy of an operating system or other core software. While such an operating system may be identical to the operating system executing on the original “host” CPU or execution environment, communication between the two, or more, copies of the operating system will be limited to, essentially, inter-computing-device communications. Thus, the addition of such additional computing environment, virtual or physical, to a computing device, can expand the ability of the computing device to execute multiple independent tasks in parallel, but may not expand the ability of the computing device to execute a single, parallelizable, task in a more efficient manner.