User space and kernel space

The term user space (or userland) refers to all code that runs outside the operating system's kernel.

This is the basis for memory protection in today's mainstream operating systems, and a building block for privilege separation.

Programs can also request shared memory regions with other processes, although other techniques are also available to allow inter-process communication.

Another approach taken in experimental operating systems is to have a single address space for all software, and rely on a programming language's semantics to make sure that arbitrary memory cannot be accessed – applications cannot acquire any references to the objects that they are not allowed to access.

[4][5] This approach has been implemented in JXOS, Unununium as well as Microsoft's Singularity research project.