Kernel mode
In the kernel mode, the executing code has complete and unrestricted access to the underlying hardware. It can execute any CPU instruction and reference any memory address.Kernel mode is generally reserved for the lowest level, most trusted function of operating system.
User mode
In user mode, the executing code has no ability to directly access hardware or reference memory. Code running in user mode must delegate to system API to access hardware or memory.Due to protection afforded by this sort of isolation crashes in user mode are always recoverable.