: The book details how to move beyond "Master/Slave" architectures (where only one CPU handles kernel tasks) to a truly symmetric model. This involves implementing mutual exclusion mechanisms like spinlocks , semaphores , and mutexes .
By the mid-1990s, the "modern architectures" mentioned in the title—such as the Intel Pentium, MIPS R4000, and SPARC—were moving away from simple single-processor designs. For UNIX to remain efficient, kernel developers had to solve two massive problems: unix systems for modern architectures -1994- pdf
In a uniprocessor system, the kernel is non-preemptive. When a process enters the kernel mode (to write to a file or allocate memory), it cannot be interrupted by another process until it leaves the kernel mode. The CPU is essentially "locked" for that task. : The book details how to move beyond
Old UNIX ran all device interrupts on the single CPU. On SMP, interrupt routing is critical. Modern architectures (PCI-based Intel MP spec 1.1, SGI's IRIX, Sun's SBus) support interrupt vectors that can be directed to any CPU. For UNIX to remain efficient, kernel developers had
Old UNIX schedulers (like the BSD 4.3 scheduler) bounced processes between CPUs to keep load balanced. In 1994, the PDF argued this was insane. On NUMA machines, moving a process from CPU 1 to CPU 8 meant losing L1 and L2 cache residency. The proposed fix: and load balancing intervals measured in milliseconds, not ticks.