If the upcall almost always triggers the same downcall, the downcall can be replaced by either extra arguments to the upcall or another special upcall. OS and Architecture Memory Memory subsystem is not improving as fast as CPU speed. Caching becomes disproportionally more important. Checksum processing for network packets becomes relatively slower. Memory and Monolithic vs. Microkernel Microkernel OSs execute more non-idle instructions than monolithic systems.
Deterministic mapping is bad for a direct-mapped cache unless program reordering tools are used.
The performance of system calls, interrupt handling, data copying, and context switching are not improving quickly, because the memory subsystem is not keeping up. The hardware optimizes for long sequences of intructions and lots of CPU state. Have one queue per resource. Process 1 is at the head of the queue, using resource A, but is waiting for resource B to be freed up. Process 2 is in the queue behind 1, holding resource B, and waiting to get to the head of the queue.