What is meant by a single-threaded kernel?
I will be adding to nir shahar's answer.
A single-threaded kernel is essentially a kernel that processes only one thread at a time. We can have multiple kernel threads, but only one can get executed at any given point in time. This can be achieved by some scheduling procedure on the kernel threads.
But is this the same thing as having only one kernel thread (and using the many-to-one model) as even multiple threads have to be executed sequentially?
NO! A blocking call made on a many-to-one model blocks all other processes mapped to that kernel thread. Having a one-to-one model will allow for other processes to run even if one process executes a blocking call.
This does come at a cost. The overheads of creating and managing multiple kernel threads are somewhat expensive, but it all depends on your usage.