how the kernel schedules dual cpu is rather complex
if you are using a 2.6.x series kernel cpu sceduling is quite good
if you are using 2.4.x kernel cpu scheduling is terrible and you should upgrade your kernel
generally each cpu has it's own task cue and each task has an afinity for only one cpu.
this is so each task has access to its cpu memory caches (pipes) otherwise if tasks switched between cpus
it would create a situation of memory duplication and cause terrible thrashing of the cpu cache as tasks were resumed. Of course this is just a general picture. Basically if you are running a modern kernel just don't worry about it cause it is being done quite eficiently.
if you wish to play with sceduling read this (might be fun)