What is symmetric processing?
>From Rand S. Huntzinger (firstname.lastname@example.org)
Basically what symmetrical multi-processing means is that all tasks on the
system can be handled by any of the processors. This is as opposed to a
master-slave system where the master processor does all of the I/O for the
system and the slave processors can do anything else. In the master-slave
model, a process running on a slave processor has to do a context switch to
get onto the master processor in order to do the I/O - and this is the
bottleneck. The advantage of master-slave is that it is easier to implement.
Symmetrical multi-processing requires lots of locks in the kernel to keep
the processors from trashing each others data.
>From Guy Harris (email@example.com)
Solaris 2.1 allows more than one processor to be running in the kernel
at a time - i.e., instead of having a big lock around the kernel,
allowing only one processor in, it has several smaller locks around
various kernel data structures (the locks keep one processor from
doing things to a data structure at the same time another processor is
doing so; if those locks weren't there, the data structures could be
>From Christian Lawrence (firstname.lastname@example.org)
Solaris 1.1 employs pseudo-symmetric MP. That is, any CPU can enter
priviledged mode (e.g. network/disk I/O) but only one CPU at a time
is allowed to do so. The other processors can still work on processes
at the user level but as soon as they trap to the kernel they have to
wait there turn.
Solaris 2.1 employs true symmetric MP whereby multiple CPUs share
a single view of the virtual address space and can simultaneously
perform any task with the usual restrictions (e.g. 2 proc's on
2 CPUs can do disk I/O's to different disks together but not to the
same disk (as one must block)). The affect is that the system can
process more jobs per unit time and handle more I/O per unit time
but note that a given program will not run any faster -- you can just
run more of them.
>From Bert Robbins (email@example.com)
When a process is loaded into a CPU it must always use that CPU
even after it is swapped out and swapped back in.
A process is not dependent upon any single CPU. It can be loaded
on one and swapped out then swapped back into another CPU and will
continue executing on that new CPU.
Also, one more thing. Sun is just now beginning to sell a user level
multi-thread library for user level applications to use. This would provide
the user application the ability to be truly multi-threaded.
These should provide you with a fairly detailed introduction to SMP and
Also, there is an interesting article about the 600 series hardware in:
This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:07:31 CDT