Does OS allocate each process to a separate core?

Ok I know the classic argument for avoiding quad cores. At the application level, most applications haven't been written for multiple cores. Most desktop software doesn't even need parallelization.

However, at the OS level, it seems obvious that the OS would divide up processes across the various cores. Wouldn't this be by itself an argument for getting more cores? Doesn't that help out a lot in many situations? You get a few CPU intensive tasks going--those processes might each be hogging 100% of their cores, but I can still browse the web and ask questions on SuperUser on my last core.... right ?


The OS cannot split an individual single-threaded process across multiple cores (although it may change which core an application is running on, but that's a different question), however it can run multiple processes, each on its own core. So, yes, if you have multiple processor intensive applications running in the background, it is likely you will still have a spare core sitting around doing little or nothing you can use to run other applications.


To add to @heavyd's answer, the reason for this is the OS does not have the ability to determine which parts of the process are OK to run in parallel and which are not. If a program is not designed to run on parallel cores, you can have routines within the application that are designed to run sequentially running at the same time. This can cause all sorts of issues (like if 2 routines use the same memory block but are not meant to run at the same time).

The OS can use multiple cores for multiple processes since it does that anyways, but spreading a single-core application across multiple cores will cause all sorts of unexpected behavior.


When it comes down to it, it doesn't matter if a processor is at 1% usage or 95% usage (as long as it is stable at 95% and not peaking), programs will be running at the same speed as long as it isn't hitting 100%. Unused CPU cycles are simply wasted.

Because of this, Windows 7 (on compatible processors) has a technology known as "core parking" which basically disables unused cores on your computer in order to save electricity.

Single threaded applications are automatically put across to alternate cores - I am not sure on the technology behind this, but I know it works quite well.