Jump to content
Wikipedia The Free Encyclopedia

User space and kernel space

From Wikipedia, the free encyclopedia
(Redirected from Kernel-space)
Way of using computer memory
"Kernel space" and "User space" redirect here. For the mathematical definition, see Null space. For the user space on Wikipedia, see Wikipedia:User pages.
This article needs additional citations for verification . Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.
Find sources: "User space and kernel space" – news · newspapers · books · scholar · JSTOR
(October 2012) (Learn how and when to remove this message)

A modern computer operating system usually uses virtual memory to provide separate address spaces or regions of a single address space, called user space and kernel space.[1] [a] This separation primarily provides memory protection and hardware protection from malicious or errant software behaviour.

Kernel space is strictly reserved for running a privileged operating system kernel, kernel extensions, and most device drivers. In contrast, user space is the memory area where application software, daemons, and some drivers execute, typically with one address space per process.

Overview

[edit ]

The term user space (or userland) refers to all code that runs outside the operating system's kernel.[2] 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.

Various layers within Linux, also showing separation between the userland and kernel space
User mode User applications bash, LibreOffice, GIMP, Blender, 0 A.D., Mozilla Firefox, ...
System components init daemon :
OpenRC, runit, systemd...
System daemons :
polkitd, smbd, sshd, udevd...
Windowing system :
X11, Wayland, SurfaceFlinger (Android)
Graphics:
Mesa , AMD Catalyst, ...
Other libraries:
GTK, Qt, EFL, SDL, SFML, FLTK, GNUstep, ...
C standard library fopen , execv , malloc , memcpy , localtime , pthread_create ... (up to 2000 subroutines)
glibc aims to be fast, musl aims to be lightweight, uClibc targets embedded systems, bionic was written for Android, etc. All aim to be POSIX/SUS-compatible.
Kernel mode Linux kernel stat , splice , dup , read , open , ioctl , write , mmap , close , exit , etc. (about 380 system calls)
The Linux kernel System Call Interface (SCI), aims to be POSIX/SUS-compatible[3]
Process scheduling subsystem IPC subsystem Memory management subsystem Virtual files subsystem Networking subsystem
Other components: ALSA, DRI, evdev, klibc, LVM, device mapper, Linux Network Scheduler, Netfilter
Linux Security Modules: SELinux , TOMOYO , AppArmor , Smack
Hardware (CPU, main memory, data storage devices, etc.)

Implementation

[edit ]

The most common way of implementing a user mode separate from kernel mode involves operating system protection rings. Protection rings, in turn, are implemented using CPU modes. Typically, kernel space programs run in kernel mode, also called supervisor mode; standard applications in user space run in user mode.

Some operating systems are single address space operating systems—with a single address space for all user-mode code. (The kernel-mode code may be in the same address space, or it may be in a second address space). Other operating systems have per-process address spaces, with a separate address space for each user-mode process.

See also

[edit ]

Notes

[edit ]
  1. ^ Older operating systems, such as DOS and Windows 3.1x, do not use this architecture.

References

[edit ]
  1. ^ "Address space". Address space options for 32bit systems.
  2. ^ "userland, n." The Jargon File . Eric S. Raymond. Archived from the original on 2017年07月18日. Retrieved 2016年08月14日.
  3. ^ "Admin Guide README". Kernel.org git repositories.
[edit ]
General
Variants
Kernel
Architectures
Components
Process management
Concepts
Scheduling
algorithms
Memory management,
resource protection
Storage access,
file systems
Supporting concepts

AltStyle によって変換されたページ (->オリジナル) /