In the microkernel architecture, we split the kernel up into smaller pieces:

This means moving more things out of the kernel such as:
- device drivers
- file and network abstractions
- paging
to server processes, but this introduces inter-process communication overhead, and much more crossing of protection boundaries.