I've been doing a great sum of re-study while I waited for the C++11 standard (for among other reasons it's standardization of a threading interface) and GCC 4.6 and 4.7 to roll out. I'm more then passingly familiar with how the hardware and at least the Linux Kernel handle threading. With at least more then a educated guess how the Windows kernel handles it.
Sense just after DOS computers have been multitasking. (To say nothing of the literally hundreds or thousands threads that run, sleep, and wake up under the heading "System Idle Processor".) What's more, there's not sure way to assure a OS -OR- hardware will not deem other CPU cores too busy and handle back a handle to lock all threads to run from a single core.
Hell, I've written a few multi-threaded libraries from scratch. I'm currently taking a brake from (re)designing and writing one.
Why is a dual-core CPU a system a requirement?