Không gian người dùng
Tổng quan

Thuật ngữ userland (hay user space hoặc không gian người dùng)đề cập đến tất cả các mã chạy bên ngoài kernel của hệ điều hành. Userland thường đề cập đến các chương trình và thư viện khác nhau mà hệ điều hành sử dụng để tương tác với kernel: phần mềm thực hiện đầu vào/đầu ra, thao tác với các đối tượng hệ thống file, phần mềm ứng dụng, v.v.
Mỗi tiến trình user space thường chạy trong không gian bộ nhớ ảo của riêng mình và, trừ khi được cho phép rõ ràng, không thể truy cập vào bộ nhớ của các tiến trình khác. Đây là cơ sở để bảo vệ bộ nhớ trong các hệ điều hành chính hiện nay và một block được xây dựng để phân tách đặc quyền. Một chế độ người dùng riêng biệt cũng có thể được sử dụng để xây dựng các máy ảo hiệu quả - xem các yêu cầu ảo hóa Popek và Goldberg. Với đủ đặc quyền, các quy trình có thể yêu cầu kernel ánh xạ một phần không gian bộ nhớ của quy trình khác sang chính nó, như trường hợp của trình gỡ lỗi. Các chương trình cũng có thể yêu cầu các vùng bộ nhớ dùng chung với các quy trình khác, mặc dù các kỹ thuật khác cũng có sẵn để cho phép giao tiếp giữa các tiến trình.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| --- | --- | --- | --- | --- | --- | --- |
| User mode | Ứng dụng người dùng | Ví dụ, bash, LibreOffice, GIMP, Blender, 0 A.D., Mozilla Firefox, v.v. | Ví dụ, bash, LibreOffice, GIMP, Blender, 0 A.D., Mozilla Firefox, v.v. | Ví dụ, bash, LibreOffice, GIMP, Blender, 0 A.D., Mozilla Firefox, v.v. | Ví dụ, bash, LibreOffice, GIMP, Blender, 0 A.D., Mozilla Firefox, v.v. | Ví dụ, bash, LibreOffice, GIMP, Blender, 0 A.D., Mozilla Firefox, v.v. |
| User mode | Các thành phần hệ thống | Các daemons hệ thống: systemd, runit, logind, networkd, PulseAudio, ... | Hệ thống cửa sổ: X11, Wayland, SurfaceFlinger (Android) | Đồ hoạ: Mesa, AMD Catalyst, ... | Thư viện khác: GTK+, Qt, EFL, SDL, SFML, FLTK, GNUstep, v.v. | Thư viện khác: GTK+, Qt, EFL, SDL, SFML, FLTK, GNUstep, v.v. |
| User mode | Thư viện chuẩn C | open(), exec(), sbrk(), socket(), fopen(), calloc(), ... (lên đến 2000 chương trình con) glibc nhắm tới tốc độ, musl và uClibc nhắm đến hệ thống nhúng, bionic được viết cho Android, v.v. Tất cả đều hướng đến việc tương thích với POSIX/SUS. | open(), exec(), sbrk(), socket(), fopen(), calloc(), ... (lên đến 2000 chương trình con) glibc nhắm tới tốc độ, musl và uClibc nhắm đến hệ thống nhúng, bionic được viết cho Android, v.v. Tất cả đều hướng đến việc tương thích với POSIX/SUS. | open(), exec(), sbrk(), socket(), fopen(), calloc(), ... (lên đến 2000 chương trình con) glibc nhắm tới tốc độ, musl và uClibc nhắm đến hệ thống nhúng, bionic được viết cho Android, v.v. Tất cả đều hướng đến việc tương thích với POSIX/SUS. | open(), exec(), sbrk(), socket(), fopen(), calloc(), ... (lên đến 2000 chương trình con) glibc nhắm tới tốc độ, musl và uClibc nhắm đến hệ thống nhúng, bionic được viết cho Android, v.v. Tất cả đều hướng đến việc tương thích với POSIX/SUS. | open(), exec(), sbrk(), socket(), fopen(), calloc(), ... (lên đến 2000 chương trình con) glibc nhắm tới tốc độ, musl và uClibc nhắm đến hệ thống nhúng, bionic được viết cho Android, v.v. Tất cả đều hướng đến việc tương thích với POSIX/SUS. |
| Kernel mode | Nhân Linux | stat, splice, dup, read, open, ioctl, write, mmap, close, exit, v.v. (có khoảng 380 lời gọi hệ thống) Nhân Linux System Call Interface (SCI, nhắm đến việc tương thích với POSIX/SUS) | stat, splice, dup, read, open, ioctl, write, mmap, close, exit, v.v. (có khoảng 380 lời gọi hệ thống) Nhân Linux System Call Interface (SCI, nhắm đến việc tương thích với POSIX/SUS) | stat, splice, dup, read, open, ioctl, write, mmap, close, exit, v.v. (có khoảng 380 lời gọi hệ thống) Nhân Linux System Call Interface (SCI, nhắm đến việc tương thích với POSIX/SUS) | stat, splice, dup, read, open, ioctl, write, mmap, close, exit, v.v. (có khoảng 380 lời gọi hệ thống) Nhân Linux System Call Interface (SCI, nhắm đến việc tương thích với POSIX/SUS) | stat, splice, dup, read, open, ioctl, write, mmap, close, exit, v.v. (có khoảng 380 lời gọi hệ thống) Nhân Linux System Call Interface (SCI, nhắm đến việc tương thích với POSIX/SUS) |
| Kernel mode | Nhân Linux | Hệ thống con Lập lịch cho các tiến trình | Hệ thống con Giao tiếp giữa các tiến trình | Hệ thống con Quản lý bộ nhớ | Hệ thống con Hệ thống file ảo | Hệ thống con Mạng |
| Kernel mode | Nhân Linux | Các thành phần khác: ALSA, DRI, evdev, LVM, device mapper, Linux Network Scheduler, Netfilter Các môdun bảo mật: SELinux, TOMOYO, AppArmor, Smack | Các thành phần khác: ALSA, DRI, evdev, LVM, device mapper, Linux Network Scheduler, Netfilter Các môdun bảo mật: SELinux, TOMOYO, AppArmor, Smack | Các thành phần khác: ALSA, DRI, evdev, LVM, device mapper, Linux Network Scheduler, Netfilter Các môdun bảo mật: SELinux, TOMOYO, AppArmor, Smack | Các thành phần khác: ALSA, DRI, evdev, LVM, device mapper, Linux Network Scheduler, Netfilter Các môdun bảo mật: SELinux, TOMOYO, AppArmor, Smack | Các thành phần khác: ALSA, DRI, evdev, LVM, device mapper, Linux Network Scheduler, Netfilter Các môdun bảo mật: SELinux, TOMOYO, AppArmor, Smack |
Phần cứng (CPU, bộ nhớ chính, thiết bị lưu trữ dữ liệu, v.v)