The term
user space (or
userland) refers to all code that runs outside the operating system's kernel. User space usually refers to the various programs and
libraries that the operating system uses to interact with the kernel: software that performs
input/output, manipulates
file system objects,
application software, etc. Each user space
process usually runs in its own
virtual memory space, and, unless explicitly allowed, cannot access the memory of other processes. This is the basis for
memory protection in today's mainstream operating systems, and a building block for
privilege separation. A separate user mode can also be used to build efficient virtual machines – see
Popek and Goldberg's virtualization requirements. With enough privileges, processes can request the kernel to map part of another process's memory space to their own, as is the case for
debuggers. Programs can also request
shared memory regions with other processes, although other techniques are also available to allow
inter-process communication. == Implementation ==