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.