I understand new linux kernel allow kernel space threads to be pre-empted.
Can someone briefly explain how pre-empting works when executing in kernel mode?
So, when a system call is made, a software interrupt will switch the thread into kernel mode and it will run whats necessary.
Now, lets say its time slice is up - and another user thread runs and it also wants to execute in kernel space.
Userland address space is well documented, which includes segments like heap, stack, .text, .bss, etc. But there is not enough documentation on kernel address space. Since certain virtual address is used in kernel space, I am wondering how kernel space is structured?