User mode and System mode. As far as scalability goes the user mode presents no real problems - each process has its own virtual environment and individual processes will happily run concurrently on different CPUs. The problem comes in making the kernel itself scalable. This means that the kernel must be capable of doing many things at the same time. An SMP kernel is inherently more complicated to design and work on.
Scalability is reasonable.
Kernel 2.4 will continue the evolution, providing a kernel which has finer grained locks, is highly threaded and uses other techniques to allow CPUs to be doing something useful at all times. The dangers of scalability Scalability isn't necessarily a completely good thing however. The additional locking code also adds more overhead. The danger is that the pursuit of scalability will result in a kernel which performs more slowly on a uniprocessor system. Currently, the vast majority of systems are low end uniprocessor machines - only a very very very few are systems with 100s of CPUs.