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.