https://en.wikipedia.org/wiki/Monolithic_kernel
A microkernel has a much more limited scope, sometimes just the ability to pass messages or data between processes, and may exclude most of the functionality to talk to hardware. The microkernel program space is separated from user space, process space and driver space. Dumb kernel; smart programs.
But there usually is a clear distinction between such 'kernel processes' and user applications, they also tend to be run at a slightly higher priority to ensure that the system keeps moving.
In practice (feel free to verify this yourself by downloading and building the latest L4 derivative), microkernels that actually work on modern hardware need a huge amount of baseline code to get IPC and memory server working in a distributed yet somewhat performant fashion.
There is a flag for compiling Linux without any hardware and filesystem drivers. That gives you the kernel core in a surprising small binary which is not that far from sel4 or okl4.
In summary, monolithic is the new microkernel :)