In practice, many operating systems do not limit the number of threads that execute kernel-level code. In fact, this limitation would seriously limit kernel scalability. Without this limitation, multiple kernel stacks are required.
In addition, in practice, operating systems can allow the suspension and migration of threads that are currently running in kernel mode, which again links the kernel stack to the thread, and not to the processor.
If you are developing an operating system that does not have these functions and instead limits kernel-level execution to a single thread, then only one stack will be needed.
Brian source share