Conceptually, both represent the same data structure: a stack.
The reason that there are two different stacks for a thread is because in user mode, the code should not allow the kernel memory to be corrupted. When switching to kernel mode to access addresses, and so on, another stack in memory is used, available only in kernel mode.
, (), ; , !
, / ( ) , .