Microkernel communication cost (source code)

= Microkernel communication cost

For the <microkernel file-read example>, distinguish <system call> entry/exit, <security capability> lookup, payload transfer, <process scheduling> and <context switches> from the service's actual <file> lookup and read work. Entering a privileged <processor privilege level> and switching to a different <address space> are different events. A change of <address space> can affect the <translation lookaside buffer>; running different code and touching different <computer memory> can cause <cache misses>. Neither event implies that every <translation lookaside buffer> entry or <cache line> must be discarded.

A larger copied payload requires more transfer work; sharing <memory pages> can avoid copying that bulk data but introduces mapping and <synchronization> work. A service that requests another service adds another <IPC> exchange. If the cached <file> data were absent, communication with a <device driver> and the <input-output> wait would also matter. Blocking behind other requests affects observed response time even when the individual <IPC> operations are cheap.

These are cost sources, not timings or a universal ranking against a <monolithic kernel>. Implementation and <CPU> details matter: the construction analysis separates protected entry costs, <address space> switching, <translation lookaside buffer> effects and <memory cache> effects. <On micro-kernel construction by Jochen Liedtke>[Liedtke, On micro-kernel construction, section 4.1, pp. 241–244: kernel-user switches, address-space switches, and discussion of hardware-dependent cache and TLB effects]{ref}