1. Describe why interrupts are not appropriate for implementing synchronization primitive in multiprocessor systems and why spinlocks are not appropriate for single-processor systems yet are often used in multiprocessor systems.
2. Mutual exclusion primitives can be implemented with busy waiting or with blocking. Explain the applicability and relative merits of each approach.
3. Write psedocode for Semaphore operation wait() and signal() implemented using block waiting.