Traditionally there are two types of multi-core designs, Symmetric & dedicated. Let me give a couple of examples. A symmetric design would be what you have in your multi-core x86 desktop. The term SMP “symmetric multiprocessing” is used to describe these designs. In symmetric designs the cores are functionally identical. A dedicated design would have a general purpose core as well core(s) dedicated to a specific task(s). A good example would be the TI OMAP 3525. The application core is an ARM Cortex-A8, but is also incorporates a DSP core for video processing.
The advantage of the symmetric design is that the OS is aware of and uses all of the cores for general processing. Both kernel processes and user processes can run on all of the cores. The advantage of the dedicated core is that it can preform it’s specific task very fast, and without interruption from the OS.
I wonder if the best of both worlds couldn’t be combined. Could the SMP interface of the Linux kernel be modified so more control is exerted over the use of specific cores. For instance you could say that only a specific process could be run on a specific core. I think the trick comes in how the kernel interface is handled. Some functions you would just want to call and let the kernel run it on a different core (like a networking function). It might be possible using this strategy to obtain hard real-time operation within the kernel.