This document discusses parallel processing and computer architecture. It begins by using the analogy of making sandwiches to explain the difference between sequential and parallel processing. Parallel processing allows multiple tasks to be performed simultaneously using multiple processors. The document then discusses different types of parallel processor systems like SISD, SIMD, MISD, and MIMD. It also covers considerations for multiprocessor operating system design, symmetric multiprocessor systems, bus organization, cache coherence issues, and solutions to cache coherence problems like directory and snoopy protocols.