Use interrupt disabling for synchronization. Bottom halves all implemented by a single thread. Interrupt threads execute at higher priority than the server. User processes are L4 tasks. Linux server is the pager for these tasks.
System calls are IPCs between user task and the server.
Signals implemented by separate thread in each user-process. Performance Nicely designed experiments to show different things. Overall we see that while you can observe that the microkernel introduces overhead in microbenchmarks, as you do more macrobenchmarks, we see that it has less of an impact. Compatibility Looked at getpid to look at pure system call overhead. Next used lmbench and hbench to look at a variety of primitives.