A Brief Explanation of Kernel Space and User Space
Within the Linux kernel, knowing how memory is separated is extremely important. As knowing what programs reside where, and the requirement on the system to move memory from one place to another, can provide a huge insight into the performance, or lack of, within a system. And when it comes to the world of networking (i.e NFV), where we need to move packets through a system, having this knowledge is even more important.
Memory is divided into 2 areas, known as kernel space and user space (synonymous to the terms - kernel and user mode).
- Kernel Space - Executing code has unrestricted access to any of the memory address space and to any underlying hardware. It is reserved for the highest of trusted functions within a system. Kernel mode is generally reserved for the lowest-level, most trusted functions of the operating system. Due to the amount of access the kernel had, any instability within the kernels executing code can result in complete system failure.
- User Space - Executing code has limited access. API calls are used to the kernel to request memory and physical hardware access. Because of the restricted access, malfunctions within user mode are limited only to the system space they are operating within.