Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

KEEP KERNEL + IRQ HANDLERS ON SEPARATE CPU

Name: Anonymous 2006-09-02 2:36

This is all hypothetical.  I just want to know what you all think.

Assume a dual-core or other multi-cpu environment.

In standard operating systems, when the user program wants a system service from the OS, it must make a system call that results in expensive context switching.  Same thing for interrupts, they also result in context switching.

In a multiple-CPU(core) environment, what if we dedicated one cpu to running OS and even let's say another cpu for processing IRQs.  That's it.  All tasks on CPU 0 are kernel tasks, all tasks on CPU 1 are IRQ handling taska, and user programs are relegated to CPU 2+.

Wouldn't this completely eliminate any latency of system calls and IRQs?  Has this already been done?  Would performance gains be better this way or just having all tasks distributed equally among all available CPUs?

Name: Anonymous 2006-09-02 5:07

Wouldn't this completely eliminate any latency of system calls and IRQs?
No.

If you have more processes than CPUs, you'll still have a context switch on at least some of the CPUs.

If you have less processes than CPUs, you'll be running everything concurrently, except when a process needs IO, in which case you have a one producer/many consumer problem with the OS running on one CPU.

And of course, this entirely ignores that CPUs have hardware interrupts. Without an OS on every CPU, who is going to deal with these? The programs? Not a good idea.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List