Symmetric multiprocessing is a design technique for hardware. It refers to each processor seeing basically the same machine, with no particular "master" processor at the hardware level (the technical definition has classically been on access to I/O devices) and the main memory banks being available from all CPUs. "Symmetric" refers to all of the CPUs having equal access. The alternative is/was NUMA
(non-uniform memory access) or "simple MP" (where side processors are dedicated to I/O, and the main CPU hasn't got the same access. See e.g. dedicated RAID cards.)
To debunk the one post left here after all the others were deleted: SMP is a hardware level concept, and is not decided by operating systems. There is a lot of work for operating systems to exploit SMP, but the system is an SMP system even if the OS does not exploit it. It is not quite necessary to run an identical copy of the OS on each SMP processor, but in practice this is usually done. It is considered necessary for the hardware to be booted by the same OS (ie, all CPUs start out under the control of the same OS), though. SMP is generally used to improve throughput for compute intensive tasks that can be parallelized; this is far from all tasks, and the extra overhead introduced by CPU coordination can often slow down tasks. The common SMP configurations will decrease reliability. It is possible to use it to increase reliability by effectively turning a single machine into a cluster; I believe e.g. Oracle running on Solaris on Sun hardware can do this, and CPUs can be hot-plugged. Common PC hardware cannot, and the normal solution for higher availability is clustering.